60 lines
2.0 KiB
Dart
60 lines
2.0 KiB
Dart
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:relationship_saver/core/auth/in_memory_token_store.dart';
|
|
import 'package:relationship_saver/features/auth/session_controller.dart';
|
|
import 'package:relationship_saver/integrations/backend/backend_gateway_fake.dart';
|
|
import 'package:relationship_saver/integrations/backend/backend_gateway_provider.dart';
|
|
import 'package:relationship_saver/integrations/backend/models/backend_models.dart';
|
|
|
|
void main() {
|
|
test('initial state is signed out when token store is empty', () async {
|
|
final ProviderContainer container = ProviderContainer(
|
|
overrides: [
|
|
tokenStoreProvider.overrideWithValue(InMemoryTokenStore()),
|
|
backendGatewayProvider.overrideWithValue(BackendGatewayFake()),
|
|
],
|
|
);
|
|
addTearDown(container.dispose);
|
|
|
|
final AuthSession? session = await container.read(
|
|
sessionControllerProvider.future,
|
|
);
|
|
expect(session, isNull);
|
|
});
|
|
|
|
test('sign-in creates session and sign-out clears it', () async {
|
|
final InMemoryTokenStore tokenStore = InMemoryTokenStore();
|
|
final ProviderContainer container = ProviderContainer(
|
|
overrides: [
|
|
tokenStoreProvider.overrideWithValue(tokenStore),
|
|
backendGatewayProvider.overrideWithValue(BackendGatewayFake()),
|
|
],
|
|
);
|
|
addTearDown(container.dispose);
|
|
|
|
await container
|
|
.read(sessionControllerProvider.notifier)
|
|
.signIn(
|
|
method: SignInMethod.password,
|
|
email: 'demo@example.com',
|
|
password: 'password123',
|
|
);
|
|
|
|
final AuthSession? signedIn = container
|
|
.read(sessionControllerProvider)
|
|
.asData
|
|
?.value;
|
|
expect(signedIn, isNotNull);
|
|
expect(signedIn?.user.email, 'demo@example.com');
|
|
|
|
await container.read(sessionControllerProvider.notifier).signOut();
|
|
|
|
final AuthSession? signedOut = container
|
|
.read(sessionControllerProvider)
|
|
.asData
|
|
?.value;
|
|
expect(signedOut, isNull);
|
|
expect(await tokenStore.read(), isNull);
|
|
});
|
|
}
|