@apistudio/apim-cli
Version:
CLI for API Management Products
66 lines (62 loc) • 1.7 kB
text/typescript
import {
BaseAsset,
RefObj,
TestAsset,
TestSpec,
} from "../../../model/assets-model.js";
import {
checkForNullOrUndefined,
isNullOrUndefined,
} from "../../common/data-helper.js";
import { AssetCacheModel } from "../../../model/asset-cache-model.js";
import { showError } from "./../../common/message-helper.js";
import { KindEnums } from "@apic/api-model/common/StudioEnums.js";
const addAssetRefValuesForTestKind = (
refObjects: RefObj[],
result: AssetCacheModel[],
kind: KindEnums
) => {
if (!isNullOrUndefined(refObjects)) {
refObjects.forEach((refObj) => {
if (!isNullOrUndefined(refObj.$ref)) {
result.push({
kind,
ref: refObj.$ref,
isNewlyAdded: true });
}
});
}
};
const getRefsFromTestAsset = (asset: BaseAsset): AssetCacheModel[] => {
const testAsset = asset as unknown as TestAsset;
const spec: TestSpec = testAsset.spec;
const result: AssetCacheModel[] = [];
try {
checkForNullOrUndefined(testAsset, "Asset is null or undefined");
if (spec.environment?.$ref) {
addAssetRefValuesForTestKind(
[{ $ref: spec.environment.$ref }],
result,
KindEnums.Environment
);
}
if (spec.request) {
spec.request.forEach((request) => {
if (request.assertions) {
if (request.assertions.$ref) {
addAssetRefValuesForTestKind(
[{ $ref: request.assertions.$ref }],
result,
KindEnums.Assertion
);
}
}
});
}
return result;
} catch (error: unknown) {
showError((error as Error).message);
return [];
}
};
export { getRefsFromTestAsset };