import { describe, expect, it } from 'vitest'; import { loginPath, roleDetailPath, roleNewPath, ROUTES, sanitizeRedirect, userDetailPath, } from './routes'; describe('路由常量与登录回跳', () => { it('用户路由遵循 /system/users 模块化约定', () => { expect(ROUTES.system.users).toBe('/system/users'); expect(ROUTES.system.userNew).toBe('/system/users/new'); expect(userDetailPath('01HZZZZZZZZZZZZZZZZZZZZZZZ')).toBe( '/system/users/01HZZZZZZZZZZZZZZZZZZZZZZZ', ); }); it('角色路由包含列表 / 新建 / 编辑器深链', () => { expect(ROUTES.system.roles).toBe('/system/roles'); expect(ROUTES.system.roleNew).toBe('/system/roles/new'); expect(ROUTES.system.roleDetail).toBe('/system/roles/:id'); expect(roleDetailPath('01HZZZZZZZZZZZZZZZZZZZZZZZ')).toBe( '/system/roles/01HZZZZZZZZZZZZZZZZZZZZZZZ', ); expect(roleNewPath()).toBe('/system/roles/new'); expect(roleNewPath('01HZZZZZZZZZZZZZZZZZZZZZZZ')).toBe( '/system/roles/new?from=01HZZZZZZZZZZZZZZZZZZZZZZZ', ); }); it('部门管理路由挂在管理中心下', () => { expect(ROUTES.system.departments).toBe('/system/departments'); }); it('sanitizeRedirect 只接受站内路径', () => { expect(sanitizeRedirect('/system/users/new')).toBe('/system/users/new'); expect(sanitizeRedirect(' /system/users?status=active ')).toBe('/system/users?status=active'); expect(sanitizeRedirect('https://evil.example.com')).toBeNull(); expect(sanitizeRedirect('//evil.example.com')).toBeNull(); expect(sanitizeRedirect('javascript:alert(1)')).toBeNull(); expect(sanitizeRedirect('/login?redirect=/system/users')).toBeNull(); expect(sanitizeRedirect(null)).toBeNull(); }); it('loginPath 编码 redirect 参数', () => { expect(loginPath()).toBe('/login'); expect(loginPath('/system/users?status=active')).toBe( '/login?redirect=%2Fsystem%2Fusers%3Fstatus%3Dactive', ); expect(loginPath('https://evil.example.com')).toBe('/login'); }); });