/** * Keycloak Testing Module * * A drop-in replacement for KeycloakModule in NestJS test suites. * Satisfies all DI tokens exported by KeycloakModule with configurable stubs, * without requiring a live Keycloak server or network access. * * @example * ```typescript * const moduleRef = await Test.createTestingModule({ * imports: [KeycloakTestingModule.forRoot()], * providers: [MyService], * }).compile(); * * // Override default valid-token behaviour: * const mock = moduleRef.get(MockKeycloakTokenValidationService); * mock.SetValidateTokenResult({ valid: false, error: 'token_inactive' }); * ``` */ import { DynamicModule } from '@nestjs/common'; import type { TKeycloakModuleOptions } from '../keycloak/keycloak.types.js'; import type { IAsyncModuleOptions } from '../utils/module-factory.js'; /** * Options for KeycloakTestingModule.forRoot(). */ export interface IKeycloakTestingModuleOptions { /** * Partial Keycloak options provided under KEYCLOAK_MODULE_OPTIONS. * Defaults to stub values suitable for unit tests. */ keycloakOptions?: Partial; } /** * Async options for KeycloakTestingModule.forRootAsync(). * * Allows test configuration to be deferred until module initialization time, * using a factory function that resolves test options asynchronously. */ export interface IKeycloakTestingModuleAsyncOptions extends IAsyncModuleOptions { /** * Factory function returning test module options or a promise that resolves to it. */ useFactory: (...args: unknown[]) => Promise | IKeycloakTestingModuleOptions; } /** * Testing replacement for KeycloakModule. * * A drop-in replacement for `KeycloakModule` in NestJS test suites. Provides all the same * DI tokens (`KEYCLOAK_MODULE_OPTIONS`, `KeycloakTokenValidationService`) without requiring * a live Keycloak server or network access. * * @example * ```typescript * const moduleRef = await Test.createTestingModule({ * imports: [KeycloakTestingModule.forRoot()], * providers: [MyService], * }).compile(); * ``` */ export declare class KeycloakTestingModule { /** * Register the testing module with optional configuration overrides. * * @param options - Optional overrides for default stub values * @returns DynamicModule configuration ready for NestJS DI * * @example * ```typescript * KeycloakTestingModule.forRoot({ * keycloakOptions: { realm: 'custom-realm' } * }) * ``` */ static forRoot(options?: IKeycloakTestingModuleOptions): DynamicModule; /** * Register the testing module asynchronously with deferred configuration. * * Configuration is resolved lazily at module initialization time using a factory function. * The factory may return resolved options or a promise that resolves to them. * * @param options - Async factory configuration * @returns DynamicModule configuration ready for NestJS DI * * @example * ```typescript * KeycloakTestingModule.forRootAsync({ * imports: [ConfigModule], * inject: [ConfigService], * useFactory: async (config: ConfigService) => ({ * keycloakOptions: { * realm: config.get('TEST_REALM') || 'test' * } * }) * }) * ``` */ static forRootAsync(options: IKeycloakTestingModuleAsyncOptions): DynamicModule; } //# sourceMappingURL=keycloak-testing.module.d.ts.map