forked from baron/baron-sso
53 lines
1.6 KiB
Dart
53 lines
1.6 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:userfront/core/services/auth_proxy_service.dart';
|
|
import 'package:userfront/features/auth/domain/consent_error_routing.dart';
|
|
|
|
void main() {
|
|
test('tenant_not_allowed consent error routes to dedicated error screen', () {
|
|
const error = AuthProxyException(
|
|
errorCode: 'tenant_not_allowed',
|
|
message: '허용되지 않은 테넌트입니다.',
|
|
);
|
|
|
|
expect(shouldRouteConsentErrorToErrorScreen(error), isTrue);
|
|
});
|
|
|
|
test('generic consent error stays on consent screen', () {
|
|
const error = AuthProxyException(
|
|
errorCode: 'forbidden',
|
|
message: '동의 정보를 가져오지 못했습니다.',
|
|
);
|
|
|
|
expect(shouldRouteConsentErrorToErrorScreen(error), isFalse);
|
|
});
|
|
|
|
test('tenant_not_allowed auth error also routes to error screen', () {
|
|
const error = AuthProxyException(
|
|
errorCode: 'tenant_not_allowed',
|
|
message: '허용되지 않은 테넌트입니다.',
|
|
);
|
|
|
|
expect(shouldRouteTenantAccessErrorToErrorScreen(error), isTrue);
|
|
});
|
|
|
|
test('buildTenantAccessErrorPath builds userfront error route', () {
|
|
const error = AuthProxyException(
|
|
errorCode: 'tenant_not_allowed',
|
|
message: '허용되지 않은 테넌트입니다.',
|
|
details: {
|
|
'allowed_tenants': ['tenant-a'],
|
|
},
|
|
);
|
|
|
|
final target = buildTenantAccessErrorPath(
|
|
error,
|
|
Uri.parse('https://sso-test.hmac.kr/ko?login_challenge=abc'),
|
|
);
|
|
|
|
expect(target, contains('/error?'));
|
|
expect(target, contains('error=tenant_not_allowed'));
|
|
expect(target, contains('error_description='));
|
|
expect(target, contains('details='));
|
|
});
|
|
}
|