diff --git a/.chronus/changes/FixUrlForExtensionRsource-2025-1-12-11-15-39.md b/.chronus/changes/FixUrlForExtensionRsource-2025-1-12-11-15-39.md new file mode 100644 index 0000000000..2f385dd88d --- /dev/null +++ b/.chronus/changes/FixUrlForExtensionRsource-2025-1-12-11-15-39.md @@ -0,0 +1,7 @@ +--- +changeKind: fix +packages: + - "@azure-tools/azure-http-specs" +--- + +Fix URL for ExtensionsResources in mockapi. diff --git a/packages/azure-http-specs/specs/azure/resource-manager/resources/mockapi.ts b/packages/azure-http-specs/specs/azure/resource-manager/resources/mockapi.ts index 70d724674d..8fcbcb194c 100644 --- a/packages/azure-http-specs/specs/azure/resource-manager/resources/mockapi.ts +++ b/packages/azure-http-specs/specs/azure/resource-manager/resources/mockapi.ts @@ -1,10 +1,18 @@ -import { json, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api"; +import { json, MockApiDefinition, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api"; export const Scenarios: Record = {}; const SUBSCRIPTION_ID_EXPECTED = "00000000-0000-0000-0000-000000000000"; const RESOURCE_GROUP_EXPECTED = "test-rg"; const LOCATION_EXPECTED = "eastus"; +const SUBSCRIPTION_SCOPE_URI = `/subscriptions/${SUBSCRIPTION_ID_EXPECTED}`; +const RESOURCE_GROUP_SCOPE_URI = `/subscriptions/${SUBSCRIPTION_ID_EXPECTED}/resourceGroups/${RESOURCE_GROUP_EXPECTED}`; +const RESOURCE_SCOPE_URI = `/subscriptions/${SUBSCRIPTION_ID_EXPECTED}/resourceGroups/${RESOURCE_GROUP_EXPECTED}/providers/Azure.ResourceManager.Resources/topLevelTrackedResources/top`; +const SPLIT_SUBSCRIPTION_SCOPE_URI = `subscriptions/${SUBSCRIPTION_ID_EXPECTED}`; +const SPLIT_RESOURCE_GROUP_SCOPE_URI = `subscriptions/${SUBSCRIPTION_ID_EXPECTED}/resourceGroups/${RESOURCE_GROUP_EXPECTED}`; +const SPLIT_RESOURCE_SCOPE_URI = `subscriptions/${SUBSCRIPTION_ID_EXPECTED}/resourceGroups/${RESOURCE_GROUP_EXPECTED}/providers/Azure.ResourceManager.Resources/topLevelTrackedResources/top`; +const TENANT_SCOPE_URI = ""; +const EXTENSION_RESOURCE_NAME = "extension"; const validTopLevelResource = { id: `/subscriptions/${SUBSCRIPTION_ID_EXPECTED}/resourceGroups/${RESOURCE_GROUP_EXPECTED}/providers/Azure.ResourceManager.Resources/topLevelTrackedResources/top`, name: "top", @@ -151,85 +159,76 @@ const validResourceExtensionsResource = { }, }; -// extension tracked resource -Scenarios.Azure_ResourceManager_Resources_ExtensionsResources_get = passOnSuccess([ - { - uri: "/subscriptions/:subscriptionId/resourceGroups/:resourceGroup/providers/Azure.ResourceManager.Resources/extensionsResources/:extensionName", - method: "get", - request: { - params: { - subscriptionId: SUBSCRIPTION_ID_EXPECTED, - resourceGroup: RESOURCE_GROUP_EXPECTED, - extensionName: "extension", - "api-version": "2023-12-01-preview", - }, - }, - response: { - status: 200, - body: json(validResourceGroupExtensionsResource), - }, - kind: "MockApiDefinition", - }, - { - uri: "/subscriptions/:subscriptionId/providers/Azure.ResourceManager.Resources/extensionsResources/:extensionName", - method: "get", - request: { - params: { - subscriptionId: SUBSCRIPTION_ID_EXPECTED, - extensionName: "extension", - "api-version": "2023-12-01-preview", - }, - }, - response: { - status: 200, - body: json(validSubscriptionExtensionsResource), - }, - kind: "MockApiDefinition", - }, - { - uri: "/providers/Azure.ResourceManager.Resources/extensionsResources/:extensionName", +function createExtensionGetMockApiDefinition( + resourceUri: string, + extensionName: string, + validResource: any, +): MockApiDefinition { + return { + uri: `/${resourceUri}/providers/Azure.ResourceManager.Resources/extensionsResources/${extensionName}`, method: "get", request: { params: { - extensionName: "extension", "api-version": "2023-12-01-preview", }, }, response: { status: 200, - body: json(validTenantExtensionsResource), + body: json(validResource), }, kind: "MockApiDefinition", - }, - { - uri: "/subscriptions/:subscriptionId/resourceGroups/:resourceGroup/providers/Azure.ResourceManager.Resources/topLevelTrackedResources/:topLevelResourceName/providers/Azure.ResourceManager.Resources/extensionsResources/:extensionName", - method: "get", - request: { - params: { - subscriptionId: SUBSCRIPTION_ID_EXPECTED, - resourceGroup: RESOURCE_GROUP_EXPECTED, - extensionName: "extension", - topLevelResourceName: "top", - "api-version": "2023-12-01-preview", - }, - }, - response: { - status: 200, - body: json(validResourceExtensionsResource), - }, - kind: "MockApiDefinition", - }, + }; +} + +// extension tracked resource +Scenarios.Azure_ResourceManager_Resources_ExtensionsResources_get = passOnSuccess([ + createExtensionGetMockApiDefinition( + RESOURCE_GROUP_SCOPE_URI, + EXTENSION_RESOURCE_NAME, + validResourceGroupExtensionsResource, + ), + createExtensionGetMockApiDefinition( + SPLIT_RESOURCE_GROUP_SCOPE_URI, + EXTENSION_RESOURCE_NAME, + validResourceGroupExtensionsResource, + ), + createExtensionGetMockApiDefinition( + SUBSCRIPTION_SCOPE_URI, + EXTENSION_RESOURCE_NAME, + validSubscriptionExtensionsResource, + ), + createExtensionGetMockApiDefinition( + SPLIT_SUBSCRIPTION_SCOPE_URI, + EXTENSION_RESOURCE_NAME, + validSubscriptionExtensionsResource, + ), + createExtensionGetMockApiDefinition( + TENANT_SCOPE_URI, + EXTENSION_RESOURCE_NAME, + validTenantExtensionsResource, + ), + createExtensionGetMockApiDefinition( + RESOURCE_SCOPE_URI, + EXTENSION_RESOURCE_NAME, + validResourceExtensionsResource, + ), + createExtensionGetMockApiDefinition( + SPLIT_RESOURCE_SCOPE_URI, + EXTENSION_RESOURCE_NAME, + validResourceExtensionsResource, + ), ]); -Scenarios.Azure_ResourceManager_Resources_ExtensionsResources_createOrUpdate = passOnSuccess([ - { - uri: "/subscriptions/:subscriptionId/resourceGroups/:resourceGroup/providers/Azure.ResourceManager.Resources/extensionsResources/:extensionName", +function createExtensionCreateMockApiDefinition( + resourceUri: string, + extensionName: string, + validResource: any, +): MockApiDefinition { + return { + uri: `/${resourceUri}/providers/Azure.ResourceManager.Resources/extensionsResources/${extensionName}`, method: "put", request: { params: { - subscriptionId: SUBSCRIPTION_ID_EXPECTED, - resourceGroup: RESOURCE_GROUP_EXPECTED, - extensionName: "extension", "api-version": "2023-12-01-preview", }, body: { @@ -240,115 +239,59 @@ Scenarios.Azure_ResourceManager_Resources_ExtensionsResources_createOrUpdate = p }, response: { status: 200, - body: json(validResourceGroupExtensionsResource), + body: json(validResource), }, kind: "MockApiDefinition", - }, - { - uri: "/subscriptions/:subscriptionId/providers/Azure.ResourceManager.Resources/extensionsResources/:extensionName", - method: "put", - request: { - params: { - subscriptionId: SUBSCRIPTION_ID_EXPECTED, - extensionName: "extension", - "api-version": "2023-12-01-preview", - }, - body: { - properties: { - description: "valid", - }, - }, - }, - response: { - status: 200, - body: json(validSubscriptionExtensionsResource), - }, - kind: "MockApiDefinition", - }, - { - uri: "/providers/Azure.ResourceManager.Resources/extensionsResources/:extensionName", - method: "put", - request: { - params: { - extensionName: "extension", - "api-version": "2023-12-01-preview", - }, - body: { - properties: { - description: "valid", - }, - }, - }, - response: { - status: 200, - body: json(validTenantExtensionsResource), - }, - kind: "MockApiDefinition", - }, - { - uri: "/subscriptions/:subscriptionId/resourceGroups/:resourceGroup/providers/Azure.ResourceManager.Resources/topLevelTrackedResources/:topLevelResourceName/providers/Azure.ResourceManager.Resources/extensionsResources/:extensionName", - method: "put", - request: { - params: { - subscriptionId: SUBSCRIPTION_ID_EXPECTED, - resourceGroup: RESOURCE_GROUP_EXPECTED, - topLevelResourceName: "top", - extensionName: "extension", - "api-version": "2023-12-01-preview", - }, - body: { - properties: { - description: "valid", - }, - }, - }, - response: { - status: 200, - body: json(validResourceExtensionsResource), - }, - kind: "MockApiDefinition", - }, + }; +} +Scenarios.Azure_ResourceManager_Resources_ExtensionsResources_createOrUpdate = passOnSuccess([ + createExtensionCreateMockApiDefinition( + RESOURCE_GROUP_SCOPE_URI, + EXTENSION_RESOURCE_NAME, + validResourceGroupExtensionsResource, + ), + createExtensionCreateMockApiDefinition( + SPLIT_RESOURCE_GROUP_SCOPE_URI, + EXTENSION_RESOURCE_NAME, + validResourceGroupExtensionsResource, + ), + createExtensionCreateMockApiDefinition( + SUBSCRIPTION_SCOPE_URI, + EXTENSION_RESOURCE_NAME, + validSubscriptionExtensionsResource, + ), + createExtensionCreateMockApiDefinition( + SPLIT_SUBSCRIPTION_SCOPE_URI, + EXTENSION_RESOURCE_NAME, + validSubscriptionExtensionsResource, + ), + createExtensionCreateMockApiDefinition( + TENANT_SCOPE_URI, + EXTENSION_RESOURCE_NAME, + validTenantExtensionsResource, + ), + createExtensionCreateMockApiDefinition( + RESOURCE_SCOPE_URI, + EXTENSION_RESOURCE_NAME, + validResourceExtensionsResource, + ), + createExtensionCreateMockApiDefinition( + SPLIT_RESOURCE_SCOPE_URI, + EXTENSION_RESOURCE_NAME, + validResourceExtensionsResource, + ), ]); -Scenarios.Azure_ResourceManager_Resources_ExtensionsResources_update = passOnSuccess([ - { - uri: "/subscriptions/:subscriptionId/resourceGroups/:resourceGroup/providers/Azure.ResourceManager.Resources/extensionsResources/:extensionName", - method: "patch", - request: { - params: { - subscriptionId: SUBSCRIPTION_ID_EXPECTED, - resourceGroup: RESOURCE_GROUP_EXPECTED, - extensionName: "extension", - "api-version": "2023-12-01-preview", - }, - body: { - properties: { - description: "valid2", - }, - }, - headers: { - "Content-Type": "application/json", - }, - }, - response: { - status: 200, - body: json({ - ...validResourceGroupExtensionsResource, - properties: { - provisioningState: "Succeeded", - description: "valid2", - }, - }), - }, - kind: "MockApiDefinition", - }, - { - uri: "/subscriptions/:subscriptionId/providers/Azure.ResourceManager.Resources/extensionsResources/:extensionName", +function createExtensionUpdateMockApiDefinition( + resourceUri: string, + extensionName: string, + validResource: any, +): MockApiDefinition { + return { + uri: `${resourceUri}/providers/Azure.ResourceManager.Resources/extensionsResources/${extensionName}`, method: "patch", request: { params: { - subscriptionId: SUBSCRIPTION_ID_EXPECTED, - extensionName: "extension", "api-version": "2023-12-01-preview", }, body: { @@ -363,7 +306,7 @@ Scenarios.Azure_ResourceManager_Resources_ExtensionsResources_update = passOnSuc response: { status: 200, body: json({ - ...validSubscriptionExtensionsResource, + ...validResource, properties: { provisioningState: "Succeeded", description: "valid2", @@ -371,125 +314,41 @@ Scenarios.Azure_ResourceManager_Resources_ExtensionsResources_update = passOnSuc }), }, kind: "MockApiDefinition", - }, - { - uri: "/providers/Azure.ResourceManager.Resources/extensionsResources/:extensionName", - method: "patch", - request: { - params: { - extensionName: "extension", - "api-version": "2023-12-01-preview", - }, - body: { - properties: { - description: "valid2", - }, - }, - headers: { - "Content-Type": "application/json", - }, - }, - response: { - status: 200, - body: json({ - ...validTenantExtensionsResource, - properties: { - provisioningState: "Succeeded", - description: "valid2", - }, - }), - }, - kind: "MockApiDefinition", - }, - { - uri: "/subscriptions/:subscriptionId/resourceGroups/:resourceGroup/providers/Azure.ResourceManager.Resources/topLevelTrackedResources/:topLevelResourceName/providers/Azure.ResourceManager.Resources/extensionsResources/:extensionName", - method: "patch", - request: { - params: { - subscriptionId: SUBSCRIPTION_ID_EXPECTED, - resourceGroup: RESOURCE_GROUP_EXPECTED, - topLevelResourceName: "top", - extensionName: "extension", - "api-version": "2023-12-01-preview", - }, - body: { - properties: { - description: "valid2", - }, - }, - headers: { - "Content-Type": "application/json", - }, - }, - response: { - status: 200, - body: json({ - ...validResourceExtensionsResource, - properties: { - provisioningState: "Succeeded", - description: "valid2", - }, - }), - }, - kind: "MockApiDefinition", - }, + }; +} + +Scenarios.Azure_ResourceManager_Resources_ExtensionsResources_update = passOnSuccess([ + createExtensionUpdateMockApiDefinition( + RESOURCE_GROUP_SCOPE_URI, + EXTENSION_RESOURCE_NAME, + validResourceGroupExtensionsResource, + ), + createExtensionUpdateMockApiDefinition( + SUBSCRIPTION_SCOPE_URI, + EXTENSION_RESOURCE_NAME, + validSubscriptionExtensionsResource, + ), + createExtensionUpdateMockApiDefinition( + TENANT_SCOPE_URI, + EXTENSION_RESOURCE_NAME, + validTenantExtensionsResource, + ), + createExtensionUpdateMockApiDefinition( + RESOURCE_SCOPE_URI, + EXTENSION_RESOURCE_NAME, + validResourceExtensionsResource, + ), ]); -Scenarios.Azure_ResourceManager_Resources_ExtensionsResources_delete = passOnSuccess([ - { - uri: "/subscriptions/:subscriptionId/resourceGroups/:resourceGroup/providers/Azure.ResourceManager.Resources/extensionsResources/:extensionName", - method: "delete", - request: { - params: { - subscriptionId: SUBSCRIPTION_ID_EXPECTED, - resourceGroup: RESOURCE_GROUP_EXPECTED, - extensionName: "extension", - "api-version": "2023-12-01-preview", - }, - }, - response: { - status: 204, - }, - kind: "MockApiDefinition", - }, - { - uri: "/subscriptions/:subscriptionId/providers/Azure.ResourceManager.Resources/extensionsResources/:extensionName", - method: "delete", - request: { - params: { - subscriptionId: SUBSCRIPTION_ID_EXPECTED, - extensionName: "extension", - "api-version": "2023-12-01-preview", - }, - }, - response: { - status: 204, - }, - kind: "MockApiDefinition", - }, - { - uri: "/providers/Azure.ResourceManager.Resources/extensionsResources/:extensionName", - method: "delete", - request: { - params: { - extensionName: "extension", - "api-version": "2023-12-01-preview", - }, - }, - response: { - status: 204, - }, - kind: "MockApiDefinition", - }, - { - uri: "/subscriptions/:subscriptionId/resourceGroups/:resourceGroup/providers/Azure.ResourceManager.Resources/topLevelTrackedResources/:topLevelResourceName/providers/Azure.ResourceManager.Resources/extensionsResources/:extensionName", +function createExtensionDeleteMockApiDefinition( + resourceUri: string, + extensionName: string, +): MockApiDefinition { + return { + uri: `/${resourceUri}/providers/Azure.ResourceManager.Resources/extensionsResources/${extensionName}`, method: "delete", request: { params: { - subscriptionId: SUBSCRIPTION_ID_EXPECTED, - resourceGroup: RESOURCE_GROUP_EXPECTED, - topLevelResourceName: "top", - extensionName: "extension", "api-version": "2023-12-01-preview", }, }, @@ -497,47 +356,25 @@ Scenarios.Azure_ResourceManager_Resources_ExtensionsResources_delete = passOnSuc status: 204, }, kind: "MockApiDefinition", - }, + }; +} + +Scenarios.Azure_ResourceManager_Resources_ExtensionsResources_delete = passOnSuccess([ + createExtensionDeleteMockApiDefinition(RESOURCE_GROUP_SCOPE_URI, EXTENSION_RESOURCE_NAME), + createExtensionDeleteMockApiDefinition(SPLIT_RESOURCE_GROUP_SCOPE_URI, EXTENSION_RESOURCE_NAME), + createExtensionDeleteMockApiDefinition(SUBSCRIPTION_SCOPE_URI, EXTENSION_RESOURCE_NAME), + createExtensionDeleteMockApiDefinition(SPLIT_SUBSCRIPTION_SCOPE_URI, EXTENSION_RESOURCE_NAME), + createExtensionDeleteMockApiDefinition(TENANT_SCOPE_URI, EXTENSION_RESOURCE_NAME), + createExtensionDeleteMockApiDefinition(RESOURCE_SCOPE_URI, EXTENSION_RESOURCE_NAME), + createExtensionDeleteMockApiDefinition(SPLIT_RESOURCE_SCOPE_URI, EXTENSION_RESOURCE_NAME), ]); -Scenarios.Azure_ResourceManager_Resources_ExtensionsResources_listByScope = passOnSuccess([ - { - uri: "/subscriptions/:subscriptionId/resourceGroups/:resourceGroup/providers/Azure.ResourceManager.Resources/extensionsResources", - method: "get", - request: { - params: { - subscriptionId: SUBSCRIPTION_ID_EXPECTED, - resourceGroup: RESOURCE_GROUP_EXPECTED, - "api-version": "2023-12-01-preview", - }, - }, - response: { - status: 200, - body: json({ - value: [validResourceGroupExtensionsResource], - }), - }, - kind: "MockApiDefinition", - }, - { - uri: "/subscriptions/:subscriptionId/providers/Azure.ResourceManager.Resources/extensionsResources", - method: "get", - request: { - params: { - subscriptionId: SUBSCRIPTION_ID_EXPECTED, - "api-version": "2023-12-01-preview", - }, - }, - response: { - status: 200, - body: json({ - value: [validSubscriptionExtensionsResource], - }), - }, - kind: "MockApiDefinition", - }, - { - uri: "/providers/Azure.ResourceManager.Resources/extensionsResources", +function createExtensionListByScopeMockApiDefinition( + resourceUri: string, + validResource: any, +): MockApiDefinition { + return { + uri: `/${resourceUri}/providers/Azure.ResourceManager.Resources/extensionsResources`, method: "get", request: { params: { @@ -547,30 +384,36 @@ Scenarios.Azure_ResourceManager_Resources_ExtensionsResources_listByScope = pass response: { status: 200, body: json({ - value: [validTenantExtensionsResource], + value: [validResource], }), }, kind: "MockApiDefinition", - }, - { - uri: "/subscriptions/:subscriptionId/resourceGroups/:resourceGroup/providers/Azure.ResourceManager.Resources/topLevelTrackedResources/:topLevelResourceName/providers/Azure.ResourceManager.Resources/extensionsResources", - method: "get", - request: { - params: { - subscriptionId: SUBSCRIPTION_ID_EXPECTED, - resourceGroup: RESOURCE_GROUP_EXPECTED, - topLevelResourceName: "top", - "api-version": "2023-12-01-preview", - }, - }, - response: { - status: 200, - body: json({ - value: [validResourceExtensionsResource], - }), - }, - kind: "MockApiDefinition", - }, + }; +} + +Scenarios.Azure_ResourceManager_Resources_ExtensionsResources_listByScope = passOnSuccess([ + createExtensionListByScopeMockApiDefinition( + RESOURCE_GROUP_SCOPE_URI, + validResourceGroupExtensionsResource, + ), + createExtensionListByScopeMockApiDefinition( + SPLIT_RESOURCE_GROUP_SCOPE_URI, + validResourceGroupExtensionsResource, + ), + createExtensionListByScopeMockApiDefinition( + SUBSCRIPTION_SCOPE_URI, + validSubscriptionExtensionsResource, + ), + createExtensionListByScopeMockApiDefinition( + SPLIT_SUBSCRIPTION_SCOPE_URI, + validSubscriptionExtensionsResource, + ), + createExtensionListByScopeMockApiDefinition(TENANT_SCOPE_URI, validTenantExtensionsResource), + createExtensionListByScopeMockApiDefinition(RESOURCE_SCOPE_URI, validResourceExtensionsResource), + createExtensionListByScopeMockApiDefinition( + SPLIT_RESOURCE_SCOPE_URI, + validResourceExtensionsResource, + ), ]); // location resource