diff --git a/packages/rulesets/src/native/tests/composite-azure-tests.ts b/packages/rulesets/src/native/tests/composite-azure-tests.ts index 8c9f30247..75d00ca55 100644 --- a/packages/rulesets/src/native/tests/composite-azure-tests.ts +++ b/packages/rulesets/src/native/tests/composite-azure-tests.ts @@ -100,6 +100,13 @@ describe("CompositeAzureTests", () => { assertValidationRuleCount(messages, GetCollectionResponseSchema, 1) }) + test("get collection response schema should match the ARM specification", async () => { + console.log("hello") + const fileName = "armResource/containerApps.json" + const messages: LintResultMessage[] = await collectTestMessagesFromValidator(fileName, OpenApiTypes.arm, GetCollectionResponseSchema) + assertValidationRuleCount(messages, GetCollectionResponseSchema, 0) + }) + test("all resources must have get operation", async () => { const fileName = "armResource/cluster.json" const messages: LintResultMessage[] = await collectTestMessagesFromValidator( diff --git a/packages/rulesets/src/native/tests/resources/armResource/containerApps.json b/packages/rulesets/src/native/tests/resources/armResource/containerApps.json new file mode 100644 index 000000000..9bbdd186e --- /dev/null +++ b/packages/rulesets/src/native/tests/resources/armResource/containerApps.json @@ -0,0 +1,265 @@ +{ + "swagger": "2.0", + "info": { + "version": "2022-11-01-preview", + "title": "ContainerApps API Client" + }, + "host": "management.azure.com", + "schemes": [ + "https" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/managedEnvironments/{environmentName}/daprResiliencyCircuitBreakerPolicies": { + "get": { + "tags": [ + "DaprResiliencyCircuitBreakerPolicies" + ], + "summary": "Get the Dapr Resiliency Circuit Breaker Policies for a managed environment.", + "operationId": "DaprResiliencyCircuitBreakerPolicies_List", + "parameters": [ + { + "name": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "name": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "environmentName", + "in": "path", + "description": "Name of the Managed Environment.", + "required": true, + "pattern": "^.*", + "type": "string" + }, + { + "name": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "name": "./CommonDefinitions.json#/definitions/DaprResiliencyCircuitBreakerPoliciesCollection" + } + }, + "default": { + "description": "Common error response.", + "schema": { + "name": "./CommonDefinitions.json#/definitions/DefaultErrorResponse" + } + } + }, + "x-ms-examples": { + "List Dapr Resiliency Circuit Breaker Policy": { + "name": "./examples/DaprResiliencyCircuitBreakerPolicies_List.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/managedEnvironments/{environmentName}/daprResiliencyCircuitBreakerPolicies/{policyName}": { + "get": { + "tags": [ + "DaprResiliencyCircuitBreakerPolicies" + ], + "summary": "Get a Dapr Resiliency Circuit Breaker policy.", + "operationId": "DaprResiliencyCircuitBreakerPolicies_Get", + "parameters": [ + { + "name": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "name": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "environmentName", + "in": "path", + "description": "Name of the Managed Environment.", + "required": true, + "pattern": "^.*", + "type": "string" + }, + { + "name": "policyName", + "in": "path", + "description": "Name of the Dapr resiliency circuit breaker policy.", + "required": true, + "pattern": "^.*", + "type": "string" + }, + { + "name": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "name": "./CommonDefinitions.json#/definitions/DaprResiliencyCircuitBreakerPolicy" + } + }, + "default": { + "description": "Common error response.", + "schema": { + "name": "./CommonDefinitions.json#/definitions/DefaultErrorResponse" + } + } + }, + "x-ms-examples": { + "Get Dapr Resiliency Circuit Breaker Policy": { + "name": "./examples/DaprResiliencyCircuitBreakerPolicies_Get.json" + } + } + }, + "put": { + "tags": [ + "DaprResiliencyCircuitBreakerPolicies" + ], + "summary": "Creates or updates a Dapr Resiliency Circuit Breaker Policy.", + "description": "Creates or updates a Dapr Resiliency Circuit Breaker Policy in a Managed Environment.", + "operationId": "DaprResiliencyCircuitBreakerPolicies_CreateOrUpdate", + "parameters": [ + { + "name": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "name": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "environmentName", + "in": "path", + "description": "Name of the Managed Environment.", + "required": true, + "pattern": "^.*", + "type": "string" + }, + { + "name": "policyName", + "in": "path", + "description": "Name of the Dapr Resiliency Circuit Breaker Policy.", + "required": true, + "pattern": "^.*", + "type": "string" + }, + { + "name": "daprResiliencyCircuitBreakerPoliciesEnvelope", + "in": "body", + "description": "Configuration details of the Dapr Resiliency Circuit Breaker Policy.", + "required": true, + "schema": { + "name": "./CommonDefinitions.json#/definitions/DaprResiliencyCircuitBreakerPolicy" + } + }, + { + "name": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "name": "./CommonDefinitions.json#/definitions/DaprResiliencyCircuitBreakerPolicy" + } + }, + "201": { + "description": "Created", + "schema": { + "name": "./CommonDefinitions.json#/definitions/DaprResiliencyCircuitBreakerPolicy" + } + }, + "default": { + "description": "Common error response.", + "schema": { + "name": "./CommonDefinitions.json#/definitions/DefaultErrorResponse" + } + } + }, + "x-ms-examples": { + "Create or update Dapr Resiliency Circuit Breaker Policy": { + "name": "./examples/DaprResiliencyCircuitBreakerPolicies_CreateOrUpdate.json" + } + } + }, + "delete": { + "tags": [ + "DaprResiliencyCircuitBreakerPolicies" + ], + "summary": "Delete a Dapr Resiliency Circuit Breaker Policy.", + "description": "Delete a Dapr Resiliency Circuit Breaker Policy from a Managed Environment.", + "operationId": "DaprResiliencyCircuitBreakerPolicies_Delete", + "parameters": [ + { + "name": "../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "name": "../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "environmentName", + "in": "path", + "description": "Name of the Managed Environment.", + "required": true, + "pattern": "^.*", + "type": "string" + }, + { + "name": "policyName", + "in": "path", + "description": "Name of the Dapr Resiliency Circuit Breaker Policy.", + "required": true, + "pattern": "^.*", + "type": "string" + }, + { + "name": "../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Delete operation completed" + }, + "204": { + "description": "Environment does not exist" + }, + "default": { + "description": "Common error response.", + "schema": { + "name": "./CommonDefinitions.json#/definitions/DefaultErrorResponse" + } + } + }, + "x-ms-examples": { + "Delete Dapr Resiliency Circuit Breaker Policy": { + "name": "./examples/DaprResiliencyCircuitBreakerPolicies_Delete.json" + } + } + } + } + }, + "securityDefinitions": { + "azure_auth": { + "type": "oauth2", + "description": "Azure Active Directory OAuth2 Flow", + "flow": "implicit", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "scopes": { + "user_impersonation": "impersonate your user account" + } + } + }, + "security": [ + { + "azure_auth": [ + "user_impersonation" + ] + } + ] +} \ No newline at end of file