2026-04-07 21:52:32 +08:00
|
|
|
|
import { test, expect } from '../fixtures/auth.fixture'
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* P0: 认证 API 测试
|
|
|
|
|
|
*
|
2026-04-09 21:31:25 +08:00
|
|
|
|
* 测试 LeaiAuthController 的两个接口:
|
2026-04-07 21:52:32 +08:00
|
|
|
|
* - GET /leai-auth/token(iframe 主入口)
|
|
|
|
|
|
* - GET /leai-auth/refresh-token(Token 刷新)
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
const API_BASE = process.env.API_BASE_URL || 'http://localhost:8580/api'
|
|
|
|
|
|
|
|
|
|
|
|
test.describe('乐读派认证 API', () => {
|
|
|
|
|
|
|
|
|
|
|
|
test.describe('GET /leai-auth/token', () => {
|
|
|
|
|
|
test('未登录 — 返回 401', async ({ request }) => {
|
|
|
|
|
|
const resp = await request.get(`${API_BASE}/leai-auth/token`)
|
|
|
|
|
|
expect(resp.status()).toBe(401)
|
|
|
|
|
|
})
|
|
|
|
|
|
|
2026-04-09 21:31:25 +08:00
|
|
|
|
test('已登录 — 返回 token + orgId', async ({ authedApi }) => {
|
2026-04-07 21:52:32 +08:00
|
|
|
|
const resp = await authedApi.get(`${API_BASE}/leai-auth/token`)
|
|
|
|
|
|
expect(resp.status()).toBe(200)
|
|
|
|
|
|
|
|
|
|
|
|
const json = await resp.json()
|
|
|
|
|
|
expect(json.code).toBe(200)
|
|
|
|
|
|
expect(json.data).toBeDefined()
|
|
|
|
|
|
|
|
|
|
|
|
const data = json.data
|
|
|
|
|
|
expect(data).toHaveProperty('token')
|
|
|
|
|
|
expect(data).toHaveProperty('orgId')
|
|
|
|
|
|
expect(data.token).toBeTruthy()
|
|
|
|
|
|
expect(data.orgId).toBeTruthy()
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
test('返回的 token 为非空字符串', async ({ authedApi }) => {
|
|
|
|
|
|
const resp = await authedApi.get(`${API_BASE}/leai-auth/token`)
|
|
|
|
|
|
const json = await resp.json()
|
|
|
|
|
|
expect(typeof json.data.token).toBe('string')
|
|
|
|
|
|
expect(json.data.token.length).toBeGreaterThan(10)
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
test.describe('GET /leai-auth/refresh-token', () => {
|
|
|
|
|
|
test('未登录 — 返回 401', async ({ request }) => {
|
|
|
|
|
|
const resp = await request.get(`${API_BASE}/leai-auth/refresh-token`)
|
|
|
|
|
|
expect(resp.status()).toBe(401)
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
test('已登录 — 刷新成功', async ({ authedApi }) => {
|
|
|
|
|
|
const resp = await authedApi.get(`${API_BASE}/leai-auth/refresh-token`)
|
|
|
|
|
|
expect(resp.status()).toBe(200)
|
|
|
|
|
|
|
|
|
|
|
|
const json = await resp.json()
|
|
|
|
|
|
expect(json.code).toBe(200)
|
|
|
|
|
|
expect(json.data).toHaveProperty('token')
|
|
|
|
|
|
expect(json.data).toHaveProperty('orgId')
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
test('连续两次刷新返回不同 token', async ({ authedApi }) => {
|
|
|
|
|
|
const resp1 = await authedApi.get(`${API_BASE}/leai-auth/refresh-token`)
|
|
|
|
|
|
const json1 = await resp1.json()
|
|
|
|
|
|
|
|
|
|
|
|
// 短暂等待确保时间戳不同
|
|
|
|
|
|
await new Promise((r) => setTimeout(r, 100))
|
|
|
|
|
|
|
|
|
|
|
|
const resp2 = await authedApi.get(`${API_BASE}/leai-auth/refresh-token`)
|
|
|
|
|
|
const json2 = await resp2.json()
|
|
|
|
|
|
|
|
|
|
|
|
expect(json1.data.token).toBeTruthy()
|
|
|
|
|
|
expect(json2.data.token).toBeTruthy()
|
|
|
|
|
|
// 两次 token 应不同(每次换新 session)
|
|
|
|
|
|
expect(json1.data.token).not.toBe(json2.data.token)
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|