Files
workspace/code/fms/fms-vue/tests/router-menu-guard.spec.js
2026-09-04 23:24:45 +08:00

45 lines
1.5 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { describe, it, expect, beforeEach, vi } from 'vitest'
import { setActivePinia, createPinia } from 'pinia'
import { useAuthStore } from '@/stores/auth'
import router from '@/router'
// mock 后端数据接口(权限/菜单/多语言都走 loadDataApi)
vi.mock('@/services/api', () => ({
loadDataApi: vi.fn(() => Promise.resolve({ data: [], code: 0, success: true })),
}))
beforeEach(async () => {
localStorage.clear()
sessionStorage.clear()
setActivePinia(createPinia())
// 复位到登录页,避免上一用例的受保护路由状态泄漏
await router.push('/login').catch(() => {})
})
function login(account, id) {
useAuthStore().setSession({ token: 't', user: { id, account, name: account } }, 'ORG')
}
describe('路由守卫:模块中心 /module/* 仅 g3soft 可访问', () => {
it('普通用户:访问 /module/* 一律拦截回工作台', async () => {
login('001', 123)
await router.push('/module/i18n-type')
expect(router.currentRoute.value.path).toBe('/dashboard')
await router.push('/module/module-management')
expect(router.currentRoute.value.path).toBe('/dashboard')
})
it('普通用户:其它受保护页面不受影响', async () => {
login('001', 123)
await router.push('/demo')
expect(router.currentRoute.value.path).toBe('/demo')
})
it('g3soft:模块中心页面可正常访问', async () => {
login('g3soft', 1)
await router.push('/module/i18n-type')
expect(router.currentRoute.value.path).toBe('/module/i18n-type')
})
})