@monkeyscanjump/cloudflare-dyndns
Version:
A robust TypeScript application that automatically updates Cloudflare DNS records when your public IP address changes. Perfect for maintaining consistent domain names for home servers, WireGuard VPN, self-hosted services, or any system with a dynamic IP a
53 lines • 2.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const ConfigManager_1 = require("../config/ConfigManager");
jest.mock('fs');
jest.mock('path');
jest.mock('os');
describe('ConfigManager', () => {
beforeEach(() => {
jest.resetAllMocks();
// Mock environment variables
delete process.env.API_TOKEN;
delete process.env.DOMAIN;
delete process.env.SUBDOMAIN;
});
test('should load configuration from environment variables', () => {
process.env.API_TOKEN = 'test-token';
process.env.DOMAIN = 'example.com';
process.env.SUBDOMAIN = 'test';
const configManager = new ConfigManager_1.ConfigManager();
expect(configManager.get('API_TOKEN')).toBe('test-token');
expect(configManager.get('DOMAIN')).toBe('example.com');
expect(configManager.get('SUBDOMAIN')).toBe('test');
});
test('should override with direct configuration', () => {
process.env.API_TOKEN = 'env-token';
const configManager = new ConfigManager_1.ConfigManager({
API_TOKEN: 'direct-token',
DOMAIN: 'direct.example.com'
});
expect(configManager.get('API_TOKEN')).toBe('direct-token');
expect(configManager.get('DOMAIN')).toBe('direct.example.com');
});
test('should construct FQDN from domain and subdomain', () => {
const configManager = new ConfigManager_1.ConfigManager({
DOMAIN: 'example.com',
SUBDOMAIN: 'test'
});
expect(configManager.get('FQDN')).toBe('test.example.com');
});
test('should validate required configuration', () => {
// Missing required config
const configManager = new ConfigManager_1.ConfigManager();
expect(() => configManager.validate()).toThrow();
// With required config
const validConfigManager = new ConfigManager_1.ConfigManager({
API_TOKEN: 'token',
DOMAIN: 'example.com',
SUBDOMAIN: 'test'
});
expect(() => validConfigManager.validate()).not.toThrow();
});
});
//# sourceMappingURL=ConfigManager.test.js.map