@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
35 lines • 1.4 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const IpDetectionService_1 = require("../services/IpDetectionService");
const Logger_1 = require("../utils/Logger");
const axios_1 = __importDefault(require("axios"));
// Simple mocks
jest.mock('axios');
jest.mock('../utils/Logger');
describe('IpDetectionService', () => {
let mockLogger;
let ipService;
beforeEach(() => {
jest.clearAllMocks();
mockLogger = new Logger_1.Logger('');
ipService = new IpDetectionService_1.IpDetectionService(mockLogger, ['ipify']);
});
test('should detect IP from service', async () => {
// Just one successful response
axios_1.default.get.mockResolvedValue({
data: { ip: '192.168.1.1' }
});
const ip = await ipService.detectIp();
expect(ip).toBe('192.168.1.1');
expect(axios_1.default.get).toHaveBeenCalled();
});
test('should throw error when all services fail', async () => {
// Make axios.get fail
axios_1.default.get.mockRejectedValue(new Error('Network error'));
await expect(ipService.detectIp()).rejects.toThrow('Failed to detect public IP');
});
});
//# sourceMappingURL=IpDetectionService.test.js.map