/**
 * P0-8 — env.ts refuses to start when required secrets are missing,
 * regardless of NODE_ENV. The previous dev fallback to
 * 'dev-secret-change-me' is gone.
 */

describe('env strict mode (P0-8)', () => {
    const snapshot = { ...process.env };

    afterEach(() => {
        // Restore env so other tests don't break.
        Object.keys(process.env).forEach((k) => {
            if (!(k in snapshot)) delete process.env[k];
        });
        for (const [k, v] of Object.entries(snapshot)) {
            if (v !== undefined) process.env[k] = v;
        }
        jest.resetModules();
    });

    it('throws when NEXTAUTH_SECRET is missing in development', async () => {
        (process.env as Record<string, string>)['NODE_ENV'] = 'development';
        delete process.env.NEXTAUTH_SECRET;
        jest.resetModules();
        await expect(async () => {
            await import('../env');
        }).rejects.toThrow(/Environment validation failed/);
    });

    it('throws when CHANNEL_ENCRYPTION_KEY is missing in development', async () => {
        (process.env as Record<string, string>)['NODE_ENV'] = 'development';
        delete process.env.CHANNEL_ENCRYPTION_KEY;
        jest.resetModules();
        await expect(async () => {
            await import('../env');
        }).rejects.toThrow(/Environment validation failed/);
    });

    it('throws when CHANNEL_ENCRYPTION_KEY is too short', async () => {
        (process.env as Record<string, string>)['NODE_ENV'] = 'development';
        process.env.CHANNEL_ENCRYPTION_KEY = 'short';
        jest.resetModules();
        await expect(async () => {
            await import('../env');
        }).rejects.toThrow(/Environment validation failed/);
    });

    it('throws when NEXTAUTH_SECRET is too short', async () => {
        (process.env as Record<string, string>)['NODE_ENV'] = 'development';
        process.env.NEXTAUTH_SECRET = 'short';
        jest.resetModules();
        await expect(async () => {
            await import('../env');
        }).rejects.toThrow(/Environment validation failed/);
    });
});
