UNPKG

@davidbolaji/termii-node

Version:

Node.js SDK for Termii API – send SMS, voice, OTP, and manage messaging with ease.

57 lines (56 loc) 3.12 kB
import { EsimService } from "../sotel/EsimService"; describe("EsimService", () => { let httpClient; let service; beforeEach(() => { httpClient = { request: jest.fn() }; service = new EsimService(httpClient); }); it("authenticates to get a token", async () => { const payload = { api_key: "key" }; const mockResponse = { token: "abc123" }; httpClient.request.mockResolvedValue(mockResponse); const result = await service.authenticate(payload); expect(httpClient.request).toHaveBeenCalledWith("/api/esim/authenticate", expect.objectContaining({ method: "POST", data: payload, authLocation: "body" })); expect(result).toEqual(mockResponse); }); it("fetches data plans", async () => { const params = { country: "Nigeria", type: "LOCAL" }; const mockResponse = { plans: [] }; httpClient.request.mockResolvedValue(mockResponse); const result = await service.fetchPlans(params); expect(httpClient.request).toHaveBeenCalledWith("/api/esim/data/plan/fetch", expect.objectContaining({ method: "GET", params, authLocation: "none" })); expect(result).toEqual(mockResponse); }); it("creates a new eSIM", async () => { const payload = { productId: "p1", iso3: "NG" }; const mockResponse = { iccid: "i1", euiccId: "u1", status: "ACTIVE" }; httpClient.request.mockResolvedValue(mockResponse); const result = await service.createEsim(payload); expect(httpClient.request).toHaveBeenCalledWith("/api/esim/create", expect.objectContaining({ method: "POST", data: payload, authLocation: "none" })); expect(result).toEqual(mockResponse); }); it("gets QR code for activation", async () => { const iccid = "i1"; const mockResponse = { qrCode: "data" }; httpClient.request.mockResolvedValue(mockResponse); const result = await service.getQrCode(iccid); expect(httpClient.request).toHaveBeenCalledWith(`/api/esim/activate/${iccid}/qr/code`, expect.objectContaining({ method: "GET", authLocation: "none" })); expect(result).toEqual(mockResponse); }); it("gets usage details", async () => { const iccid = "i1"; const mockResponse = { iccid, used: 0, remaining: 100, expiry: "2025-09-01" }; httpClient.request.mockResolvedValue(mockResponse); const result = await service.getUsage(iccid); expect(httpClient.request).toHaveBeenCalledWith(`/api/esim/subscriptions/usage/${iccid}`, expect.objectContaining({ method: "GET", authLocation: "none" })); expect(result).toEqual(mockResponse); }); it("fetches provisioned eSIMs with default pagination", async () => { const mockResponse = { plans: [] }; httpClient.request.mockResolvedValue(mockResponse); const result = await service.fetchEsims(); expect(httpClient.request).toHaveBeenCalledWith("/api/esim/fetch/esims?page=0&size=15", expect.objectContaining({ method: "GET", authLocation: "none" })); expect(result).toEqual(mockResponse); }); });