UNPKG

mtn-momo-client

Version:

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

44 lines (39 loc) 1.52 kB
import { describe, expect, it } from 'vitest'; import { createTokenClient } from '../client'; import { Product, TargetEnvironment } from '../../types'; const createClient = (targetProduct = Product.Collection) => { const userId = 'mockUserId'; const apiKey = 'mockApiKey'; const subscriptionKey = 'mockCollectionsAPIKey'; const authToken = Buffer.from(`${userId}:${apiKey}`).toString('base64'); const client = createTokenClient({ userId, apiKey, targetProduct, subscriptionKey, targetEnvironment: TargetEnvironment.Sandbox, }); return { client, authToken }; }; describe('createTokenClient', () => { it('should create a client with the correct baseURL and headers', () => { const { authToken, client } = createClient(); expect(client.defaults.baseURL).toBe( 'https://sandbox.momodeveloper.mtn.com/collection' ); expect(client.defaults.headers).toMatchObject({ 'X-Target-Environment': TargetEnvironment.Sandbox, Authorization: `Basic ${authToken}`, }); }); it('should not create a different client for the same product', () => { const { client: client1 } = createClient(); const { client: client2 } = createClient(); expect(client1).toBe(client2); }); it('should create a different client for different products', () => { const { client: collectionClient } = createClient(); const { client: disbursementClient } = createClient(Product.Disbursement); expect(collectionClient).not.toBe(disbursementClient); }); });