Add shared authentication and email verification services

Provide reusable models, injectable service contracts, lifecycle-safe providers and explicit dummy implementations for login, signup and verification. Add focused error and async lifecycle tests. Related to #4 and #5.
This commit is contained in:
Stephan D committed 2026-09-11 15:36:58 +02:00
1 parent d9318053e8
commit 27424ed886
15 files changed
+708

No files matched your search

@@ -0,0 +1,36 @@
import '../models/auth.dart';
import 'contracts.dart';
/// Deterministic local simulation. No network, storage, credentials or sessions
/// are retained. Configure failures explicitly rather than using magic emails.
class DummyLoginService implements LoginService {
const DummyLoginService({
this.delay = const Duration(milliseconds: 600),
this.failure,
});
final Duration delay;
final AuthError? failure;
@override
Future<AuthResult> login(LoginRequest request) async {
await Future<void>.delayed(delay);
if (failure case final error?) throw AuthException(error);
return const AuthResult(userId: 'demo-user', isSimulated: true);
}
}
class DummySignupService implements SignupService {
const DummySignupService({
this.delay = const Duration(milliseconds: 600),
this.failure,
});
final Duration delay;
final AuthError? failure;
@override
Future<AuthResult> signup(SignupRequest request) async {
await Future<void>.delayed(delay);
if (failure case final error?) throw AuthException(error);
return const AuthResult(userId: 'demo-user', isSimulated: true);
}
}