mirror of
https://github.com/R0m1k3/EveFlow.git
synced 2026-10-11 17:29:03 +02:00
- Toute réponse HTML (portail de connexion, tableau de bord, erreur de proxy) est reconnue et expliquée avec le titre de la page, au lieu d'être prise pour un état « ok » ou de produire une réponse vide. - Découverte automatique : quand la liaison échoue, EveFlow essaie l'API sur le même hôte (port 8642, /api, /v1, sous-domaines api. et hermes.) et corrige l'URL si un serveur Hermes répond. Le bouton « Tester la liaison » fait de même et affiche les essais. Tests : 47 tests unitaires ; e2e Electron vert. Claude-Session: https://claude.ai/code/session_017Wn5VX9HNbJ7N54hR24u9Y Co-authored-by: Claude <noreply@anthropic.com>
34 lines
1.5 KiB
TypeScript
34 lines
1.5 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
||
import { describeHtml, hermesUrlCandidates, recoverCompletion } from '../src/services/hermes/client';
|
||
|
||
describe('describeHtml', () => {
|
||
it('explains a login page instead of the API', () => {
|
||
const msg = describeHtml('<!doctype html><html lang="fr-FR"><head><title>Jarvis – Se connecter</title></head><body>Mot de passe</body></html>');
|
||
expect(msg).toContain('Jarvis – Se connecter');
|
||
expect(msg).toContain('page de connexion');
|
||
expect(msg).toContain('8642');
|
||
});
|
||
it('ignores JSON and SSE', () => {
|
||
expect(describeHtml('{"status":"ok"}')).toBeNull();
|
||
expect(describeHtml('data: {"choices":[]}')).toBeNull();
|
||
});
|
||
it('is used by recoverCompletion', () => {
|
||
expect(recoverCompletion('<html><head><title>Portal</title></head></html>').error).toContain('Portal');
|
||
});
|
||
});
|
||
|
||
describe('hermesUrlCandidates', () => {
|
||
it('tries the API port, common paths and sibling hosts', () => {
|
||
const c = hermesUrlCandidates('http://jarvis.vonrodbox.eu');
|
||
expect(c).toContain('http://jarvis.vonrodbox.eu:8642');
|
||
expect(c).toContain('http://jarvis.vonrodbox.eu/api');
|
||
expect(c).toContain('http://api.jarvis.vonrodbox.eu');
|
||
expect(c).toContain('http://hermes.vonrodbox.eu');
|
||
expect(c).not.toContain('http://jarvis.vonrodbox.eu');
|
||
});
|
||
it('keeps an explicit port and handles garbage', () => {
|
||
expect(hermesUrlCandidates('http://10.0.0.5:8642').some((u) => u.includes(':8642:'))).toBe(false);
|
||
expect(hermesUrlCandidates('')).toEqual([]);
|
||
});
|
||
});
|