Przeglądaj źródła

test: 补充登录密码记忆回归

main
leiyun 2 tygodni temu
rodzic
commit
a507126721
1 zmienionych plików z 63 dodań i 0 usunięć
  1. +63
    -0
      tests/login-identity-preference.spec.ts

+ 63
- 0
tests/login-identity-preference.spec.ts Wyświetl plik

@@ -41,6 +41,16 @@ async function mockLoginDependencies(page: Page) {
const path = new URL(route.request().url()).pathname const path = new URL(route.request().url()).pathname
if (path.endsWith('/auth/login-context')) return fulfill(route, loginContext) if (path.endsWith('/auth/login-context')) return fulfill(route, loginContext)
if (path.endsWith('/auth/login-identities')) return fulfill(route, identities) if (path.endsWith('/auth/login-identities')) return fulfill(route, identities)
if (path.endsWith('/auth/login')) {
return fulfill(route, { accessToken: 'remember-access-token', refreshToken: 'remember-refresh-token', expiresIn: 3600 })
}
if (path.endsWith('/auth/me')) {
return fulfill(route, {
user: { id: '1', username: 'admin.saved', displayName: '系统管理员', mustChangePassword: true },
activeRoleId: '1', roles: [{ id: '1', code: 'admin', name: '管理员', enabled: true }],
permissions: [], authorizationMode: 'SINGLE_ACTIVE',
})
}
if (path.endsWith('/system-config/public')) return fulfill(route, {}) if (path.endsWith('/system-config/public')) return fulfill(route, {})
return fulfill(route, {}) return fulfill(route, {})
}) })
@@ -69,6 +79,59 @@ test('登录页恢复上次成功登录的部门和账号但不保存密码', as
await captureScreenshot(page, testInfo, 'restored-login-identity-without-password') await captureScreenshot(page, testInfo, 'restored-login-identity-without-password')
}) })


test('按登录身份分别恢复记住的账号和密码', async ({ page }) => {
await page.addInitScript(() => {
window.localStorage.setItem('ai-person:web:login-identity-preference:v1', JSON.stringify({
lastRoleCode: 'teacher',
selections: {
teacher: {
departmentId: '110', userId: '402', username: '',
password: 'Teacher-Remembered-1', remember: true,
},
admin: {
departmentId: '', userId: '', username: 'admin.remembered',
password: 'Admin-Remembered-2', remember: true,
},
},
}))
})
await mockLoginDependencies(page)

await page.goto('/login')

await expect(page.locator('.login-identity-picker')).toContainText('杜晴')
await expect(page.locator('input[name="password"]')).toHaveValue('Teacher-Remembered-1')
await expect(page.locator('input[name="rememberMe"]')).toBeChecked()

await page.locator('[data-role-code="admin"]').click()
await expect(page.locator('input[name="username"]')).toHaveValue('admin.remembered')
await expect(page.locator('input[name="password"]')).toHaveValue('Admin-Remembered-2')
await expect(page.locator('input[name="rememberMe"]')).toBeChecked()

await page.locator('[data-role-code="teacher"]').click()
await expect(page.locator('.login-identity-picker')).toContainText('杜晴')
await expect(page.locator('input[name="password"]')).toHaveValue('Teacher-Remembered-1')
})

test('成功登录后按勾选状态保存账号密码', async ({ page }) => {
await mockLoginDependencies(page)
await page.goto('/login')
await page.locator('[data-role-code="admin"]').click()

await page.locator('input[name="username"]').fill('admin.saved')
await page.locator('input[name="password"]').fill('Saved-Password-3')
await page.locator('input[name="rememberMe"]').check()
await page.getByRole('button', { name: '登录' }).click()

await expect.poll(() => page.evaluate(() => {
const raw = window.localStorage.getItem('ai-person:web:login-identity-preference:v1') || '{}'
return JSON.parse(raw).selections?.admin
})).toEqual({
departmentId: '', userId: '', username: 'admin.saved',
password: 'Saved-Password-3', remember: true,
})
})

test('已删除的部门或账号不会被本地偏好错误回填', async ({ page }) => { test('已删除的部门或账号不会被本地偏好错误回填', async ({ page }) => {
await page.addInitScript(() => { await page.addInitScript(() => {
window.localStorage.setItem('ai-person:web:login-identity-preference:v1', JSON.stringify({ window.localStorage.setItem('ai-person:web:login-identity-preference:v1', JSON.stringify({


Ładowanie…
Anuluj
Zapisz