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 requestCode() async => start; @override Future 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); }); }