UNPKG

@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
"use strict"; 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