UNPKG

mtn-momo-client

Version:

A collection of utils to interact with the mtn-momo api

62 lines (55 loc) 1.98 kB
import { describe, expect, it } from 'vitest'; import { APIVersion, Product, TargetEnvironment } from '../../../types'; import { createProductClient } from '../client'; const createClient = ({ targetProduct = Product.Collection, apiVersion = 'v1', }: { targetProduct?: Product; apiVersion?: APIVersion; } = {}) => { const userId = 'mockUserId'; const apiKey = 'mockApiKey'; const subscriptionKey = 'mockSubscriptionAPIKey'; const client = createProductClient({ userId, apiKey, apiVersion, targetProduct, subscriptionKey, targetEnvironment: TargetEnvironment.Sandbox, }); return { client }; }; describe('createTokenClient', () => { it('should create a client with the correct baseURL and headers', () => { const { client } = createClient(); expect(client.defaults.baseURL).toBe( 'https://sandbox.momodeveloper.mtn.com/collection/v1_0' ); expect(client.defaults.headers).toMatchObject({ 'Ocp-Apim-Subscription-Key': 'mockSubscriptionAPIKey', 'X-Target-Environment': TargetEnvironment.Sandbox, 'Content-Type': 'application/json', }); }); it('should not create a different client for the same product with the same version', () => { const { client: client1 } = createClient(); const { client: client2 } = createClient(); expect(client1).toBe(client2); }); it('should create a different client for same product but different version', () => { const { client: collectionClientV1 } = createClient(); const { client: collectionClientV2 } = createClient({ apiVersion: 'v2', }); expect(collectionClientV1).not.toBe(collectionClientV2); }); it('should create a different client for different products', () => { const { client: collectionClient } = createClient(); const { client: disbursementClient } = createClient({ targetProduct: Product.Disbursement, }); expect(collectionClient).not.toBe(disbursementClient); }); });