UNPKG

@stoplight/spectral-owasp-ruleset

Version:

Probably don't want to beg hackers to come and take your stuff.

170 lines (165 loc) 4.17 kB
import { DiagnosticSeverity } from "@stoplight/types"; import testRule from "./__helpers__/helper"; testRule("owasp:api1:2023-no-numeric-ids", [ { name: "valid case: uuid", document: { openapi: "3.1.0", info: { version: "1.0" }, paths: { "/foo/{id}": { get: { description: "get", parameters: [ { name: "id", in: "path", required: true, schema: { type: "string", format: "uuid", }, }, ], }, }, }, }, errors: [], }, { name: "valid case: ulid", document: { openapi: "3.1.0", info: { version: "1.0" }, paths: { "/foo/{id}": { get: { description: "get", parameters: [ { name: "id", in: "path", required: true, schema: { type: "string", format: "ulid", }, }, ], }, }, }, }, errors: [], }, { name: "valid case: random", document: { openapi: "3.1.0", info: { version: "1.0" }, paths: { "/foo/{id}": { get: { description: "get", parameters: [ { name: "id", in: "path", required: true, schema: { type: "string", example: "sfdjkhjk24kd9s", }, }, ], }, }, }, }, errors: [], }, { name: "invalid if its an integer", document: { openapi: "3.1.0", info: { version: "1.0" }, paths: { "/foo/{id}": { get: { description: "get", parameters: [ { name: "id", in: "path", required: true, schema: { type: "integer", }, }, { name: "notanid", in: "path", required: true, schema: { type: "integer", }, }, { name: "underscore_id", in: "path", required: true, schema: { type: "integer", }, }, { name: "hyphen-id", in: "path", required: true, schema: { type: "integer", format: "int32", }, }, { name: "camelId", in: "path", required: true, schema: { type: "integer", }, }, ], }, }, }, }, errors: [ { message: "Use random IDs that cannot be guessed. UUIDs are preferred but any other random string will do.", path: ["paths", "/foo/{id}", "get", "parameters", "0", "schema"], severity: DiagnosticSeverity.Error, }, { message: "Use random IDs that cannot be guessed. UUIDs are preferred but any other random string will do.", path: ["paths", "/foo/{id}", "get", "parameters", "2", "schema"], severity: DiagnosticSeverity.Error, }, { message: "Use random IDs that cannot be guessed. UUIDs are preferred but any other random string will do.", path: ["paths", "/foo/{id}", "get", "parameters", "3", "schema"], severity: DiagnosticSeverity.Error, }, { message: "Use random IDs that cannot be guessed. UUIDs are preferred but any other random string will do.", path: ["paths", "/foo/{id}", "get", "parameters", "4", "schema"], severity: DiagnosticSeverity.Error, }, ], }, ]);