34 lines
1.4 KiB
JavaScript
34 lines
1.4 KiB
JavaScript
const assert = require('node:assert/strict');
|
|
const test = require('node:test');
|
|
const { isReady } = require('../dist/health.js');
|
|
|
|
test('readiness requires the secret and a successful database query', async () => {
|
|
const secret = process.env.E2E_SECRET;
|
|
const databaseUrl = process.env.DATABASE_URL;
|
|
const runtimeRequired = process.env.MAIDN_RUNTIME_REQUIRED;
|
|
|
|
try {
|
|
delete process.env.MAIDN_RUNTIME_REQUIRED;
|
|
assert.equal(await isReady(async () => assert.fail('query should not run')), true);
|
|
|
|
process.env.MAIDN_RUNTIME_REQUIRED = 'true';
|
|
delete process.env.E2E_SECRET;
|
|
assert.equal(await isReady(async () => assert.fail('query should not run')), false);
|
|
|
|
process.env.E2E_SECRET = 'configured';
|
|
delete process.env.DATABASE_URL;
|
|
assert.equal(await isReady(async () => assert.fail('query should not run')), false);
|
|
|
|
process.env.DATABASE_URL = 'postgres://example';
|
|
assert.equal(await isReady(async () => {}), true);
|
|
assert.equal(await isReady(async () => { throw new Error('unavailable'); }), false);
|
|
} finally {
|
|
if (secret === undefined) delete process.env.E2E_SECRET;
|
|
else process.env.E2E_SECRET = secret;
|
|
if (databaseUrl === undefined) delete process.env.DATABASE_URL;
|
|
else process.env.DATABASE_URL = databaseUrl;
|
|
if (runtimeRequired === undefined) delete process.env.MAIDN_RUNTIME_REQUIRED;
|
|
else process.env.MAIDN_RUNTIME_REQUIRED = runtimeRequired;
|
|
}
|
|
});
|