Files
BaronSSO/baron-sso/userfront/test/consent_error_routing_test.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='));
});
}