import { createPinia, setActivePinia } from 'pinia' import { beforeEach, describe, expect, it } from 'vitest' import { isLocalFullAccessHost, useAccessPreviewStore } from '@/core/access/accessPreview' import { useAuthStore } from '@/core/auth/auth' describe('server access store', () => { beforeEach(() => { window.localStorage.clear() setActivePinia(createPinia()) }) it('uses only the authenticated permission snapshot', () => { const auth = useAuthStore() auth.token = 'token' auth.permissions = ['platform:warehouse:list'] const access = useAccessPreviewStore() access.initializeAfterLogin() expect(access.can('platform:warehouse:list')).toBe(true) expect(access.can('platform:user:list')).toBe(false) expect(access.firstAccessiblePath).toBe('/dashboard') }) it('keeps only the unprotected dashboard when the server snapshot is empty', () => { const access = useAccessPreviewStore() expect(access.permissionCodes.size).toBe(0) expect(access.filteredNavigation).toHaveLength(1) expect(access.firstAccessiblePath).toBe('/dashboard') }) 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) }) })