/** * Tests des API endpoints */ import { describe, it, expect, beforeEach, afterEach } from 'vitest' import request from 'supertest' let app beforeEach(async () => { const serverModule = await import('../backend/server.js') app = serverModule.default }) describe('API Endpoints', () => { describe('Health Check', () => { it('devrait retourner le statut de santé', async () => { const response = await request(app) .get('/api/health') .expect(200) expect(response.body).toHaveProperty('status', 'OK') expect(response.body).toHaveProperty('timestamp') expect(response.body).toHaveProperty('version') expect(response.body).toHaveProperty('metrics') }) }) describe('Upload de fichiers', () => { it('devrait accepter un fichier image', async () => { // Test avec un fichier de test const response = await request(app) .post('/api/extract') .attach('document', 'tests/fixtures/test-image.jpg') .field('folderHash', 'test-folder') .expect(200) expect(response.body).toHaveProperty('success', true) expect(response.body).toHaveProperty('fileHash') expect(response.body).toHaveProperty('extraction') }) it('devrait rejeter les fichiers non supportés', async () => { const response = await request(app) .post('/api/extract') .attach('document', 'tests/fixtures/test-file.txt') .field('folderHash', 'test-folder') .expect(400) expect(response.body).toHaveProperty('success', false) expect(response.body).toHaveProperty('error') }) }) describe('Gestion des dossiers', () => { it('devrait lister les dossiers', async () => { const response = await request(app) .get('/api/folders') .expect(200) expect(Array.isArray(response.body)).toBe(true) }) it('devrait retourner les résultats d\'un dossier', async () => { const response = await request(app) .get('/api/folders/test-folder/results') .expect(200) expect(response.body).toHaveProperty('folderHash') expect(response.body).toHaveProperty('documents') expect(Array.isArray(response.body.documents)).toBe(true) }) }) describe('Enrichissement', () => { it('devrait démarrer l\'enrichissement d\'une personne', async () => { const response = await request(app) .post('/api/folders/test-folder/files/test-file/enrich/person') .expect(200) expect(response.body).toHaveProperty('success', true) expect(response.body).toHaveProperty('message') }) it('devrait retourner le statut d\'enrichissement', async () => { const response = await request(app) .get('/api/folders/test-folder/files/test-file/enrich/person/status') .expect(200) expect(response.body).toHaveProperty('success', true) expect(response.body).toHaveProperty('state') }) }) })