Files
user-system/frontend/admin/src/lib/http/index.test.ts
long-agent 40d146b6aa test: add Stage 1 lib and Stage 2 services test coverage
Add comprehensive unit tests for:
- lib layer: config, device-fingerprint, errors, storage, hooks/useBreadcrumbs, http
- services layer: devices, login-logs, operation-logs, permissions, profile, roles, settings, stats, import-export

All 491 tests pass across 74 test files.
2026-04-17 23:59:15 +08:00

175 lines
5.8 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import * as httpIndex from './index'
import * as client from './client'
import * as authSession from './auth-session'
import * as errors from '@/lib/errors'
describe('lib/http/index', () => {
describe('exports from client', () => {
it('should export get function', () => {
expect(httpIndex.get).toBeDefined()
expect(typeof httpIndex.get).toBe('function')
})
it('should export post function', () => {
expect(httpIndex.post).toBeDefined()
expect(typeof httpIndex.post).toBe('function')
})
it('should export put function', () => {
expect(httpIndex.put).toBeDefined()
expect(typeof httpIndex.put).toBe('function')
})
it('should export del function', () => {
expect(httpIndex.del).toBeDefined()
expect(typeof httpIndex.del).toBe('function')
})
it('should export download function', () => {
expect(httpIndex.download).toBeDefined()
expect(typeof httpIndex.download).toBe('function')
})
it('should export upload function', () => {
expect(httpIndex.upload).toBeDefined()
expect(typeof httpIndex.upload).toBe('function')
})
it('should export request function', () => {
expect(httpIndex.request).toBeDefined()
expect(typeof httpIndex.request).toBe('function')
})
})
describe('exports from auth-session', () => {
it('should export getAccessToken function', () => {
expect(httpIndex.getAccessToken).toBeDefined()
expect(typeof httpIndex.getAccessToken).toBe('function')
})
it('should export setAccessToken function', () => {
expect(httpIndex.setAccessToken).toBeDefined()
expect(typeof httpIndex.setAccessToken).toBe('function')
})
it('should export clearAccessToken function', () => {
expect(httpIndex.clearAccessToken).toBeDefined()
expect(typeof httpIndex.clearAccessToken).toBe('function')
})
it('should export isAccessTokenExpired function', () => {
expect(httpIndex.isAccessTokenExpired).toBeDefined()
expect(typeof httpIndex.isAccessTokenExpired).toBe('function')
})
it('should export getCurrentUser function', () => {
expect(httpIndex.getCurrentUser).toBeDefined()
expect(typeof httpIndex.getCurrentUser).toBe('function')
})
it('should export setCurrentUser function', () => {
expect(httpIndex.setCurrentUser).toBeDefined()
expect(typeof httpIndex.setCurrentUser).toBe('function')
})
it('should export getCurrentRoles function', () => {
expect(httpIndex.getCurrentRoles).toBeDefined()
expect(typeof httpIndex.getCurrentRoles).toBe('function')
})
it('should export setCurrentRoles function', () => {
expect(httpIndex.setCurrentRoles).toBeDefined()
expect(typeof httpIndex.setCurrentRoles).toBe('function')
})
it('should export isAdmin function', () => {
expect(httpIndex.isAdmin).toBeDefined()
expect(typeof httpIndex.isAdmin).toBe('function')
})
it('should export getRoleCodes function', () => {
expect(httpIndex.getRoleCodes).toBeDefined()
expect(typeof httpIndex.getRoleCodes).toBe('function')
})
it('should export isAuthenticated function', () => {
expect(httpIndex.isAuthenticated).toBeDefined()
expect(typeof httpIndex.isAuthenticated).toBe('function')
})
it('should export clearSession function', () => {
expect(httpIndex.clearSession).toBeDefined()
expect(typeof httpIndex.clearSession).toBe('function')
})
it('should export isRefreshing function', () => {
expect(httpIndex.isRefreshing).toBeDefined()
expect(typeof httpIndex.isRefreshing).toBe('function')
})
it('should export startRefreshing function', () => {
expect(httpIndex.startRefreshing).toBeDefined()
expect(typeof httpIndex.startRefreshing).toBe('function')
})
it('should export endRefreshing function', () => {
expect(httpIndex.endRefreshing).toBeDefined()
expect(typeof httpIndex.endRefreshing).toBe('function')
})
it('should export getRefreshPromise function', () => {
expect(httpIndex.getRefreshPromise).toBeDefined()
expect(typeof httpIndex.getRefreshPromise).toBe('function')
})
it('should export setRefreshPromise function', () => {
expect(httpIndex.setRefreshPromise).toBeDefined()
expect(typeof httpIndex.setRefreshPromise).toBe('function')
})
it('should export clearRefreshPromise function', () => {
expect(httpIndex.clearRefreshPromise).toBeDefined()
expect(typeof httpIndex.clearRefreshPromise).toBe('function')
})
})
describe('exports from errors', () => {
it('should export AppError class', () => {
expect(httpIndex.AppError).toBeDefined()
expect(typeof httpIndex.AppError).toBe('function')
})
it('should export ErrorType constant', () => {
expect(httpIndex.ErrorType).toBeDefined()
expect(httpIndex.ErrorType.BUSINESS).toBe('BUSINESS')
expect(httpIndex.ErrorType.NETWORK).toBe('NETWORK')
expect(httpIndex.ErrorType.AUTH).toBe('AUTH')
})
it('should export isAppError function', () => {
expect(httpIndex.isAppError).toBeDefined()
expect(typeof httpIndex.isAppError).toBe('function')
})
})
describe('integration', () => {
it('should be able to create AppError from exported class', () => {
const error = new httpIndex.AppError(1001, 'Test error')
expect(error).toBeInstanceOf(httpIndex.AppError)
expect(error.code).toBe(1001)
expect(error.message).toBe('Test error')
})
it('should be able to check error type with isAppError', () => {
const error = new httpIndex.AppError(1001, 'Test error')
expect(httpIndex.isAppError(error)).toBe(true)
})
it('should have consistent ErrorType values', () => {
expect(httpIndex.ErrorType).toEqual(errors.ErrorType)
})
})
})