UNPKG

@joystick.js/db-canary

Version:

JoystickDB - A minimalist database server for the Joystick framework

107 lines (80 loc) 3.63 kB
/** * @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.'))); });