fix(ui): подтверждать GRE перед тестом пропускной способности
This commit is contained in:
1 parent
b856215c03
commit
155dfc5716
4 files changed
+75
-18
No files matched your search
@@ -62,3 +62,27 @@ for(const permission of ["mm:servers:read","mm:servers:write"])test("Диагн
|
||||
else{await expect(run(page)).toBeEnabled();await run(page).click();await expect(page.getByText("РАЗРЕШЕНО",{exact:true})).toBeVisible();expect(posts).toBe(1)}
|
||||
expect(greReads).toBe(0);await page.getByRole("button",{name:/BW-тест/}).click();await expect(page.getByRole("status").filter({hasText:"Для выбора GRE требуется mm:filters:read"})).toBeVisible();await expect(run(page)).toBeDisabled()
|
||||
})
|
||||
|
||||
const tunnel={id:"*1",serverId:"1",name:"GRE-Тест",localAddress:"192.0.2.1",remoteAddress:"192.0.2.2",localInnerIp:"10.0.0.1",remoteInnerIp:"10.0.0.2",poolId:"",ipsec:null,mtu:1476,keepaliveInterval:10,keepaliveRetries:3,dscp:"inherit",clampTcpMss:true,allowFastPath:false,comment:"",enabled:true,status:"up"}
|
||||
for(const kind of ["API","malformed","foreign"])test("Диагностика: GRE "+kind+" отличается от пустого списка",async({page})=>{
|
||||
let fail=true;await page.route("**/api/filters/gre-tunnels?*",r=>r.fulfill(fail?(kind==="API"?{status:503,json:{error:"GRE отказ"}}:{json:{tunnels:kind==="foreign"?[{...tunnel,serverId:"2"}]:[{}]}}):{json:{tunnels:[tunnel]}}))
|
||||
await page.route("**/api/servers/1/probes/run",r=>r.fulfill({json:{output:"BW подтверждён"}}))
|
||||
await page.goto("/probes");await page.getByRole("button",{name:/BW-тест/}).click();await expect(page.getByRole("alert",{name:"GRE диагностики"})).toBeVisible();await expect(run(page)).toBeDisabled()
|
||||
fail=false;await page.getByRole("button",{name:"Повторить GRE"}).click();await expect(run(page)).toBeEnabled();await run(page).click();await expect(page.getByText("BW подтверждён",{exact:true})).toBeVisible()
|
||||
})
|
||||
test("Диагностика: подтверждённый пустой GRE каталог",async({page})=>{
|
||||
await page.goto("/probes");await page.getByRole("button",{name:/BW-тест/}).click();await expect(page.getByRole("status").filter({hasText:"У выбранного устройства нет GRE-туннелей"})).toBeVisible();await expect(page.getByRole("alert",{name:"GRE диагностики"})).toHaveCount(0);await expect(run(page)).toBeDisabled()
|
||||
})
|
||||
|
||||
for(const fails of [false,true])test("Диагностика: поздний GRE прежнего устройства "+fails,async({page})=>{
|
||||
let started=false,completed=false,release!:()=>void;const gate=new Promise<void>(r=>release=r)
|
||||
await page.route("**/api/servers",r=>r.fulfill({json:[...devices,{...devices[0],id:2,name:"Второй",host:"192.0.2.2"}]}))
|
||||
await page.route("**/api/filters/gre-tunnels?*",async r=>{if(new URL(r.request().url()).searchParams.get("serverId")==="2")return r.fulfill({json:{tunnels:[]}});started=true;await gate;try{await r.fulfill(fails?{status:503,json:{error:"СТАРЫЙ GRE ОТКАЗ"}}:{json:{tunnels:[tunnel]}})}catch{}finally{completed=true}})
|
||||
await page.goto("/probes");await expect.poll(()=>started).toBe(true);await page.getByRole("option",{name:/Второй/}).click();await page.getByRole("button",{name:/BW-тест/}).click();await expect(page.getByRole("status").filter({hasText:"У выбранного устройства нет GRE-туннелей"})).toBeVisible();release();await expect.poll(()=>completed).toBe(true)
|
||||
await expect(page.getByRole("alert",{name:"GRE диагностики"})).toHaveCount(0);await expect(page.getByText("GRE-Тест",{exact:true})).toHaveCount(0);await expect(run(page)).toBeDisabled()
|
||||
})
|
||||
|
||||
for(const invalid of ["disabled","no-address"])test("Диагностика: BW недоступен для GRE "+invalid,async({page})=>{
|
||||
let posts=0;await page.route("**/api/filters/gre-tunnels?*",r=>r.fulfill({json:{tunnels:[{...tunnel,enabled:invalid!=="disabled",remoteAddress:invalid==="no-address"?"":tunnel.remoteAddress}]}}));await page.route("**/api/servers/1/probes/run",r=>{posts++;return r.fulfill({json:{output:"НЕ ДОЛЖНО ВЫПОЛНЯТЬСЯ"}})})
|
||||
await page.goto("/probes");await page.getByRole("button",{name:/BW-тест/}).click();await expect(page.getByRole("status").filter({hasText:"Выберите включённый GRE с адресом назначения"})).toBeVisible();await expect(run(page)).toBeDisabled();expect(posts).toBe(0)
|
||||
})
|
||||
Reference in new issue
Block a user