createAuthRuntimeConformanceEngine function

Engine createAuthRuntimeConformanceEngine()

Creates the opinionated engine fixture used by verifyAuthRuntimeConformance.

The fixture enables credential sign-in, cookie-backed sessions, CSRF and browser-origin protection. Its credential callback also has a deliberate failure path used to confirm that transports sanitize internal errors.

Implementation

Engine createAuthRuntimeConformanceEngine() {
  final sessionKey = base64.encode(
    List<int>.generate(32, (index) => index + 1),
  );
  final manager = AuthManager(
    AuthOptions<EngineContext>(
      store: InMemoryAuthStore(),
      storeMode: AuthStoreMode.ephemeral,
      providers: [
        CredentialsProvider(
          authorize: (_, _, credentials) async {
            final identifier = credentials.email ?? credentials.username;
            if (identifier == 'explode@example.test') {
              throw StateError(authRuntimeConformanceFailureMarker);
            }
            if (identifier != authRuntimeConformanceEmail ||
                credentials.password != authRuntimeConformancePassword) {
              return null;
            }
            return AuthUser(
              id: authRuntimeConformanceUserId,
              email: authRuntimeConformanceEmail,
              name: 'Runtime User',
            );
          },
        ),
      ],
      cookiePolicy: AuthCookiePolicy.development,
    ),
  );
  final sessionConfig = SessionConfig.cookie(
    appKey: 'base64:$sessionKey',
    cookieName: authRuntimeConformanceCookieName,
    options: SessionOptions(
      secure: false,
      httpOnly: true,
      sameSite: SameSite.lax,
    ),
  );
  final engine = Engine(
    config: EngineConfig(
      security: const EngineSecurityFeatures(csrfProtection: false),
    ),
    providers: [
      ...Engine.defaultProviders,
      RoutedSessionsProvider(sessionConfig),
    ],
  );
  engine.addGlobalMiddleware(sessionMiddleware());
  engine.addGlobalMiddleware(SessionAuth.sessionAuthMiddleware());
  AuthRoutes(manager).register(engine.defaultRouter);
  return engine;
}