Skip to main content
Glama
dns.test.ts4.91 kB
import { describe, it, expect, vi, beforeEach } from 'vitest'; import { LiaraClient } from '../../api/client.js'; import * as dnsService from '../../services/dns.js'; import { Zone, DnsRecord, CreateDnsRecordRequest } from '../../api/types.js'; describe('DNS Service', () => { let mockClient: LiaraClient; beforeEach(() => { mockClient = { get: vi.fn(), post: vi.fn(), put: vi.fn(), delete: vi.fn(), } as any; }); describe('listZones', () => { it('should list DNS zones with pagination', async () => { const mockZones: Zone[] = [ { _id: '1', name: 'example.com', status: 'ACTIVE', createdAt: '2024-01-01', }, ]; (mockClient.get as any).mockResolvedValue(mockZones); const result = await dnsService.listZones(mockClient, { page: 1, perPage: 20 }); expect(mockClient.get).toHaveBeenCalledWith('/v1/zones', { page: 1, perPage: 20, }); expect(result).toEqual(mockZones); }); }); describe('createZone', () => { it('should create a DNS zone', async () => { const mockZone: Zone = { _id: '1', name: 'example.com', status: 'PENDING', createdAt: '2024-01-01', }; (mockClient.post as any).mockResolvedValue(mockZone); const result = await dnsService.createZone(mockClient, 'example.com'); expect(mockClient.post).toHaveBeenCalledWith('/v1/zones', { name: 'example.com' }); expect(result).toEqual(mockZone); }); }); describe('createRecord', () => { it('should create a DNS record', async () => { const request: CreateDnsRecordRequest = { type: 'A', name: 'www', value: '192.168.1.1', ttl: 3600, }; const mockRecord: DnsRecord = { _id: '1', zoneID: 'zone1', ...request, ttl: 3600, }; (mockClient.post as any).mockResolvedValue(mockRecord); const result = await dnsService.createRecord(mockClient, 'zone1', request); expect(mockClient.post).toHaveBeenCalledWith('/v1/zones/zone1/records', request); expect(result).toEqual(mockRecord); }); it('should create MX record with priority', async () => { const request: CreateDnsRecordRequest = { type: 'MX', name: '@', value: 'mail.example.com', priority: 10, }; const mockRecord: DnsRecord = { _id: '1', zoneID: 'zone1', type: 'MX', name: '@', value: 'mail.example.com', ttl: 3600, priority: 10, }; (mockClient.post as any).mockResolvedValue(mockRecord); const result = await dnsService.createRecord(mockClient, 'zone1', request); expect(result.priority).toBe(10); }); }); describe('updateRecord', () => { it('should update a DNS record', async () => { const updates = { value: '192.168.1.2', ttl: 7200 }; const mockRecord: DnsRecord = { _id: '1', zoneID: 'zone1', type: 'A', name: 'www', value: '192.168.1.2', ttl: 7200, }; (mockClient.put as any).mockResolvedValue(mockRecord); const result = await dnsService.updateRecord(mockClient, 'zone1', 'record1', updates); expect(mockClient.put).toHaveBeenCalledWith( '/v1/zones/zone1/records/record1', updates ); expect(result).toEqual(mockRecord); }); }); describe('listRecords', () => { it('should list DNS records with pagination', async () => { const mockRecords: DnsRecord[] = [ { _id: '1', zoneID: 'zone1', type: 'A', name: 'www', value: '192.168.1.1', ttl: 3600, }, ]; (mockClient.get as any).mockResolvedValue(mockRecords); const result = await dnsService.listRecords(mockClient, 'zone1', { limit: 50, }); expect(mockClient.get).toHaveBeenCalledWith('/v1/zones/zone1/records', { limit: 50, }); expect(result).toEqual(mockRecords); }); }); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/razavioo/liara-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server