fix(api): отклонять несогласованные объекты IPsec и VXLAN
This commit is contained in:
1 parent
0e0f98e0f4
commit
d112935c73
6 files changed
+31
-7
No files matched your search
@@ -5,7 +5,7 @@ const client = (id: string, name = "Клиент " + id) => ({ id: id + "-*1", r
|
||||
const servers = [1, 2].map(id => ({ id, name: "Роутер " + id, host: "192.0.2." + id, enabled: true, country: "RU", type: "exit-node", status: "online" }))
|
||||
const full = { servers: [summary("1"), summary("2")], clients: [client("1"), client("2")] }
|
||||
|
||||
for (const broken of ["http", "payload", "duplicate", "conflict"]) {
|
||||
for (const broken of ["http", "payload", "duplicate", "conflict", "peer-context", "pool-context", "blank-failure"]) {
|
||||
test(`IPsec: неизвестное начало и сохранение данных при ${broken}`, async ({ page }) => {
|
||||
let phase = 0
|
||||
await page.route("**/health", r => r.fulfill({ json: { ok: true } }))
|
||||
@@ -17,6 +17,9 @@ for (const broken of ["http", "payload", "duplicate", "conflict"]) {
|
||||
return broken === "http" ? r.fulfill({ status: 503, json: { error: "Повторный отказ IPsec" } })
|
||||
: r.fulfill({ json: broken === "payload" ? { servers: [], clients: [{}] }
|
||||
: broken === "duplicate" ? { ...full, clients: [client("1"), client("1")] }
|
||||
: broken === "peer-context" ? { ...full, servers: [{ ...summary("1"), peers: [{ id: "1-*p1", rosId: "*p1", serverId: "2", serverName: "Чужой роутер", name: "peer", managed: true, disabled: false }] }, summary("2")] }
|
||||
: broken === "pool-context" ? { ...full, servers: [{ ...summary("1"), pool: { id: "1-*p1", rosId: "*p1", serverId: "2", name: "pool", ranges: "10.0.0.1-10.0.0.20", managed: true } }, summary("2")] }
|
||||
: broken === "blank-failure" ? { servers: [], clients: [], failures: [{ serverId: "", error: "Неизвестный отказ" }] }
|
||||
: { ...full, failures: [{ serverId: "1", error: "Сбой устройства" }] } })
|
||||
}
|
||||
return r.fulfill({ json: path === "/api/servers" ? servers : path === "/api/auth/config" ? { required: false } : {} })
|
||||
|
||||
@@ -171,6 +171,9 @@ test("VXLAN: повреждённые записи не заменяют пос
|
||||
{ tunnels: [{ ...valid, status: "unknown" }] },
|
||||
{ tunnels: [valid, valid] },
|
||||
{ tunnels: [], failures: [{ serverId: "1", error: null }] },
|
||||
{ tunnels: [valid], failures: [{ serverId: "1", error: "Конфликт" }] },
|
||||
{ tunnels: [], failures: [{ serverId: "1", error: "Сбой" }, { serverId: "1", error: "Повтор" }] },
|
||||
{ tunnels: [{ ...valid, arpMode: "enabled", arpProxy: true }] },
|
||||
]) {
|
||||
control.payload = payload
|
||||
await page.getByRole("button", { name: "Обновить", exact: true }).click()
|
||||
|
||||
Reference in new issue
Block a user