fix(ospf): подтвердить права и результат оптимизации на RouterOS

This commit is contained in:
Denozordec committed 2026-10-09 20:40:24 +07:00
1 parent 3bfd4ae6cf
commit 36c6a21ca5
19 files changed
+1069 -15

No files matched your search

+27
View File
@@ -69,3 +69,30 @@ test("OSPF: read-права не разрешают оптимизацию ус
await expect(page.getByRole("button", { name: "Оптимизировать OSPF", exact: true })).toBeDisabled()
expect(writes).toBe(0)
})
for (const permission of ["mm:network:write", "mm:servers:write"]) {
test("OSPF: право оптимизации совпадает с backend — " + permission, async ({ page }) => {
await page.setViewportSize({ width: 320, height: 1000 })
const payload = { sub: "test", apps: ["mm"], permissions: ["mm:network:read", "mm:servers:read", permission], exp: 4102444800 }
await page.addInitScript(value => localStorage.setItem("mmapp_token", "test." + btoa(JSON.stringify(value)) + ".test"), payload)
let writes = 0
await page.route("**/health", r => r.fulfill({ json: { ok: true } }))
await page.route("**/api/**", r => {
const path = new URL(r.request().url()).pathname
if (path === "/api/servers/1/ospf/optimize") { writes++; return r.fulfill({ json: result }) }
return r.fulfill({ json: path === "/api/auth/config" ? { required: true } : path === "/api/servers" ? [device] : path === "/api/ospf/catalog" ? catalog : {} })
})
await page.goto("/ospf?server=1&tab=interfaces")
const button = page.getByRole("button", { name: "Оптимизировать OSPF", exact: true })
if (permission === "mm:network:write") {
await expect(button).toBeEnabled(); await button.click()
await expect.poll(() => writes).toBe(1)
await expect(page.getByText("API подтвердил оптимизацию OSPF: 1 интерфейсов", { exact: true })).toBeVisible()
} else {
await expect(button).toBeDisabled()
await button.evaluate(el => (el as HTMLButtonElement).click())
expect(writes).toBe(0)
}
expect(await page.evaluate(() => document.documentElement.scrollWidth <= innerWidth)).toBe(true)
})
}