From f8d44248725982b68926e7bcc94c4c2670f57c59 Mon Sep 17 00:00:00 2001 From: Eric Hayes Date: Mon, 11 May 2020 10:03:02 -0700 Subject: [PATCH] Support adding query params for DELETE. (#214) --- lib/RestClient.ts | 2 +- test/package-lock.json | 9 ++++++--- test/tests/resttests.ts | 29 +++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/lib/RestClient.ts b/lib/RestClient.ts index a8b1fd6f..19e6b4e6 100644 --- a/lib/RestClient.ts +++ b/lib/RestClient.ts @@ -87,7 +87,7 @@ export class RestClient { public async del(resource: string, options?: IRequestOptions): Promise> { - let url: string = util.getUrl(resource, this._baseUrl); + let url: string = util.getUrl(resource, this._baseUrl, (options || {}).queryParameters); let res: httpm.HttpClientResponse = await this.client.del(url, this._headersFromOptions(options)); return this.processResponse(res, options); diff --git a/test/package-lock.json b/test/package-lock.json index 2e3ce32a..bc352668 100644 --- a/test/package-lock.json +++ b/test/package-lock.json @@ -14,15 +14,18 @@ "dependencies": { "qs": { "version": "6.9.3", - "bundled": true + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz", + "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==" }, "tunnel": { "version": "0.0.6", - "bundled": true + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" }, "underscore": { "version": "1.8.3", - "bundled": true + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" } } } diff --git a/test/tests/resttests.ts b/test/tests/resttests.ts index c55cc19a..028f4cc8 100644 --- a/test/tests/resttests.ts +++ b/test/tests/resttests.ts @@ -147,6 +147,35 @@ describe('Rest Tests', function () { assert(restRes.result && restRes.result.url === 'https://httpbin.org/delete'); }); + it('deletes a resource passing Query Parameters', async () => { + this.timeout(3000); + const response: restm.IRestResponse = await _rest.del('https://httpbin.org/delete', _options); + + assert(response.statusCode == 200, "statusCode should be 200"); + assert(response.result.url === 'https://httpbin.org/delete?id=1&type=compact'); + + Object.keys(_options.queryParameters.params).forEach(key => { + const actual = response.result.args[key]; + const expected = _options.queryParameters.params[key]; + + assert(expected == actual); + }) + }); + + it('deletes a resource with baseUrl passing Query Parameters', async () => { + const response: restm.IRestResponse = await _restBin.del('delete', _options); + + assert(response.statusCode == 200, "statusCode should be 200"); + assert(response.result.url === 'https://httpbin.org/delete?id=1&type=compact'); + + Object.keys(_options.queryParameters.params).forEach(key => { + const actual = response.result.args[key]; + const expected = _options.queryParameters.params[key]; + + assert(expected == actual); + }) + }); + it('does an options request', async() => { let restRes: restm.IRestResponse = await _rest.options('https://httpbin.org'); assert(restRes.statusCode == 200, "statusCode should be 200");