fix(network): согласовать GRE PSK с FastPath и экспортом
This commit is contained in:
1 parent
7d86af7e8b
commit
1be4a490b5
20 files changed
+1460
-19
No files matched your search
@@ -0,0 +1,15 @@
|
||||
import {test,expect} from '@playwright/test'
|
||||
for(const width of [1440,320])test(`GRE: несовместимый снимок помечает параметры экспорта ${width}`,async({page})=>{
|
||||
let writes=0
|
||||
const token=[Buffer.from('{}').toString('base64url'),Buffer.from(JSON.stringify({sub:'own209',apps:['mm'],permissions:['mm:dashboard:read','mm:servers:read','mm:network:read'],exp:Math.floor(Date.now()/1000)+600})).toString('base64url'),'fixture'].join('.')
|
||||
await page.addInitScript(t=>localStorage.setItem('mmapp_token',t),token)
|
||||
const tunnel={id:'*1',serverId:'1',name:'own209-gre',localAddress:'192.0.2.1',remoteAddress:'192.0.2.2',localInnerIp:'10.209.0.1/30',remoteInnerIp:'10.209.0.2/30',poolId:'live',ipsec:{secret:''},mtu:1476,keepaliveInterval:0,keepaliveRetries:0,dscp:'inherit',clampTcpMss:true,allowFastPath:true,comment:'',enabled:true,status:'up'}
|
||||
await page.route('**/health',r=>r.fulfill({json:{ok:true}}))
|
||||
await page.route('**/api/**',r=>{if(r.request().method()!=='GET')writes++;const p=new URL(r.request().url()).pathname;return r.fulfill({json:p==='/api/auth/config'?{required:true}:p==='/api/servers'?[{id:1,name:'Own209 router',host:'192.0.2.1',enabled:true,country:'RU'}]:p==='/api/gre/tunnels'?{tunnels:[tunnel]}:{}})})
|
||||
await page.setViewportSize({width,height:1000});await page.goto('/gre?server=1')
|
||||
const row=page.getByRole('row').filter({hasText:'own209-gre'});await expect(row).toContainText('IPsec');await expect(row).not.toContainText('Открытый')
|
||||
await expect(page.getByRole('button',{name:'Добавить туннель',exact:true})).toBeDisabled()
|
||||
await page.getByRole('button',{name:'Просмотр кода: own209-gre',exact:true}).click()
|
||||
const sheet=page.getByRole('dialog');await expect(sheet).toContainText('Шаблон: ключ IPsec скрыт');await expect(sheet.locator('pre')).toContainText('<IPSEC_PSK>');await expect(sheet.locator('pre')).not.toContainText('ipsec-secret=""')
|
||||
await expect(sheet).toContainText('задайте допустимый интервал keepalive');await expect(sheet.locator('pre')).toContainText('<KEEPALIVE_SECONDS>');await expect(sheet.locator('pre')).toContainText('<ALLOW_FAST_PATH>');expect(writes).toBe(0);expect(await page.evaluate(()=>document.documentElement.scrollWidth<=innerWidth+1)).toBe(true)
|
||||
})
|
||||
@@ -0,0 +1,6 @@
|
||||
import {test,expect} from '@playwright/test'
|
||||
for(const width of [1440,320])test(`GRE: IPsec выключает FastPath перед PATCH ${width}`,async({page})=>{
|
||||
let writes=0;const tunnel={id:'*1',serverId:'1',name:'own212-gre',localAddress:'192.0.2.1',remoteAddress:'192.0.2.2',localInnerIp:'',remoteInnerIp:'',poolId:'live',ipsec:null,mtu:1476,keepaliveInterval:10,keepaliveRetries:3,dscp:'inherit',clampTcpMss:true,allowFastPath:true,comment:'',enabled:false,status:'down'}
|
||||
await page.route('**/health',r=>r.fulfill({json:{ok:true}}));await page.route('**/api/**',r=>{if(r.request().method()==='PATCH'){writes++;expect(r.request().postDataJSON()).toMatchObject({ipsecSecret:'own212-synthetic-psk',allowFastPath:false});return r.fulfill({json:{ok:true}})}const p=new URL(r.request().url()).pathname;return r.fulfill({json:p==='/api/auth/config'?{required:false}:p==='/api/servers'?[{id:1,name:'Own212 router',host:'192.0.2.1',enabled:true,country:'RU'}]:p==='/api/gre/tunnels'?{tunnels:[tunnel]}:{}})})
|
||||
await page.setViewportSize({width,height:1000});await page.goto('/gre?server=1');await page.getByRole('button',{name:'Действия: own212-gre',exact:true}).click();await page.getByRole('menuitem',{name:'Редактировать',exact:true}).click();const form=page.getByRole('dialog');await form.getByRole('button',{name:'Дополнительно',exact:true}).click();await expect(form.getByRole('switch',{name:'Allow Fast Path',exact:true})).toBeChecked();await form.getByRole('switch',{name:'Включить IPsec',exact:true}).click();await expect(form.getByRole('switch',{name:'Allow Fast Path',exact:true})).not.toBeChecked();await expect(form.getByRole('switch',{name:'Allow Fast Path',exact:true})).toBeDisabled();await form.getByLabel('Пароль (PSK)').fill('own212-synthetic-psk');await form.getByRole('button',{name:'Сохранить',exact:true}).click();await expect(form).toHaveCount(0);expect(writes).toBe(1)
|
||||
})
|
||||
Reference in new issue
Block a user