@joystick.js/db-canary
Version:
JoystickDB - A minimalist database server for the Joystick framework
107 lines (80 loc) • 3.63 kB
JavaScript
/**
* @fileoverview Tests for development mode detection and setup utilities.
*/
import test from 'ava';
import {
is_development_mode,
display_development_startup_message,
warn_undefined_node_env
} from '../../../src/server/lib/development_mode.js';
let original_node_env;
let console_log_calls;
test.beforeEach(() => {
original_node_env = process.env.NODE_ENV;
console_log_calls = [];
// Mock console.log to capture calls
console.log = (...args) => {
console_log_calls.push(args.join(' '));
};
});
test.afterEach(() => {
process.env.NODE_ENV = original_node_env;
// Restore console.log
console.log = console.log.__original || console.log;
});
test('is_development_mode returns true when NODE_ENV is development', (t) => {
process.env.NODE_ENV = 'development';
t.true(is_development_mode());
});
test('is_development_mode returns false when NODE_ENV is production', (t) => {
process.env.NODE_ENV = 'production';
t.false(is_development_mode());
});
test('is_development_mode returns true when NODE_ENV is test', (t) => {
process.env.NODE_ENV = 'test';
t.true(is_development_mode());
});
test('is_development_mode returns false when NODE_ENV is undefined', (t) => {
delete process.env.NODE_ENV;
t.false(is_development_mode());
});
test('is_development_mode returns false when NODE_ENV is empty string', (t) => {
process.env.NODE_ENV = '';
t.false(is_development_mode());
});
test('display_development_startup_message shows correct content with default ports', (t) => {
const tcp_port = 1983;
const http_port = 1984;
display_development_startup_message(tcp_port, http_port);
t.true(console_log_calls.some(call => call.includes('JoystickDB Development Mode')));
t.true(console_log_calls.some(call => call.includes('Development environment detected')));
t.true(console_log_calls.some(call => call.includes('Security features have been bypassed')));
t.true(console_log_calls.some(call => call.includes('Username: admin')));
t.true(console_log_calls.some(call => call.includes('Password: password')));
t.true(console_log_calls.some(call => call.includes('WARNING: This configuration is NOT suitable for production')));
t.true(console_log_calls.some(call => call.includes(`TCP Server: localhost:${tcp_port}`)));
t.true(console_log_calls.some(call => call.includes(`HTTP Server: localhost:${http_port}`)));
});
test('display_development_startup_message shows custom ports', (t) => {
const tcp_port = 3000;
const http_port = 3001;
display_development_startup_message(tcp_port, http_port);
t.true(console_log_calls.some(call => call.includes(`TCP Server: localhost:${tcp_port}`)));
t.true(console_log_calls.some(call => call.includes(`HTTP Server: localhost:${http_port}`)));
});
test('warn_undefined_node_env warns when NODE_ENV is undefined', (t) => {
delete process.env.NODE_ENV;
warn_undefined_node_env();
t.true(console_log_calls.some(call => call.includes('WARNING: NODE_ENV is not set. Defaulting to secure mode.')));
});
test('warn_undefined_node_env warns when NODE_ENV is empty string', (t) => {
process.env.NODE_ENV = '';
warn_undefined_node_env();
t.true(console_log_calls.some(call => call.includes('WARNING: NODE_ENV is not set. Defaulting to secure mode.')));
});
test('warn_undefined_node_env does not warn when NODE_ENV is set', (t) => {
process.env.NODE_ENV = 'production';
console_log_calls = []; // Clear any previous calls
warn_undefined_node_env();
t.false(console_log_calls.some(call => call.includes('WARNING: NODE_ENV is not set. Defaulting to secure mode.')));
});