forked from baron/baron-sso
OIDC로 빠지는 분기 점검 login_challenge 복구 fallback 추가
This commit is contained in:
69
userfront/test/login_challenge_resolver_test.dart
Normal file
69
userfront/test/login_challenge_resolver_test.dart
Normal file
@@ -0,0 +1,69 @@
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:userfront/features/auth/domain/login_challenge_resolver.dart';
|
||||
|
||||
void main() {
|
||||
group('login_challenge_resolver', () {
|
||||
test('widget 값이 있으면 최우선으로 사용', () {
|
||||
final resolved = resolveLoginChallenge(
|
||||
widgetLoginChallenge: 'widget-challenge',
|
||||
uri: Uri.parse('/ko/login'),
|
||||
rawSearch: '?login_challenge=raw-search',
|
||||
rawHref: 'https://sso-test.hmac.kr/ko/login?login_challenge=raw-href',
|
||||
);
|
||||
|
||||
expect(resolved.value, 'widget-challenge');
|
||||
expect(resolved.source, LoginChallengeSource.widget);
|
||||
});
|
||||
|
||||
test('widget 값이 없으면 URI query에서 복구', () {
|
||||
final resolved = resolveLoginChallenge(
|
||||
widgetLoginChallenge: null,
|
||||
uri: Uri.parse('/ko/login?login_challenge=uri-query'),
|
||||
rawSearch: '',
|
||||
rawHref: '',
|
||||
);
|
||||
|
||||
expect(resolved.value, 'uri-query');
|
||||
expect(resolved.source, LoginChallengeSource.uriQuery);
|
||||
});
|
||||
|
||||
test('URI query가 비어 있으면 raw search에서 복구', () {
|
||||
final resolved = resolveLoginChallenge(
|
||||
widgetLoginChallenge: null,
|
||||
uri: Uri.parse('/ko/login'),
|
||||
rawSearch: '?login_challenge=raw-search-value&x=1',
|
||||
rawHref: '',
|
||||
);
|
||||
|
||||
expect(resolved.value, 'raw-search-value');
|
||||
expect(resolved.source, LoginChallengeSource.rawSearch);
|
||||
expect(resolved.rawSearchHasLoginChallenge, isTrue);
|
||||
});
|
||||
|
||||
test('raw search도 비어 있으면 raw href에서 복구', () {
|
||||
final resolved = resolveLoginChallenge(
|
||||
widgetLoginChallenge: null,
|
||||
uri: Uri.parse('/ko/login'),
|
||||
rawSearch: '',
|
||||
rawHref:
|
||||
'https://sso-test.hmac.kr/ko/login?a=1&login_challenge=raw-href-value#fragment',
|
||||
);
|
||||
|
||||
expect(resolved.value, 'raw-href-value');
|
||||
expect(resolved.source, LoginChallengeSource.rawHref);
|
||||
expect(resolved.rawHrefHasLoginChallenge, isTrue);
|
||||
});
|
||||
|
||||
test('값이 전부 없으면 missing', () {
|
||||
final resolved = resolveLoginChallenge(
|
||||
widgetLoginChallenge: null,
|
||||
uri: Uri.parse('/ko/login'),
|
||||
rawSearch: '',
|
||||
rawHref: 'https://sso-test.hmac.kr/ko/login?x=1',
|
||||
);
|
||||
|
||||
expect(resolved.value, isNull);
|
||||
expect(resolved.source, LoginChallengeSource.missing);
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user