import assert from 'node:assert/strict' import { apiRequest } from '../src/services/api.js' async function testUsesCustomContentTypeHeader() { let capturedOptions = null global.fetch = async (_url, options) => { capturedOptions = options return { ok: true, async json() { return { ok: true } } } } await apiRequest('/knowledge/documents', { method: 'POST', body: 'payload', contentType: 'application/octet-stream' }) assert.equal(capturedOptions.headers['Content-Type'], 'application/octet-stream') } async function testSupportsBlobResponses() { const blob = new Blob(['preview']) global.fetch = async () => ({ ok: true, async blob() { return blob }, async json() { throw new Error('json parser should not be used for blob responses') } }) const payload = await apiRequest('/knowledge/documents/demo/content', { responseType: 'blob', contentType: null }) assert.equal(payload, blob) } async function testInjectsAuthenticatedUserHeaders() { const sessionStorage = new Map([ [ 'x-financial-auth-user', JSON.stringify({ username: 'admin', name: '系统管理员', roleCodes: ['manager'], isAdmin: true }) ] ]) global.window = { sessionStorage: { getItem(key) { return sessionStorage.get(key) ?? null } } } let capturedOptions = null global.fetch = async (_url, options) => { capturedOptions = options return { ok: true, async json() { return { ok: true } } } } await apiRequest('/knowledge/library') assert.equal(capturedOptions.headers['x-auth-username'], 'admin') assert.equal(capturedOptions.headers['x-auth-name'], '系统管理员') assert.equal(capturedOptions.headers['x-auth-role-codes'], 'manager') assert.equal(capturedOptions.headers['x-auth-is-admin'], 'true') } async function run() { await testUsesCustomContentTypeHeader() await testSupportsBlobResponses() await testInjectsAuthenticatedUserHeaders() console.log('api-request tests passed') } run().catch((error) => { console.error(error) process.exit(1) })