Skip to content

Commit

Permalink
Exclude enum types from being flagged by ResourceNameRestriction (#738)
Browse files Browse the repository at this point in the history
* exclude enum types from being flagged

* Changes from rush prep

---------

Co-authored-by: akhilailla <[email protected]>
  • Loading branch information
AkhilaIlla and akhilailla committed Sep 5, 2024
1 parent 5f8a448 commit 6427001
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 2 deletions.
2 changes: 1 addition & 1 deletion packages/rulesets/generated/spectral/az-arm.js
Original file line number Diff line number Diff line change
Expand Up @@ -2612,7 +2612,7 @@ const resourceNameRestriction = (paths, _opts, ctx) => {
const param = (_a = v.match(/[^{}]+(?=})/)) === null || _a === void 0 ? void 0 : _a[0];
if ((param === null || param === void 0 ? void 0 : param.match(/^\w+Name+$/)) && !EXCEPTION_LIST.includes(param)) {
const paramDefinition = getPathParameter(paths[pathKey], param);
if (paramDefinition && !paramDefinition.pattern) {
if (paramDefinition && !paramDefinition.enum && !paramDefinition.pattern) {
errors.push({
message: `The resource name parameter '${param}' should be defined with a 'pattern' restriction.`,
path: [...path, pathKey],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ export const resourceNameRestriction = (paths: any, _opts: any, ctx: any) => {
// Get the preceding path segment
if (param?.match(/^\w+Name+$/) && !EXCEPTION_LIST.includes(param)) {
const paramDefinition = getPathParameter(paths[pathKey], param)
if (paramDefinition && !paramDefinition.pattern) {
// resource name param with enum doesnt need to explicitly have pattern specified
if (paramDefinition && !paramDefinition.enum && !paramDefinition.pattern) {
errors.push({
message: `The resource name parameter '${param}' should be defined with a 'pattern' restriction.`,
path: [...path, pathKey],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,3 +144,39 @@ test("ResourceNameRestriction should find no errors for system-defined variables
expect(results.length).toBe(0)
})
})

test("ResourceNameRestriction should find no errors for type enums", () => {
const oasDoc = {
swagger: "2.0",
paths: {
"/subscriptions/{subscriptionId}/providers/Microsoft.AzurePlaywrightService/locations/{location}/quotas/{quotaName}": {
get: {
operationId: "Quotas_Get",
tags: ["Quotas"],
description: "Get quota by name.",
parameters: [
{
name: "location",
in: "path",
description: "The location of quota in ARM Normalized format like eastus, southeastasia etc.",
required: true,
type: "string",
},
{
name: "quotaName",
in: "path",
description: "The quota name.",
required: true,
type: "string",
enum: ["ScalableExecution", "Reporting"],
},
],
responses: {},
},
},
},
}
return linter.run(oasDoc).then((results) => {
expect(results.length).toBe(0)
})
})

0 comments on commit 6427001

Please sign in to comment.