Files
admin-web/src/core/access/accessPreview.test.ts
T

56 lines
2.1 KiB
TypeScript
Raw Normal View History

2026-07-30 17:59:43 +08:00
import { createPinia, setActivePinia } from 'pinia'
2026-07-31 15:34:35 +08:00
import { beforeEach, describe, expect, it } from 'vitest'
2026-08-19 16:45:51 +08:00
import { isLocalFullAccessHost, useAccessPreviewStore } from '@/core/access/accessPreview'
2026-08-03 18:49:18 +08:00
import { useAuthStore } from '@/core/auth/auth'
2026-07-30 17:59:43 +08:00
2026-07-31 15:34:35 +08:00
describe('server access store', () => {
2026-08-19 16:45:51 +08:00
beforeEach(() => {
window.localStorage.clear()
setActivePinia(createPinia())
})
2026-07-30 17:59:43 +08:00
2026-07-31 15:34:35 +08:00
it('uses only the authenticated permission snapshot', () => {
const auth = useAuthStore()
auth.token = 'token'
auth.permissions = ['platform:warehouse:list']
const access = useAccessPreviewStore()
access.initializeAfterLogin()
2026-07-30 17:59:43 +08:00
2026-07-31 15:34:35 +08:00
expect(access.can('platform:warehouse:list')).toBe(true)
expect(access.can('platform:user:list')).toBe(false)
2026-08-05 15:54:59 +08:00
expect(access.firstAccessiblePath).toBe('/dashboard')
2026-07-30 17:59:43 +08:00
})
2026-08-05 15:54:59 +08:00
it('keeps only the unprotected dashboard when the server snapshot is empty', () => {
2026-07-31 15:34:35 +08:00
const access = useAccessPreviewStore()
expect(access.permissionCodes.size).toBe(0)
2026-08-05 15:54:59 +08:00
expect(access.filteredNavigation).toHaveLength(1)
expect(access.firstAccessiblePath).toBe('/dashboard')
2026-07-30 17:59:43 +08:00
})
2026-08-19 16:45:51 +08:00
it('allows every frontend permission only while the localhost control is enabled', () => {
const access = useAccessPreviewStore()
expect(access.localFullAccessAvailable).toBe(true)
expect(access.can('platform:anything:create')).toBe(false)
access.setLocalFullAccessEnabled(true)
expect(access.can('platform:anything:create')).toBe(true)
expect(access.permissionCodes.has('platform:anything:edit')).toBe(true)
expect(access.filteredNavigation.length).toBeGreaterThan(1)
expect(window.localStorage.getItem('baiyue-admin-local-full-access')).toBe('true')
access.setLocalFullAccessEnabled(false)
expect(access.can('platform:anything:create')).toBe(false)
expect(window.localStorage.getItem('baiyue-admin-local-full-access')).toBeNull()
})
it('recognizes only local preview hosts', () => {
expect(isLocalFullAccessHost('localhost')).toBe(true)
expect(isLocalFullAccessHost('127.0.0.1')).toBe(true)
expect(isLocalFullAccessHost('::1')).toBe(true)
expect(isLocalFullAccessHost('admin.example.com')).toBe(false)
})
2026-07-30 17:59:43 +08:00
})