log-guardian/internal/loki/client_test.go
WayfinderAK 6f7549d439
All checks were successful
build-image / docker (push) Successful in 53s
Implement phase 1 foundations
2026-07-03 20:14:06 -08:00

43 lines
1.3 KiB
Go

package loki
import (
"net/http"
"net/http/httptest"
"strings"
"testing"
"time"
)
func TestLabelsValuesAndQueryRange(t *testing.T) {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
switch r.URL.Path {
case "/loki/api/v1/labels":
_, _ = w.Write([]byte(`{"status":"success","data":["service","container"]}`))
case "/loki/api/v1/label/service/values":
_, _ = w.Write([]byte(`{"status":"success","data":["api"]}`))
case "/loki/api/v1/query_range":
if !strings.Contains(r.URL.Query().Get("query"), "api") {
t.Fatalf("query not passed through: %s", r.URL.RawQuery)
}
_, _ = w.Write([]byte(`{"status":"success","data":{"result":[{"stream":{"service":"api"},"values":[["1700000000000000000","error token=secret"]]}]}}`))
default:
http.NotFound(w, r)
}
}))
defer ts.Close()
client := New(ts.URL, "", "", "")
labels, err := client.Labels(t.Context())
if err != nil || len(labels) != 2 {
t.Fatalf("labels=%v err=%v", labels, err)
}
values, err := client.LabelValues(t.Context(), "service")
if err != nil || values[0] != "api" {
t.Fatalf("values=%v err=%v", values, err)
}
result, err := client.QueryRange(t.Context(), `{service="api"}`, time.Minute, 10)
if err != nil || result.Count != 1 {
t.Fatalf("result=%#v err=%v", result, err)
}
}