From 9c8e13d7d4b0b0377f2848e7a9097d8bbef9a6bd Mon Sep 17 00:00:00 2001 From: Chris Tankersley Date: Fri, 18 Nov 2022 09:20:03 -0500 Subject: [PATCH] fix: Numbers API was making JSON requests instead of form encoded requests (#734) --- packages/numbers/__tests__/numbers.test.ts | 69 ++++++++++++---------- packages/numbers/lib/numbers.ts | 10 ++-- 2 files changed, 44 insertions(+), 35 deletions(-) diff --git a/packages/numbers/__tests__/numbers.test.ts b/packages/numbers/__tests__/numbers.test.ts index b741867f..beb8a869 100644 --- a/packages/numbers/__tests__/numbers.test.ts +++ b/packages/numbers/__tests__/numbers.test.ts @@ -33,13 +33,14 @@ describe('Numbers', () => { test('buyNumber()', async () => { nock(BASE_URL) .persist() - .post(`/number/buy`, { - api_key: '12345', - api_secret: 'ABCDE', - country: 'US', - msisdn: '12345', - target_api_key: '67890', - }) + .post( + `/number/buy?api_key=12345&api_secret=ABCDE`, + new URLSearchParams([ + ['target_api_key', '67890'], + ['country', 'US'], + ['msisdn', '12345'], + ]).toString() + ) .reply(200, { 'error-code': '200', 'error-code-label': 'success' }) const results = await client.buyNumber({ @@ -56,13 +57,14 @@ describe('Numbers', () => { ) nock(BASE_URL) .persist() - .post(`/number/buy`, { - api_key: 'badkey', - api_secret: 'badsecret', - country: 'US', - msisdn: '12345', - target_api_key: '67890', - }) + .post( + `/number/buy?api_key=badkey&api_secret=badsecret`, + new URLSearchParams([ + ['target_api_key', '67890'], + ['country', 'US'], + ['msisdn', '12345'], + ]).toString() + ) .reply(401, { 'error-code': '401', 'error-code-label': 'authentication failed', @@ -235,13 +237,14 @@ describe('Numbers', () => { test('cancelNumber()', async () => { nock(BASE_URL) - .post(`/number/cancel`, { - api_key: '12345', - api_secret: 'ABCDE', - country: 'US', - msisdn: '12345', - target_api_key: '67890', - }) + .post( + `/number/cancel?api_key=12345&api_secret=ABCDE`, + new URLSearchParams([ + ['target_api_key', '67890'], + ['country', 'US'], + ['msisdn', '12345'], + ]).toString() + ) .reply(200, { 'error-code': '200', 'error-code-label': 'success' }) const results = await client.cancelNumber({ @@ -254,16 +257,20 @@ describe('Numbers', () => { test('updateNumber()', async () => { nock(BASE_URL) - .post(`/number/update`, { - api_key: '12345', - api_secret: 'ABCDE', - country: 'US', - msisdn: '12345', - app_id: '123abc', - voiceCallbackType: 'app', - voiceCallbackValue: 'https://www.example.com/webhook', - voiceStatusCallback: 'https://www.example.com/webhook/events', - }) + .post( + `/number/update?api_key=12345&api_secret=ABCDE`, + new URLSearchParams([ + ['app_id', '123abc'], + ['country', 'US'], + ['msisdn', '12345'], + ['voiceCallbackType', 'app'], + ['voiceCallbackValue', 'https://www.example.com/webhook'], + [ + 'voiceStatusCallback', + 'https://www.example.com/webhook/events', + ], + ]).toString() + ) .reply(200, { 'error-code': '200', 'error-code-label': 'success' }) const results = await client.updateNumber({ diff --git a/packages/numbers/lib/numbers.ts b/packages/numbers/lib/numbers.ts index e89cd810..d2d5efe6 100644 --- a/packages/numbers/lib/numbers.ts +++ b/packages/numbers/lib/numbers.ts @@ -1,4 +1,4 @@ -import { Client } from '@vonage/server-client' +import { AuthenticationType, Client } from '@vonage/server-client' import { Feature } from './enums/Feature' import { NumbersAvailableList, @@ -23,12 +23,14 @@ const remapObjects = (mapping, newObject: T, oldObject: O): T => { } export class Numbers extends Client { + protected authType = AuthenticationType.QUERY_KEY_SECRET + public async buyNumber( params?: NumbersParams ): Promise { const mapping = { target_api_key: 'targetApiKey' } const data = remapObjects(mapping, {}, params) - const resp = await this.sendPostRequest( + const resp = await this.sendFormSubmitRequest( `${this.config.restHost}/number/buy`, data ) @@ -44,7 +46,7 @@ export class Numbers extends Client { ): Promise { const mapping = { target_api_key: 'targetApiKey' } const data = remapObjects(mapping, {}, params) - const resp = await this.sendPostRequest( + const resp = await this.sendFormSubmitRequest( `${this.config.restHost}/number/cancel`, data ) @@ -119,7 +121,7 @@ export class Numbers extends Client { app_id: 'applicationId', } const data = remapObjects(mapping, {}, params) - const resp = await this.sendPostRequest( + const resp = await this.sendFormSubmitRequest( `${this.config.restHost}/number/update`, data )