@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
JavaScript
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);
});
});