forked from baron/baron-sso
65 lines
2.1 KiB
Dart
65 lines
2.1 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:userfront/features/auth/presentation/error_screen.dart';
|
|
|
|
Future<void> _pumpErrorScreen(
|
|
WidgetTester tester, {
|
|
String? errorCode,
|
|
String? description,
|
|
bool? isProdOverride,
|
|
}) async {
|
|
await tester.pumpWidget(
|
|
MaterialApp(
|
|
home: ErrorScreen(
|
|
errorCode: errorCode,
|
|
description: description,
|
|
isProdOverride: isProdOverride,
|
|
),
|
|
),
|
|
);
|
|
await tester.pump();
|
|
}
|
|
|
|
void main() {
|
|
testWidgets('개발환경은 원문 메시지를 노출한다', (WidgetTester tester) async {
|
|
await _pumpErrorScreen(
|
|
tester,
|
|
errorCode: 'custom_error',
|
|
description: '원문 메시지',
|
|
isProdOverride: false,
|
|
);
|
|
|
|
expect(find.text('오류: custom_error'), findsOneWidget);
|
|
expect(find.text('원문 메시지'), findsOneWidget);
|
|
expect(find.text('오류 종류: custom_error'), findsOneWidget);
|
|
});
|
|
|
|
testWidgets('프로덕션은 whitelist 메시지를 노출한다', (WidgetTester tester) async {
|
|
await _pumpErrorScreen(
|
|
tester,
|
|
errorCode: 'settings_disabled',
|
|
description: '원문 메시지',
|
|
isProdOverride: true,
|
|
);
|
|
|
|
expect(find.text('인증 과정에서 오류가 발생했습니다'), findsOneWidget);
|
|
expect(find.text('현재 계정 설정 화면은 준비 중입니다.'), findsOneWidget);
|
|
expect(find.text('원문 메시지'), findsNothing);
|
|
expect(find.text('오류 종류: settings_disabled'), findsOneWidget);
|
|
});
|
|
|
|
testWidgets('프로덕션은 비허용 에러를 unknown_error로 처리한다', (WidgetTester tester) async {
|
|
await _pumpErrorScreen(
|
|
tester,
|
|
errorCode: 'weird_error',
|
|
description: '원문 메시지',
|
|
isProdOverride: true,
|
|
);
|
|
|
|
expect(find.text('인증 과정에서 오류가 발생했습니다'), findsOneWidget);
|
|
expect(find.text('에러가 계속되면 관리자에게 문의해주세요'), findsOneWidget);
|
|
expect(find.text('원문 메시지'), findsNothing);
|
|
expect(find.text('오류 종류: unknown_error'), findsOneWidget);
|
|
});
|
|
}
|