Files
rely/test/features/auth/session_controller_test.dart
T
2026-02-15 16:38:07 +01:00

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);
});
}