Files
MikrotikManager/tests/e2e/gre-secrets.spec.ts
T

16 lines
2.0 KiB
TypeScript

import {test,expect} from '@playwright/test'
for(const width of [1440,320])test(`GRE: скрытый PSK сохраняет состояние IPsec и помечает экспорт ${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:10,keepaliveRetries:3,dscp:'inherit',clampTcpMss:true,allowFastPath:false,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=""')
expect(writes).toBe(0);expect(await page.evaluate(()=>document.documentElement.scrollWidth<=innerWidth+1)).toBe(true)
})