61 lines
1.9 KiB
Go
61 lines
1.9 KiB
Go
package telemetrymeta
|
|
|
|
import (
|
|
"errors"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/go-chi/chi/v5"
|
|
|
|
"github.com/aoagents/agent-orchestrator/backend/internal/httpd/apierr"
|
|
)
|
|
|
|
func TestErrorKindAndCode(t *testing.T) {
|
|
kind, code := ErrorKindAndCode(apierr.NotFound("SESSION_NOT_FOUND", "Unknown session"))
|
|
if kind != "not_found" || code != "SESSION_NOT_FOUND" {
|
|
t.Fatalf("typed error = (%q, %q), want (not_found, SESSION_NOT_FOUND)", kind, code)
|
|
}
|
|
|
|
kind, code = ErrorKindAndCode(errors.New("boom"))
|
|
if kind != "internal" || code != "" {
|
|
t.Fatalf("raw error = (%q, %q), want (internal, empty)", kind, code)
|
|
}
|
|
}
|
|
|
|
func TestRoutePatternPrefersChiPattern(t *testing.T) {
|
|
var got string
|
|
r := chi.NewRouter()
|
|
r.Get("/api/v1/projects/{projectID}/sessions/{sessionID}", func(w http.ResponseWriter, req *http.Request) {
|
|
got = RoutePattern(req)
|
|
w.WriteHeader(http.StatusNoContent)
|
|
})
|
|
|
|
req := httptest.NewRequest(http.MethodGet, "/api/v1/projects/mer/sessions/sess-1", nil)
|
|
rec := httptest.NewRecorder()
|
|
r.ServeHTTP(rec, req)
|
|
|
|
if rec.Code != http.StatusNoContent {
|
|
t.Fatalf("status = %d, want 204", rec.Code)
|
|
}
|
|
if got != "/api/v1/projects/{projectID}/sessions/{sessionID}" {
|
|
t.Fatalf("route pattern = %q, want chi route pattern", got)
|
|
}
|
|
}
|
|
|
|
func TestFingerprintStableForSameInputs(t *testing.T) {
|
|
first := Fingerprint("httpd", "http_request", "GET", "/api/v1/projects/{projectID}", "5xx", "internal")
|
|
second := Fingerprint("httpd", "http_request", "GET", "/api/v1/projects/{projectID}", "5xx", "internal")
|
|
other := Fingerprint("httpd", "http_request", "POST", "/api/v1/projects/{projectID}", "5xx", "internal")
|
|
|
|
if first == "" || len(first) != 16 {
|
|
t.Fatalf("fingerprint = %q, want 16-char digest", first)
|
|
}
|
|
if first != second {
|
|
t.Fatalf("fingerprints differ for same inputs: %q vs %q", first, second)
|
|
}
|
|
if first == other {
|
|
t.Fatalf("fingerprints should differ for different inputs: %q vs %q", first, other)
|
|
}
|
|
}
|