fix(wireguard): очищать подтверждённые объекты при отказе импорта
This commit is contained in:
1 parent
f9980d7d7e
commit
e01454b720
10 files changed
+331
-58
No files matched your search
@@ -229,6 +229,36 @@ test("WireGuard: ошибка проверки .conf сохраняет клие
|
||||
expect(attempts).toBe(1)
|
||||
})
|
||||
|
||||
for (const [state, message] of [
|
||||
["rolled-back", "RouterOS отклонил импорт. Созданные этим запросом объекты удалены; исправьте конфигурацию и повторите"],
|
||||
["needs-review", "Не удалось подтвердить результат импорта или очистки. Проверьте интерфейс на роутере перед повтором"],
|
||||
["applied", "Конфигурация применена, но ревизия не сохранена. Обновите данные перед повтором"],
|
||||
] as const) {
|
||||
test(`WireGuard: импорт ${state} сохраняет форму и не повторяет запрос автоматически`, async ({ page }) => {
|
||||
await setup(page, "/wireguard?server=1")
|
||||
const content = "/interface wireguard add name=wg-retry"
|
||||
let attempts = 0
|
||||
await page.route("**/api/wireguard/import", route => {
|
||||
attempts++
|
||||
if (attempts === 1) return route.fulfill({ status: 502, json: { error: message, state } })
|
||||
return route.fulfill({ json: { dryRun: false, preview: { format: "rsc", interface: { name: "wg-retry" }, peers: [] }, applied: { interfaceName: "wg-retry", peersCreated: 0 } } })
|
||||
})
|
||||
await page.getByRole("button", { name: "Импорт", exact: true }).click()
|
||||
const dialog = page.getByRole("dialog", { name: "Импорт конфига WireGuard" })
|
||||
await dialog.getByLabel("Конфигурация WireGuard", { exact: true }).fill(content)
|
||||
await dialog.getByRole("button", { name: "Применить на роутер" }).click()
|
||||
await expect(dialog.getByRole("alert")).toContainText(message)
|
||||
await expect(dialog.getByLabel("Конфигурация WireGuard", { exact: true })).toHaveValue(content)
|
||||
await expect(dialog.getByLabel("Сервер", { exact: true })).toHaveValue("1")
|
||||
expect(attempts).toBe(1)
|
||||
if (state === "rolled-back") {
|
||||
await dialog.getByRole("button", { name: "Применить на роутер" }).click()
|
||||
await expect(dialog).toHaveCount(0)
|
||||
expect(attempts).toBe(2)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
test("WireGuard: импорт удерживает форму до ответа и разрешает повтор", async ({ page }) => {
|
||||
await setup(page, "/wireguard?server=1")
|
||||
let attempts = 0
|
||||
|
||||
Reference in new issue
Block a user