mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-16 19:59:56 +02:00
Les neuf routes que la façade sert toujours (ping, status, config, ligne de commande du moteur, couches du modèle, chemins, RAM, VRAM, journal du service) arrivent désormais à la façade par le tunnel du relais aussi : withFacadeChat les lui remet dès qu'elle tourne (facade_core.go). Les handlers du Go ne servent plus que sans façade (LOKI_FACADE=0). Côté Rust, une requête relayée par le Go (jeton interne) n'est pas réauthentifiée, comme pour les routes des lots. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016tcGfJWefW5kUGoC2wL8cv
50 lines
1.7 KiB
Go
50 lines
1.7 KiB
Go
package loki
|
|
|
|
import (
|
|
"io"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
// Lot 35 : les routes de base arrivent à la façade par le tunnel du relais
|
|
// dès qu'elle tourne, sans variable ; sans façade (LOKI_FACADE=0 : ni
|
|
// adresse ni jeton), le Go les sert lui-même.
|
|
func TestFacadeRelaieLesRoutesDeBase(t *testing.T) {
|
|
testHome(t)
|
|
f := demarrerFacade(t)
|
|
t.Setenv(facadeChatEnv, "")
|
|
local := func(w http.ResponseWriter, r *http.Request) { io.WriteString(w, "go") }
|
|
for p := range facadeCoreRoutes {
|
|
w := httptest.NewRecorder()
|
|
withFacadeChat(p, local)(w, httptest.NewRequest("GET", p, nil))
|
|
if w.Body.String() != f.reply {
|
|
t.Fatalf("%s : réponse %q", p, w.Body.String())
|
|
}
|
|
}
|
|
if got := f.recu(); len(got) != len(facadeCoreRoutes) || !strings.HasSuffix(strings.TrimSpace(got[0]), "jeton") {
|
|
t.Fatalf("reçu par la façade : %v", got)
|
|
}
|
|
// Une route que le Go garde : ici.
|
|
w := httptest.NewRecorder()
|
|
withFacadeChat("/api/mem/health", local)(w, httptest.NewRequest("GET", "/api/mem/health", nil))
|
|
if w.Body.String() != "go" {
|
|
t.Fatalf("route du Go relayée : %q", w.Body.String())
|
|
}
|
|
// Façade muette : 502 qui le dit.
|
|
f.srv.Close()
|
|
w = httptest.NewRecorder()
|
|
withFacadeChat("/api/status", local)(w, httptest.NewRequest("GET", "/api/status", nil))
|
|
if w.Code != http.StatusBadGateway || !strings.Contains(w.Body.String(), "façade indisponible : ") {
|
|
t.Fatalf("façade muette : %d %s", w.Code, w.Body.String())
|
|
}
|
|
// Sans façade : le Go sert.
|
|
t.Setenv(facadeAddrEnv, "")
|
|
w = httptest.NewRecorder()
|
|
withFacadeChat("/api/status", local)(w, httptest.NewRequest("GET", "/api/status", nil))
|
|
if w.Body.String() != "go" {
|
|
t.Fatalf("sans façade : %q", w.Body.String())
|
|
}
|
|
}
|