@@ -0,0 +1,49 @@
|
||||
import { beforeEach, describe, expect, it } from 'vitest'
|
||||
import { createPinia, setActivePinia } from 'pinia'
|
||||
import { useAuthStore } from './auth'
|
||||
|
||||
beforeEach(() => {
|
||||
localStorage.clear()
|
||||
setActivePinia(createPinia())
|
||||
})
|
||||
|
||||
describe('isAuthed 实时过期判定', () => {
|
||||
const cases = [
|
||||
{ name: '无 token 未登录', token: '', expiresAt: '', want: false },
|
||||
{ name: '有 token 无过期时间视为已登录', token: 't', expiresAt: '', want: true },
|
||||
{
|
||||
name: '未过期',
|
||||
token: 't',
|
||||
expiresAt: new Date(Date.now() + 60_000).toISOString(),
|
||||
want: true,
|
||||
},
|
||||
{
|
||||
name: '已过期(computed 缓存会误判的场景)',
|
||||
token: 't',
|
||||
expiresAt: new Date(Date.now() - 1_000).toISOString(),
|
||||
want: false,
|
||||
},
|
||||
]
|
||||
for (const c of cases) {
|
||||
it(c.name, () => {
|
||||
const auth = useAuthStore()
|
||||
if (c.token) auth.setSession(c.token, c.expiresAt)
|
||||
expect(auth.isAuthed()).toBe(c.want)
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
it('logout 清空会话与本地存储', () => {
|
||||
const auth = useAuthStore()
|
||||
auth.setSession('t', new Date(Date.now() + 60_000).toISOString())
|
||||
auth.logout()
|
||||
expect(auth.token).toBe('')
|
||||
expect(auth.isAuthed()).toBe(false)
|
||||
expect(localStorage.getItem('oci-portal.token')).toBeNull()
|
||||
})
|
||||
|
||||
it('setSession 落地本地存储,新 store 实例可恢复', () => {
|
||||
useAuthStore().setSession('t2', '')
|
||||
setActivePinia(createPinia())
|
||||
expect(useAuthStore().token).toBe('t2')
|
||||
})
|
||||
Reference in New Issue
Block a user