diff --git a/frontend/src/pages/profile/__tests__/index.spec.ts b/frontend/src/pages/profile/__tests__/index.spec.ts index 49a991c..3c2b873 100644 --- a/frontend/src/pages/profile/__tests__/index.spec.ts +++ b/frontend/src/pages/profile/__tests__/index.spec.ts @@ -5,6 +5,7 @@ import { nextTick } from 'vue' import { message } from 'ant-design-vue' import { ApiError } from '@/types/api' import { useUserStore } from '@/stores/user' +import { fakeJwtWithRole } from '@/test/helpers' Object.defineProperty(window, 'matchMedia', { writable: true, @@ -58,7 +59,7 @@ describe('Profile Page', () => { vi.mocked(api.get).mockResolvedValue(mockUser) const store = useUserStore() - store.setToken('h.p.s', 'r.p.s', true) + store.setToken(fakeJwtWithRole('administrator'), 'r.p.s', true) store.setUser({ ...mockUser }) const { default: ProfilePage } = await import('../index.vue') diff --git a/frontend/src/pages/users/__tests__/index.spec.ts b/frontend/src/pages/users/__tests__/index.spec.ts index 9c9632a..9247c36 100644 --- a/frontend/src/pages/users/__tests__/index.spec.ts +++ b/frontend/src/pages/users/__tests__/index.spec.ts @@ -5,6 +5,7 @@ import { nextTick } from 'vue' import { message } from 'ant-design-vue' import { useUserManageStore, type UserRecord } from '@/stores/user-manage' import { useUserStore } from '@/stores/user' +import { fakeJwtWithRole } from '@/test/helpers' // jsdom 不支持 matchMedia,Ant Design Vue 响应式布局需要 Object.defineProperty(window, 'matchMedia', { @@ -202,8 +203,9 @@ describe('Users Page', () => { return Promise.resolve(mockPaginatedResponse) as never }) - // 设置 admin 用户以显示操作按钮 + // 设置 admin 用户以显示操作按钮(isAdmin 从 JWT 派生) const userStore = useUserStore() + userStore.setToken(fakeJwtWithRole('administrator'), 'rt') userStore.setUser({ id: 1, username: 'admin', email: 'a@a.com', role: 'administrator', status: 1 }) const { default: UsersPage } = await import('../index.vue') @@ -265,8 +267,9 @@ describe('Users Page', () => { const { api } = await import('@/utils/request') vi.mocked(api.get).mockResolvedValue(mockPaginatedResponse) - // 设置非 admin 用户 + // 设置非 admin 用户(JWT 中 role 为 accessor) const userStore = useUserStore() + userStore.setToken(fakeJwtWithRole('accessor'), 'rt') userStore.setUser({ id: 2, username: 'viewer', email: 'v@v.com', role: 'accessor', status: 1 }) const { default: UsersPage } = await import('../index.vue')