Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 14 additions & 4 deletions src/test/parameters.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ describe("Parameters", () => {
expect(response).to.be.deep.equal(MOCK_RESPONSE);
});

it("warns user when invalid param is passed", async () => {
it("warns user when an unknown param is passed", async () => {
const productClient = new ShopperProducts.ShopperProducts({
parameters: {
clientId: CLIENT_ID,
Expand All @@ -65,17 +65,20 @@ describe("Parameters", () => {
const options = {
parameters: {
ids: ["ids"],
invalidQueryParam: "invalid_param",
unknownParam1: "param1",
unknownParam2: "param2",
},
};

nock.cleanAll();
nock(`https://${SHORT_CODE}.api.commercecloud.salesforce.com`)
.get(
`/product/shopper-products/v1/organizations/${ORGANIZATION_ID}/products`
)
.query({
siteId: SITE_ID,
ids: "ids",
unknownParam1: "param1",
unknownParam2: "param2",
})
.reply(200, MOCK_RESPONSE);

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

expect(response).to.be.deep.equal(MOCK_RESPONSE);
expect(
warnSpy.calledWith("Invalid Parameter for getProducts: invalidQueryParam")
warnSpy.calledWith(
"Found unknown parameter for getProducts: unknownParam1, adding as query parameter anyway"
)
).to.be.true;
expect(
warnSpy.calledWith(
"Found unknown parameter for getProducts: unknownParam2, adding as query parameter anyway"
)
).to.be.true;
});
});
19 changes: 11 additions & 8 deletions templatesOas/apis.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { defaultBaseUri } from "../runtime";
import { USER_AGENT_HEADER, USER_AGENT_VALUE } from "../../version";
import type {
CompositeParameters,
QueryParameters,
RequireParametersUnlessAllAreOptional
} from "../../types";

Expand Down Expand Up @@ -161,7 +162,7 @@ export class {{#lambda.titlecase}}{{#lambda.camelcase}}{{appName}}{{/lambda.came
{{/isHeaderParam}}
{{/isBodyParam}}
{{/allParams}}
} & { [key in `c_${string}`]: any }, CommonParameters>,
} & QueryParameters, CommonParameters>,
retrySettings?: OperationOptions,
fetchOptions?: RequestInit,
headers?: { [key: string]: string },
Expand Down Expand Up @@ -230,7 +231,7 @@ export class {{#lambda.titlecase}}{{#lambda.camelcase}}{{appName}}{{/lambda.came
{{/isHeaderParam}}
{{/isBodyParam}}
{{/allParams}}
} & { [key in `c_${string}`]: any }, CommonParameters>,
} & QueryParameters, CommonParameters>,
retrySettings?: OperationOptions,
fetchOptions?: RequestInit,
headers?: { [key: string]: string },
Expand Down Expand Up @@ -300,7 +301,7 @@ export class {{#lambda.titlecase}}{{#lambda.camelcase}}{{appName}}{{/lambda.came
{{/isHeaderParam}}
{{/isBodyParam}}
{{/allParams}}
} & { [key in `c_${string}`]: any }, CommonParameters>,
} & QueryParameters, CommonParameters>,
retrySettings?: OperationOptions,
fetchOptions?: RequestInit,
headers?: { [key: string]: string },
Expand Down Expand Up @@ -341,7 +342,7 @@ export class {{#lambda.titlecase}}{{#lambda.camelcase}}{{appName}}{{/lambda.came
{{/required}}
{{/pathParams}}

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

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

Object.keys(optionParams).forEach((key) => {
if(key.startsWith('c_') && optionParams[key] !== undefined) {
queryParams[key] = optionParams[key]
} else if(!queryParams.hasOwnProperty(key) && !pathParams.hasOwnProperty(key)) {
console.warn(`Invalid Parameter for {{{nickname}}}: ${key}`)
const paramValue = optionParams[key as keyof typeof optionParams];
if(paramValue !== undefined && (key.startsWith('c_') || !((key in queryParams) || (key in pathParams)))) {
if(!key.startsWith('c_')) {
console.warn(`Found unknown parameter for {{{nickname}}}: ${key}, adding as query parameter anyway`);
}
queryParams[key as keyof typeof queryParams] = paramValue;
}
})

Expand Down
Loading