From 3253032ea73216e4de359647c2a41bfa876000dd Mon Sep 17 00:00:00 2001 From: Andrea Ceroni Date: Mon, 28 Sep 2026 10:30:35 +0200 Subject: [PATCH] fix(deploy): respect resource group when selecting app Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- src/core/account.spec.ts | 52 ++++++++++++++++++++++++++++++++++++++++ src/core/account.ts | 2 +- 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 src/core/account.spec.ts diff --git a/src/core/account.spec.ts b/src/core/account.spec.ts new file mode 100644 index 000000000..268d26c67 --- /dev/null +++ b/src/core/account.spec.ts @@ -0,0 +1,52 @@ +import { WebSiteManagementClient } from "@azure/arm-appservice"; +import { chooseOrCreateProjectDetails } from "./account.js"; + +const { listStaticSitesByResourceGroup, staticSite } = vi.hoisted(() => ({ + listStaticSitesByResourceGroup: vi.fn(), + staticSite: { + id: "/subscriptions/mock-subscription/resourceGroups/target-rg/providers/Microsoft.Web/staticSites/same-name", + name: "same-name", + provider: "SwaCli", + }, +})); + +vi.mock("@azure/arm-appservice", () => ({ + WebSiteManagementClient: vi.fn(() => ({ + staticSites: { + list: vi.fn(), + listStaticSitesByResourceGroup, + }, + })), +})); + +vi.mock("./prompts.js", () => ({ + chooseProjectName: vi.fn(), + chooseProjectSku: vi.fn(), + chooseStaticSite: vi.fn(), + wouldYouLikeToCreateStaticSite: vi.fn(), + wouldYouLikeToOverrideStaticSite: vi.fn(), +})); + +describe("chooseOrCreateProjectDetails", () => { + beforeEach(() => { + listStaticSitesByResourceGroup.mockReset(); + listStaticSitesByResourceGroup.mockReturnValue( + (async function* () { + yield staticSite; + })(), + ); + }); + + it("looks up a named static site only in the specified resource group", async () => { + const result = await chooseOrCreateProjectDetails( + { appName: "same-name", resourceGroup: "target-rg" }, + {} as never, + "mock-subscription", + false, + ); + + expect(WebSiteManagementClient).toHaveBeenCalledWith(expect.anything(), "mock-subscription"); + expect(listStaticSitesByResourceGroup).toHaveBeenCalledWith("target-rg"); + expect(result).toEqual({ resourceGroup: "target-rg", staticSiteName: "same-name" }); + }); +}); diff --git a/src/core/account.ts b/src/core/account.ts index 2c7f314b5..61266f281 100644 --- a/src/core/account.ts +++ b/src/core/account.ts @@ -215,7 +215,7 @@ async function chooseOrCreateStaticSite( credentialChain: TokenCredential, subscriptionId: string ): Promise { - const staticSites = await listStaticSites(credentialChain, subscriptionId); + const staticSites = await listStaticSites(credentialChain, subscriptionId, options.resourceGroup); // 1- when there are no static sites if (staticSites.length === 0) {