로그아웃 SDK 대기 제거 · 온보딩 국가 시트 · 프로필 머리줄
This commit is contained in:
@@ -228,7 +228,32 @@ void main() {
|
||||
releaseMode: true,
|
||||
);
|
||||
|
||||
await expectLater(auth.signOut(), throwsA(isA<StateError>()));
|
||||
// SDK 로그아웃 실패는 로그만 남기고 호출자에게 던지지 않는다(처리되지 않은 예외 방지).
|
||||
await auth.signOut();
|
||||
|
||||
expect(auth.isSignedIn, isFalse);
|
||||
expect(provider.signOutCalls, 1);
|
||||
expect(session.signOutCalls, 1);
|
||||
auth.dispose();
|
||||
await session.close();
|
||||
});
|
||||
|
||||
test('SDK 로그아웃이 응답 없이 멈춰도 기다리지 않는다', () async {
|
||||
final provider = _FakeProvider(
|
||||
SocialProvider.google,
|
||||
result: const AuthCancelled(),
|
||||
signOutHangs: true,
|
||||
);
|
||||
final session = _FakeSession(
|
||||
const AuthAccount(uid: 'google-user', provider: SocialProvider.google),
|
||||
);
|
||||
final auth = AuthRepository(
|
||||
providers: [provider],
|
||||
session: session,
|
||||
releaseMode: true,
|
||||
);
|
||||
|
||||
await auth.signOut().timeout(const Duration(milliseconds: 100));
|
||||
|
||||
expect(auth.isSignedIn, isFalse);
|
||||
expect(provider.signOutCalls, 1);
|
||||
@@ -245,6 +270,7 @@ final class _FakeProvider implements SocialAuthProvider {
|
||||
this.result,
|
||||
this.signInError,
|
||||
this.signOutError,
|
||||
this.signOutHangs = false,
|
||||
});
|
||||
|
||||
@override
|
||||
@@ -252,6 +278,7 @@ final class _FakeProvider implements SocialAuthProvider {
|
||||
final AuthOutcome? result;
|
||||
final Object? signInError;
|
||||
final Object? signOutError;
|
||||
final bool signOutHangs;
|
||||
int signOutCalls = 0;
|
||||
|
||||
@override
|
||||
@@ -269,6 +296,7 @@ final class _FakeProvider implements SocialAuthProvider {
|
||||
@override
|
||||
Future<void> signOut() async {
|
||||
signOutCalls += 1;
|
||||
if (signOutHangs) return Completer<void>().future;
|
||||
if (signOutError case final error?) throw error;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user