in lib/apiScenario/postmanCollectionRunnerClient.ts [930:1008]
public async sendArmTemplateDeployment(
armEndpoint: string,
armTemplate: ArmTemplate,
_armDeployment: ArmDeployment,
step: StepArmTemplate,
env: VariableEnv
): Promise<void> {
if (this.opts.skipArmCall) return;
const { item, itemGroup } = this.addNewItem(
step.isPrepareStep ? "Prepare" : step.isCleanUpStep ? "CleanUp" : "Scenario",
{
name: step.step,
},
armEndpoint
);
item.request = new Request({
name: step.step,
method: "PUT",
url: "",
body: { mode: "raw" } as RequestBodyDefinition,
});
item.request.url = new Url({
host: this.opts.testProxy ?? armEndpoint,
path: `/subscriptions/:subscriptionId/resourcegroups/:resourceGroupName/providers/Microsoft.Resources/deployments/:deploymentName`,
variable: [
{ key: "subscriptionId", value: `{{subscriptionId}}` },
{ key: "resourceGroupName", value: `{{resourceGroupName}}` },
{ key: "deploymentName", value: `${step.step}` },
],
query: [{ key: "api-version", value: DEFAULT_ARM_API_VERSION }],
});
const body = {
properties: {
mode: "Incremental",
template: convertPostmanFormat(env.resolveObjectValues(armTemplate)),
},
};
for (const outputName of Object.keys(step.armTemplatePayload.outputs || {})) {
env.output(outputName, {
type: "string",
value: `{{${outputName}}}`,
});
}
item.request.body = new RequestBody({
mode: "raw",
raw: JSON.stringify(body, null, 2),
});
item.request.addHeader({ key: "Content-Type", value: "application/json" });
const scriptTypes: PostmanHelper.TestScriptType[] = ["StatusCodeAssertion"];
const postScripts: string[] = [];
PostmanHelper.appendScripts(postScripts, {
name: "response status code assertion.",
types: scriptTypes,
variables: undefined,
});
this.lroPoll(itemGroup!, item, step, armEndpoint, postScripts);
if (postScripts.length > 0) {
// to be improved
PostmanHelper.addEvent(item.events, "test", postScripts);
}
generatePostmanAssertion({ step, type: "armTemplateCall", item: item, opts: this.opts });
const generatedGetScriptTypes: PostmanHelper.TestScriptType[] = ["ExtractARMTemplateOutput"];
const generatedGetOperationItem = this.generateFinalGetItem(
item.name,
armEndpoint,
step,
"put",
generatedGetScriptTypes,
armTemplate
);
itemGroup!.items.add(generatedGetOperationItem);
}