Skip to content

Commit 361f855

Browse files
authored
@W-18482680: allow unknown query params (#419)
* Allow unknown query parameters
1 parent 9dee573 commit 361f855

File tree

2 files changed

+25
-12
lines changed

2 files changed

+25
-12
lines changed

src/test/parameters.test.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ describe("Parameters", () => {
5252
expect(response).to.be.deep.equal(MOCK_RESPONSE);
5353
});
5454

55-
it("warns user when invalid param is passed", async () => {
55+
it("warns user when an unknown param is passed", async () => {
5656
const productClient = new ShopperProducts.ShopperProducts({
5757
parameters: {
5858
clientId: CLIENT_ID,
@@ -65,17 +65,20 @@ describe("Parameters", () => {
6565
const options = {
6666
parameters: {
6767
ids: ["ids"],
68-
invalidQueryParam: "invalid_param",
68+
unknownParam1: "param1",
69+
unknownParam2: "param2",
6970
},
7071
};
71-
72+
nock.cleanAll();
7273
nock(`https://${SHORT_CODE}.api.commercecloud.salesforce.com`)
7374
.get(
7475
`/product/shopper-products/v1/organizations/${ORGANIZATION_ID}/products`
7576
)
7677
.query({
7778
siteId: SITE_ID,
7879
ids: "ids",
80+
unknownParam1: "param1",
81+
unknownParam2: "param2",
7982
})
8083
.reply(200, MOCK_RESPONSE);
8184

@@ -84,7 +87,14 @@ describe("Parameters", () => {
8487

8588
expect(response).to.be.deep.equal(MOCK_RESPONSE);
8689
expect(
87-
warnSpy.calledWith("Invalid Parameter for getProducts: invalidQueryParam")
90+
warnSpy.calledWith(
91+
"Found unknown parameter for getProducts: unknownParam1, adding as query parameter anyway"
92+
)
93+
).to.be.true;
94+
expect(
95+
warnSpy.calledWith(
96+
"Found unknown parameter for getProducts: unknownParam2, adding as query parameter anyway"
97+
)
8898
).to.be.true;
8999
});
90100
});

templatesOas/apis.mustache

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { defaultBaseUri } from "../runtime";
1313
import { USER_AGENT_HEADER, USER_AGENT_VALUE } from "../../version";
1414
import type {
1515
CompositeParameters,
16+
QueryParameters,
1617
RequireParametersUnlessAllAreOptional
1718
} from "../../types";
1819

@@ -161,7 +162,7 @@ export class {{#lambda.titlecase}}{{#lambda.camelcase}}{{appName}}{{/lambda.came
161162
{{/isHeaderParam}}
162163
{{/isBodyParam}}
163164
{{/allParams}}
164-
} & { [key in `c_${string}`]: any }, CommonParameters>,
165+
} & QueryParameters, CommonParameters>,
165166
retrySettings?: OperationOptions,
166167
fetchOptions?: RequestInit,
167168
headers?: { [key: string]: string },
@@ -230,7 +231,7 @@ export class {{#lambda.titlecase}}{{#lambda.camelcase}}{{appName}}{{/lambda.came
230231
{{/isHeaderParam}}
231232
{{/isBodyParam}}
232233
{{/allParams}}
233-
} & { [key in `c_${string}`]: any }, CommonParameters>,
234+
} & QueryParameters, CommonParameters>,
234235
retrySettings?: OperationOptions,
235236
fetchOptions?: RequestInit,
236237
headers?: { [key: string]: string },
@@ -300,7 +301,7 @@ export class {{#lambda.titlecase}}{{#lambda.camelcase}}{{appName}}{{/lambda.came
300301
{{/isHeaderParam}}
301302
{{/isBodyParam}}
302303
{{/allParams}}
303-
} & { [key in `c_${string}`]: any }, CommonParameters>,
304+
} & QueryParameters, CommonParameters>,
304305
retrySettings?: OperationOptions,
305306
fetchOptions?: RequestInit,
306307
headers?: { [key: string]: string },
@@ -341,7 +342,7 @@ export class {{#lambda.titlecase}}{{#lambda.camelcase}}{{appName}}{{/lambda.came
341342
{{/required}}
342343
{{/pathParams}}
343344

344-
const queryParams: Partial<{ [key in `c_${string}`]: any }> = {};
345+
const queryParams: QueryParameters = {};
345346

346347
{{#queryParams}}
347348
if (optionParams["{{paramName}}"] !== undefined) {
@@ -357,10 +358,12 @@ export class {{#lambda.titlecase}}{{#lambda.camelcase}}{{appName}}{{/lambda.came
357358
{{/queryParams}}
358359

359360
Object.keys(optionParams).forEach((key) => {
360-
if(key.startsWith('c_') && optionParams[key] !== undefined) {
361-
queryParams[key] = optionParams[key]
362-
} else if(!queryParams.hasOwnProperty(key) && !pathParams.hasOwnProperty(key)) {
363-
console.warn(`Invalid Parameter for {{{nickname}}}: ${key}`)
361+
const paramValue = optionParams[key as keyof typeof optionParams];
362+
if(paramValue !== undefined && (key.startsWith('c_') || !((key in queryParams) || (key in pathParams)))) {
363+
if(!key.startsWith('c_')) {
364+
console.warn(`Found unknown parameter for {{{nickname}}}: ${key}, adding as query parameter anyway`);
365+
}
366+
queryParams[key as keyof typeof queryParams] = paramValue;
364367
}
365368
})
366369

0 commit comments

Comments
 (0)