42 lines
1.7 KiB
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);
|
|
});
|
|
}
|