frindlymap/test/verify_service_test.dart

42 lines
1.7 KiB
Dart

import 'package:flutter_test/flutter_test.dart';
import 'package:friendly_map/modules/core/core.dart';
import 'package:friendly_map/modules/transport/transport.dart';
import 'support/app_device.dart';
class FakeVerifier implements PhoneVerifier {
VerifyStart start = VerifyStart.sent;
String code = '123456';
@override
Future<VerifyStart> requestCode() async => start;
@override
Future<bool> confirm(String c) async => c == code;
}
void main() {
test('확인 수단이 없으면 쓸 수 없음', () async {
final d = await AppDevice.create(MemoryHub(), '010-1111-2222', '+821011112222', '가');
expect(d.app.verify.available, false);
expect(await d.app.verify.request(), VerifyStart.unavailable);
expect(await d.app.verify.confirm('123456'), false);
expect(await d.app.verify.isVerified(), false);
});
test('틀린 번호는 확인되지 않고, 맞는 번호를 넣으면 확인됨으로 남는다', () async {
final v = FakeVerifier();
final d = await AppDevice.create(MemoryHub(), '010-1111-2222', '+821011112222', '가', verifier: v);
expect(d.app.verify.available, true);
expect(await d.app.verify.request(), VerifyStart.sent);
expect(await d.app.verify.confirm('000000'), false);
expect(await d.app.verify.isVerified(), false);
expect(await d.app.verify.confirm('123456'), true);
expect(await d.app.verify.isVerified(), true);
});
test('요청 결과(너무 자주 등)를 그대로 알린다', () async {
final v = FakeVerifier()..start = VerifyStart.rateLimited;
final d = await AppDevice.create(MemoryHub(), '010-1111-2222', '+821011112222', '가', verifier: v);
expect(await d.app.verify.request(), VerifyStart.rateLimited);
});
}