application-services
Version:
Out of the box application environment and configuration service.
235 lines • 6.35 kB
JavaScript
import { describe, it, beforeEach, jest, expect } from '@jest/globals';
import initENV, { NodeEnv } from './ENV.js';
describe('initENV', () => {
const log = jest.fn();
const readFile = jest.fn();
beforeEach(() => {
log.mockReset();
readFile.mockReset();
});
it('should work with existing file', async () => {
readFile.mockResolvedValueOnce(Buffer.from(`DEV_MODE=1
ISOLATED_ENV=1
DB_HOST = 'test1.localhost'
`));
readFile.mockResolvedValueOnce(Buffer.from(`DB_PASSWORD=oudelali
DB_HOST = 'test2.localhost'
ISOLATED_ENV=
`));
const ENV = await initENV({
APP_ENV: 'local',
BASE_ENV: { ISOLATED_ENV: '1', NODE_ENV: NodeEnv.Production },
PROCESS_ENV: { ISOLATED_ENV: '0' },
PROJECT_DIR: '/home/whoami/my-whook-project',
log,
readFile: readFile,
});
expect({
ENV,
logCalls: log.mock.calls.filter(([type]) => !type.endsWith('stack')),
readFileCalls: readFile.mock.calls,
}).toMatchInlineSnapshot(`
{
"ENV": {
"DB_HOST": "test2.localhost",
"DB_PASSWORD": "oudelali",
"DEV_MODE": "1",
"ISOLATED_ENV": "",
"NODE_ENV": "production",
},
"logCalls": [
[
"debug",
"♻️ - Loading the environment service.",
],
[
"warning",
"🔴 - Running with "local" application environment.",
],
[
"warning",
"🖥 - Using an isolated env.",
],
[
"warning",
"🔂 - Running with "production" node environment.",
],
[
"debug",
"💾 - Trying to load .env file at "/home/whoami/my-whook-project/.env.node.production".",
],
[
"debug",
"💾 - Trying to load .env file at "/home/whoami/my-whook-project/.env.app.local".",
],
[
"warning",
"🖬 - Loaded .env file at "/home/whoami/my-whook-project/.env.node.production".",
],
[
"warning",
"🖬 - Loaded .env file at "/home/whoami/my-whook-project/.env.app.local".",
],
],
"readFileCalls": [
[
"/home/whoami/my-whook-project/.env.node.production",
],
[
"/home/whoami/my-whook-project/.env.app.local",
],
],
}
`);
});
it('should work respect the documentation precedence', async () => {
readFile.mockResolvedValueOnce(Buffer.from(`A_PROCESS_ENV_VAR=do_not_keep_that_value
A_APP_ENV_VAR=do_not_keep_that_value
A_NODE_ENV_VAR=keep_that_value
`));
readFile.mockResolvedValueOnce(Buffer.from(`A_PROCESS_ENV_VAR=do_not_keep_that_value
A_APP_ENV_VAR=keep_that_value
`));
const ENV = await initENV({
APP_ENV: 'local',
BASE_ENV: {
A_PROCESS_ENV_VAR: 'do_not_keep_that_value',
A_BASE_ENV_VAR: 'keep_that_value',
},
PROCESS_ENV: {
A_PROCESS_ENV_VAR: 'keep_that_value',
NODE_ENV: NodeEnv.Production,
},
PROJECT_DIR: '/home/whoami/my-whook-project',
log,
readFile: readFile,
});
expect({
ENV,
logCalls: log.mock.calls.filter(([type]) => !type.endsWith('stack')),
readFileCalls: readFile.mock.calls,
}).toMatchInlineSnapshot(`
{
"ENV": {
"A_APP_ENV_VAR": "keep_that_value",
"A_BASE_ENV_VAR": "keep_that_value",
"A_NODE_ENV_VAR": "keep_that_value",
"A_PROCESS_ENV_VAR": "keep_that_value",
"NODE_ENV": "production",
},
"logCalls": [
[
"debug",
"♻️ - Loading the environment service.",
],
[
"warning",
"🔴 - Running with "local" application environment.",
],
[
"debug",
"🖥 - Using the process env.",
],
[
"warning",
"🔂 - Running with "production" node environment.",
],
[
"debug",
"💾 - Trying to load .env file at "/home/whoami/my-whook-project/.env.node.production".",
],
[
"debug",
"💾 - Trying to load .env file at "/home/whoami/my-whook-project/.env.app.local".",
],
[
"warning",
"🖬 - Loaded .env file at "/home/whoami/my-whook-project/.env.node.production".",
],
[
"warning",
"🖬 - Loaded .env file at "/home/whoami/my-whook-project/.env.app.local".",
],
],
"readFileCalls": [
[
"/home/whoami/my-whook-project/.env.node.production",
],
[
"/home/whoami/my-whook-project/.env.app.local",
],
],
}
`);
});
it('should fail with non-existing file', async () => {
readFile.mockRejectedValueOnce(new Error('EEXISTS'));
const ENV = await initENV({
APP_ENV: 'local',
BASE_ENV: { ISOLATED_ENV: '0' },
PROCESS_ENV: { ISOLATED_ENV: '1' },
PROJECT_DIR: '/home/whoami/my-whook-project',
log,
readFile: readFile,
});
expect({
ENV,
logCalls: log.mock.calls.filter(([type]) => !type.endsWith('stack')),
readFileCalls: readFile.mock.calls,
}).toMatchInlineSnapshot(`
{
"ENV": {
"ISOLATED_ENV": "0",
"NODE_ENV": "development",
},
"logCalls": [
[
"debug",
"♻️ - Loading the environment service.",
],
[
"warning",
"🔴 - Running with "local" application environment.",
],
[
"warning",
"🖥 - Using an isolated env.",
],
[
"warning",
"⚠ - NODE_ENV environment variable is not set, setting it to "development".",
],
[
"warning",
"🔂 - Running with "development" node environment.",
],
[
"debug",
"💾 - Trying to load .env file at "/home/whoami/my-whook-project/.env.node.development".",
],
[
"debug",
"💾 - Trying to load .env file at "/home/whoami/my-whook-project/.env.app.local".",
],
[
"debug",
"🚫 - No file found at "/home/whoami/my-whook-project/.env.node.development".",
],
[
"debug",
"🚫 - No file found at "/home/whoami/my-whook-project/.env.app.local".",
],
],
"readFileCalls": [
[
"/home/whoami/my-whook-project/.env.node.development",
],
[
"/home/whoami/my-whook-project/.env.app.local",
],
],
}
`);
});
});
//# sourceMappingURL=ENV.test.js.map