48 lines
1.4 KiB
Dart
48 lines
1.4 KiB
Dart
import '../dto/results.dart';
|
|
import '../mappers/results.dart';
|
|
import '../models/auth.dart';
|
|
import 'contracts.dart';
|
|
import 'verification.dart';
|
|
|
|
/// Deterministic local simulation. No network, storage, credentials or sessions
|
|
/// are retained. Configure failures explicitly rather than using magic emails.
|
|
class DummyLoginService implements LoginService, SimulationInfo {
|
|
@override
|
|
bool get isSimulated => true;
|
|
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 AuthMapper.fromDTO(
|
|
const AuthDTO(userId: 'demo-user', simulated: true),
|
|
);
|
|
}
|
|
}
|
|
|
|
class DummySignupService implements SignupService, SimulationInfo {
|
|
@override
|
|
bool get isSimulated => true;
|
|
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 AuthMapper.fromDTO(
|
|
const AuthDTO(userId: 'demo-user', simulated: true),
|
|
);
|
|
}
|
|
}
|