import 'package:tatlock_ui/core/auth/auth_state.dart'; import 'package:tatlock_ui/core/auth/permissions.dart'; import 'package:tatlock_ui/core/auth/user_preferences.dart'; /// Mock authentication states for testing. class MockAuth { MockAuth._(); /// Unauthenticated state. static const guest = AuthState(); /// Basic authenticated user with no special permissions. static AuthState user({ String id = 'test-user-id', String name = 'Test User', String email = 'test@example.com', String defaultRoom = 'front-hall', String theme = 'system', }) { return AuthState( isAuthenticated: true, accessToken: 'mock-access-token-${DateTime.now().millisecondsSinceEpoch}', refreshToken: 'mock-refresh-token', expiresAt: DateTime.now().add(const Duration(hours: 1)), userId: id, authentikId: 'authentik-$id', userName: name, userEmail: email, roles: [], preferences: UserPreferences( defaultRoom: defaultRoom, theme: theme, ), ); } /// Admin user with full permissions. static AuthState admin({ String id = 'admin-user-id', String name = 'Admin User', String email = 'admin@example.com', }) { return AuthState( isAuthenticated: true, accessToken: 'mock-admin-token-${DateTime.now().millisecondsSinceEpoch}', refreshToken: 'mock-admin-refresh-token', expiresAt: DateTime.now().add(const Duration(hours: 1)), userId: id, authentikId: 'authentik-$id', userName: name, userEmail: email, roles: [ Role( id: 'admin-role', name: 'admin.general:admin', domain: Domain.admin, category: 'general', action: Action.admin, ), ], preferences: const UserPreferences(), ); } /// User with specific permissions. static AuthState withPermissions({ String id = 'perm-user-id', String name = 'Permission User', String email = 'perm@example.com', required List roles, }) { return AuthState( isAuthenticated: true, accessToken: 'mock-perm-token-${DateTime.now().millisecondsSinceEpoch}', refreshToken: 'mock-perm-refresh-token', expiresAt: DateTime.now().add(const Duration(hours: 1)), userId: id, authentikId: 'authentik-$id', userName: name, userEmail: email, roles: roles, preferences: const UserPreferences(), ); } /// User with expired token (for refresh testing). static AuthState expired({ String id = 'expired-user-id', String name = 'Expired User', }) { return AuthState( isAuthenticated: true, accessToken: 'mock-expired-token', refreshToken: 'mock-refresh-token', expiresAt: DateTime.now().subtract(const Duration(hours: 1)), userId: id, userName: name, roles: [], preferences: const UserPreferences(), ); } /// Create a role for testing. static Role role({ String id = 'test-role', required Domain domain, String category = 'general', required Action action, }) { return Role( id: id, name: '${domain.value}.$category:${action.name}', domain: domain, category: category, action: action, ); } }