monitoring page: storage labels follow the reader's language (W26, rehearsal 2026-10-20); unreleased
gates / gates (push) Successful in 1m11s
gates / gates (push) Successful in 1m11s
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
package web
|
||||
|
||||
import (
|
||||
"crypto/sha256"
|
||||
"encoding/hex"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"gitea.dooplex.hu/admin/felhom-controller/internal/config"
|
||||
)
|
||||
|
||||
// W26 (rehearsal 2026-10-20 B6 #16), pinned at the handler: GET /api/host-metrics answers the storage
|
||||
// labels in the REQUEST's language. TestEnrichHostStorageTargets_FollowsTheLanguage pins the lookup;
|
||||
// this pins the wiring (the reader's language reaching it), through a fake agent behind the real pinned client.
|
||||
func TestServeHostMetricsAPI_LabelsFollowTheRequestLanguage(t *testing.T) {
|
||||
mux := http.NewServeMux()
|
||||
mux.HandleFunc("GET /host/metrics", func(w http.ResponseWriter, r *http.Request) {
|
||||
_, _ = w.Write([]byte(`{"ok":true,"data":{"vmid":1,"host":{"node":"n"},"storage_targets":[
|
||||
{"name":"local-lvm","type":"lvmthin","state":"attached","reachable":true},
|
||||
{"name":"felhom-pbs","type":"pbs","state":"attached","reachable":true}]}}`))
|
||||
})
|
||||
agent := httptest.NewTLSServer(mux)
|
||||
defer agent.Close()
|
||||
sum := sha256.Sum256(agent.Certificate().Raw)
|
||||
s := testServer(t)
|
||||
s.cfg = &config.Config{LocalAPI: config.LocalAPIConfig{
|
||||
Endpoint: strings.TrimPrefix(agent.URL, "https://"), Token: "tok", Fingerprint: hex.EncodeToString(sum[:])}}
|
||||
|
||||
get := func(lang string) string {
|
||||
rec := httptest.NewRecorder()
|
||||
s.ServeHostMetricsAPI(rec, httptest.NewRequest(http.MethodGet, "/api/host-metrics?lang="+lang, nil))
|
||||
if rec.Code != http.StatusOK {
|
||||
t.Fatalf("lang=%s: status %d body %s", lang, rec.Code, rec.Body.String())
|
||||
}
|
||||
return rec.Body.String()
|
||||
}
|
||||
en, hu := get("en"), get("hu")
|
||||
if !strings.Contains(en, "Internal SSD") || !strings.Contains(en, "Off-site backup") {
|
||||
t.Errorf("English answer lacks the English labels: %s", en)
|
||||
}
|
||||
if strings.Contains(en, "Belső") || strings.Contains(en, "Távoli") {
|
||||
t.Errorf("English answer carries Hungarian labels: %s", en)
|
||||
}
|
||||
if !strings.Contains(hu, "Belső SSD") || !strings.Contains(hu, "Távoli biztonsági mentés") {
|
||||
t.Errorf("Hungarian answer lacks the Hungarian labels: %s", hu)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user