mirror of
https://github.com/elmerfds/TrafegoDNS.git
synced 2026-01-13 06:40:24 -06:00
93 lines
3.0 KiB
JavaScript
93 lines
3.0 KiB
JavaScript
#!/usr/bin/env node
|
|
/**
|
|
* Test script for database-backed settings system
|
|
*/
|
|
const path = require('path');
|
|
const logger = require('../src/utils/logger');
|
|
|
|
// Set config directory
|
|
process.env.CONFIG_DIR = process.env.CONFIG_DIR || '/config';
|
|
|
|
async function testSettingsSystem() {
|
|
try {
|
|
logger.info('Testing database-backed settings system...');
|
|
|
|
// Initialize database
|
|
const database = require('../src/database');
|
|
logger.info('Initializing database...');
|
|
const dbInitialized = await database.initialize();
|
|
|
|
if (!dbInitialized) {
|
|
logger.error('Failed to initialize database');
|
|
process.exit(1);
|
|
}
|
|
|
|
logger.info('Database initialized successfully');
|
|
|
|
// Wait for database to be ready
|
|
const startTime = Date.now();
|
|
while (!database.isInitialized() && Date.now() - startTime < 5000) {
|
|
await new Promise(resolve => setTimeout(resolve, 100));
|
|
}
|
|
|
|
// Create ConfigManager instance
|
|
const { ConfigManager } = require('../src/config');
|
|
const config = new ConfigManager();
|
|
|
|
logger.info('Loading configuration from database...');
|
|
await config.loadFromDatabase();
|
|
|
|
// Display current configuration
|
|
logger.info('Current configuration:');
|
|
const currentConfig = config.toJSON();
|
|
console.log(JSON.stringify(currentConfig, null, 2));
|
|
|
|
// Test updating a setting
|
|
logger.info('\nTesting configuration update...');
|
|
const testUpdate = {
|
|
pollInterval: 30000,
|
|
cleanupGracePeriod: 30
|
|
};
|
|
|
|
const updateResult = await config.updateConfig(testUpdate);
|
|
|
|
if (updateResult.success) {
|
|
logger.info('Configuration updated successfully');
|
|
logger.info(`Previous poll interval: ${updateResult.previousConfig.pollInterval}`);
|
|
logger.info(`New poll interval: ${config.pollInterval}`);
|
|
logger.info(`Restart required: ${updateResult.requiresRestart}`);
|
|
} else {
|
|
logger.error(`Failed to update configuration: ${updateResult.error}`);
|
|
}
|
|
|
|
// Verify settings were saved to database
|
|
logger.info('\nVerifying settings in database...');
|
|
if (database.repositories && database.repositories.setting) {
|
|
const dbSettings = await database.repositories.setting.getAll();
|
|
logger.info(`Found ${Object.keys(dbSettings).length} settings in database`);
|
|
|
|
// Show a few key settings
|
|
logger.info('Sample settings from database:');
|
|
const sampleKeys = ['operationMode', 'pollInterval', 'dnsProvider', 'cleanupGracePeriod'];
|
|
sampleKeys.forEach(key => {
|
|
if (dbSettings[key] !== undefined) {
|
|
logger.info(` ${key}: ${dbSettings[key]}`);
|
|
}
|
|
});
|
|
} else {
|
|
logger.error('Settings repository not available');
|
|
}
|
|
|
|
logger.info('\n✅ Settings system test completed successfully');
|
|
|
|
} catch (error) {
|
|
logger.error(`❌ Settings system test failed: ${error.message}`);
|
|
console.error(error);
|
|
process.exit(1);
|
|
}
|
|
|
|
process.exit(0);
|
|
}
|
|
|
|
// Run the test
|
|
testSettingsSystem(); |