119 строки
4.5 KiB
TypeScript
119 строки
4.5 KiB
TypeScript
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// Licensed under the MIT License. See License.txt in the project root for license information.
|
|
|
|
import assert from "assert";
|
|
import * as utils from "../lib/util/utils";
|
|
|
|
describe("Utility functions", () => {
|
|
describe("Get Provider", () => {
|
|
it("should throw on empty", () => {
|
|
assert.throws(() => {
|
|
utils.getProvider("");
|
|
});
|
|
});
|
|
it("should throw null", () => {
|
|
assert.throws(() => {
|
|
utils.getProvider(null);
|
|
});
|
|
});
|
|
it("should throw undefined", () => {
|
|
assert.throws(() => {
|
|
utils.getProvider();
|
|
});
|
|
});
|
|
it("should return Microsoft.Resources", () => {
|
|
const path =
|
|
"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/" +
|
|
"Microsoft.Resources/{parentResourcePath}/{resourceType}/{resourceName}";
|
|
const provider = utils.getProvider(path);
|
|
assert.strictEqual(provider, "Microsoft.Resources");
|
|
});
|
|
it("should return undefined", () => {
|
|
const path = "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/";
|
|
const provider = utils.getProvider(path);
|
|
assert.strictEqual(provider, undefined);
|
|
});
|
|
it("should return Microsoft.Authorization", () => {
|
|
const path =
|
|
"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/" +
|
|
"Microsoft.Resources/{parentResourcePath}/{resourceType}/{resourceName}/providers/" +
|
|
"Microsoft.Authorization/roleAssignments";
|
|
const provider = utils.getProvider(path);
|
|
assert.strictEqual(provider, "Microsoft.Authorization");
|
|
});
|
|
});
|
|
|
|
describe("Get value by json pointer", () => {
|
|
const resp = {
|
|
body: {
|
|
sku: {
|
|
sku: "standard",
|
|
},
|
|
properties: {
|
|
value: "kkk",
|
|
arrayValue: ["abc", "def"],
|
|
},
|
|
},
|
|
};
|
|
it("should return expected value", () => {
|
|
const jsonPointer = "/body/properties/value";
|
|
const res = utils.getValueByJsonPointer(resp, jsonPointer);
|
|
expect(res).toBe("kkk");
|
|
|
|
const secondArrayItemJsonPointer = "/body/properties/arrayValue/1";
|
|
const arrayItem = utils.getValueByJsonPointer(resp, secondArrayItemJsonPointer);
|
|
expect(arrayItem).toBe("def");
|
|
});
|
|
|
|
it("should throw error when the jsonPointer is invalid", () => {
|
|
const t = () => {
|
|
const jsonPointer = "/body/unknown";
|
|
utils.getValueByJsonPointer(resp, jsonPointer);
|
|
};
|
|
expect(t).toThrow("Invalid reference token: unknown");
|
|
});
|
|
});
|
|
|
|
describe("Get swagger path by object key&value", () => {
|
|
const key = "operationId";
|
|
const value = "ConfigurationStores_List";
|
|
const spec = {
|
|
swagger: "2.0",
|
|
paths: {
|
|
"/subscriptions/{subscriptionId}/providers/Microsoft.AppConfiguration/configurationStores":
|
|
{
|
|
get: {
|
|
description: "Lists the configuration stores for a given resource group.",
|
|
operationId: "ConfigurationStores_List",
|
|
},
|
|
},
|
|
"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppConfiguration/configurationStores":
|
|
{
|
|
get: {
|
|
description: "Lists the configuration stores for a given resource group.",
|
|
operationId: "ConfigurationStores_ListByResourceGroup",
|
|
},
|
|
},
|
|
"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppConfiguration/configurationStores/{configStoreName}":
|
|
{
|
|
put: {
|
|
description: "Creates a configuration store with the specified parameters.",
|
|
operationId: "ConfigurationStores_Create",
|
|
},
|
|
},
|
|
},
|
|
};
|
|
|
|
const paths = utils.findPathsToKey({ key, obj: spec });
|
|
expect(paths).toEqual([
|
|
".paths['/subscriptions/{subscriptionId}/providers/Microsoft.AppConfiguration/configurationStores'].get.operationId",
|
|
".paths['/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppConfiguration/configurationStores'].get.operationId",
|
|
".paths['/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppConfiguration/configurationStores/{configStoreName}'].put.operationId",
|
|
]);
|
|
const path = utils.findPathToValue(paths, spec, value);
|
|
expect(path).toEqual([
|
|
".paths['/subscriptions/{subscriptionId}/providers/Microsoft.AppConfiguration/configurationStores'].get.operationId",
|
|
]);
|
|
});
|
|
});
|