fix: reconcile server deployments across repository views
ForgeFlow quality gate / quality (push) Canceled after 0s

This commit is contained in:
NuklearRabbit
2026-08-01 18:57:55 +02:00
parent 958d5b84d3
commit f7d6bc374f
11 changed files with 86 additions and 32 deletions
+2
View File
@@ -142,6 +142,8 @@ test("deployment inventory supports dense workloads without ambiguous blank card
const repositoryLink = page.locator('[data-action="open-deployment-link"]');
if (await repositoryLink.count()) {
await repositoryLink.first().click();
await expect(page.locator('.repo-row.active')).toHaveAttribute("data-deployment-count", /^[1-9]/);
await expect(page.locator('.repo-row.active .deployment-badge')).toBeVisible();
await expect(page.locator('.tab[data-action="repo-tab"][data-tab="deployments"]')).toHaveClass(/active/);
await expect(page.locator(".repository-workloads")).toBeVisible();
await expect(page.locator(".repository-workload-row").first()).toContainText("Repository linked");
+7 -9
View File
@@ -168,7 +168,7 @@ test("server workload inventory links running containers to exact Gitea checkout
);
});
test("server discovery is read-only and explicit reconciliation adopts a verified deployment", async () => {
test("low-level inventory scan is read-only and user discovery auto-links exact provenance", async () => {
const b64 = (value) => Buffer.from(value).toString("base64");
const sha = "b".repeat(40);
const container = {
@@ -218,17 +218,15 @@ test("server discovery is read-only and explicit reconciliation adopts a verifie
sshUrl: "git@gitea.itworx.tech:Jens/Portfolio.git",
},
];
const discovery = await service.discoverServerWorkloads("unraid", repositories);
assert.equal(discovery.adopted, 0);
assert.equal(discovery.verified, 0);
const readOnlyDiscovery = await service.scanServerInventory("unraid", repositories);
assert.equal(readOnlyDiscovery.adopted, 0);
assert.equal(readOnlyDiscovery.verified, 0);
assert.equal(profiles.length, 0);
assert.equal(states.size, 0);
const preview = await service.planServerInventoryReconciliation("unraid", repositories, { autoLink: true });
assert.equal(preview.plan.summary.additions, 1);
const result = await service.reconcileServerInventory("unraid", repositories, { autoLink: true, expectedPlanId: preview.plan.id });
assert.equal(result.adopted, 1);
assert.equal(result.verified, 1);
const discovery = await service.discoverServerWorkloads("unraid", repositories);
assert.equal(discovery.adopted, 1);
assert.equal(discovery.verified, 1);
assert.equal(profiles[0].containerName, "Portfolio");
assert.equal(profiles[0].adoptedFromServer, true);
assert.equal(states.get(profiles[0].id).matchesGitea, true);