app.module.spec.tsβ’3.85 kB
import { describe, it, expect, beforeEach, afterEach } from 'vitest'
import { Test } from '@nestjs/testing'
import { AppModule } from './app.module'
import { AppService } from './app.service'
import { AppController } from './app.controller'
describe('AppModule', () => {
let originalEnv: Record<string, string | undefined>
beforeEach(() => {
// Save original env
originalEnv = { ...process.env }
})
afterEach(() => {
// Restore environment
process.env = originalEnv
})
it('should compile with all environment variables set', async () => {
process.env.MCP_AUTH_CLIENT_ID = 'test-client-id'
process.env.MCP_AUTH_CLIENT_SECRET = 'test-client-secret'
process.env.MCP_AUTH_JWT_SECRET = 'test-jwt-secret'
process.env.MCP_AUTH_SERVER_URL = 'http://localhost:3000'
process.env.JWT_EXPIRES_IN = '3600s'
const module = await Test.createTestingModule({
imports: [AppModule],
}).compile()
expect(module).toBeDefined()
expect(module.get(AppService)).toBeDefined()
expect(module.get(AppController)).toBeDefined()
})
it('should compile with default auth environment variables', async () => {
// Unset all auth-related env vars to test fallbacks
delete process.env.MCP_AUTH_CLIENT_ID
delete process.env.MCP_AUTH_CLIENT_SECRET
delete process.env.MCP_AUTH_JWT_SECRET
delete process.env.JWT_SECRET
delete process.env.MCP_AUTH_SERVER_URL
delete process.env.SERVER_URL
delete process.env.JWT_EXPIRES_IN
const module = await Test.createTestingModule({
imports: [AppModule],
}).compile()
expect(module).toBeDefined()
expect(module.get(AppService)).toBeDefined()
expect(module.get(AppController)).toBeDefined()
})
it('should use JWT_SECRET fallback when MCP_AUTH_JWT_SECRET is not set', async () => {
delete process.env.MCP_AUTH_CLIENT_ID
delete process.env.MCP_AUTH_CLIENT_SECRET
delete process.env.MCP_AUTH_JWT_SECRET
process.env.JWT_SECRET = 'fallback-jwt-secret'
delete process.env.MCP_AUTH_SERVER_URL
delete process.env.SERVER_URL
delete process.env.JWT_EXPIRES_IN
const module = await Test.createTestingModule({
imports: [AppModule],
}).compile()
expect(module).toBeDefined()
})
it('should use SERVER_URL fallback when MCP_AUTH_SERVER_URL is not set', async () => {
delete process.env.MCP_AUTH_CLIENT_ID
delete process.env.MCP_AUTH_CLIENT_SECRET
delete process.env.MCP_AUTH_JWT_SECRET
delete process.env.JWT_SECRET
delete process.env.MCP_AUTH_SERVER_URL
process.env.SERVER_URL = 'http://fallback:3000'
delete process.env.JWT_EXPIRES_IN
const module = await Test.createTestingModule({
imports: [AppModule],
}).compile()
expect(module).toBeDefined()
})
it('should use test defaults when both JWT secrets are not set', async () => {
delete process.env.MCP_AUTH_CLIENT_ID
delete process.env.MCP_AUTH_CLIENT_SECRET
delete process.env.MCP_AUTH_JWT_SECRET
delete process.env.JWT_SECRET // Delete both to test final fallback
delete process.env.MCP_AUTH_SERVER_URL
delete process.env.SERVER_URL
delete process.env.JWT_EXPIRES_IN
const module = await Test.createTestingModule({
imports: [AppModule],
}).compile()
expect(module).toBeDefined()
})
it('should use default JWT_EXPIRES_IN when not set', async () => {
delete process.env.MCP_AUTH_CLIENT_ID
delete process.env.MCP_AUTH_CLIENT_SECRET
delete process.env.MCP_AUTH_JWT_SECRET
delete process.env.JWT_SECRET
delete process.env.MCP_AUTH_SERVER_URL
delete process.env.SERVER_URL
delete process.env.JWT_EXPIRES_IN // Test final fallback to '3600s'
const module = await Test.createTestingModule({
imports: [AppModule],
}).compile()
expect(module).toBeDefined()
})
})