forked from baron/baron-sso
48 lines
1.4 KiB
Dart
48 lines
1.4 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:userfront/features/auth/domain/password_login_flow_policy.dart';
|
|
|
|
void main() {
|
|
group('password_login_flow_policy', () {
|
|
test('redirectTo가 있으면 OIDC redirect를 우선한다', () {
|
|
final action = decidePasswordLoginNextAction(
|
|
hasLoginChallenge: true,
|
|
redirectTo:
|
|
'https://sso.example.test/oidc/oauth2/auth?login_verifier=a',
|
|
jwt: 'jwt-token',
|
|
);
|
|
|
|
expect(action, PasswordLoginNextAction.redirectToOidc);
|
|
});
|
|
|
|
test('OIDC challenge가 있고 redirectTo가 없으면 accept를 시도한다', () {
|
|
final action = decidePasswordLoginNextAction(
|
|
hasLoginChallenge: true,
|
|
redirectTo: null,
|
|
jwt: 'jwt-token',
|
|
);
|
|
|
|
expect(action, PasswordLoginNextAction.acceptOidc);
|
|
});
|
|
|
|
test('OIDC challenge가 없고 jwt가 있으면 로컬 로그인 완료로 진행한다', () {
|
|
final action = decidePasswordLoginNextAction(
|
|
hasLoginChallenge: false,
|
|
redirectTo: null,
|
|
jwt: 'jwt-token',
|
|
);
|
|
|
|
expect(action, PasswordLoginNextAction.localLogin);
|
|
});
|
|
|
|
test('redirectTo/jwt 모두 없으면 invalid로 처리한다', () {
|
|
final action = decidePasswordLoginNextAction(
|
|
hasLoginChallenge: false,
|
|
redirectTo: null,
|
|
jwt: null,
|
|
);
|
|
|
|
expect(action, PasswordLoginNextAction.invalid);
|
|
});
|
|
});
|
|
}
|