Files
neural-hunt/internal/customer/runtime_controller_test.go
groot 47c523dd98
All checks were successful
release-tag / release-image (push) Successful in 3m51s
RC-14
2026-08-14 06:17:30 +02:00

52 lines
1.3 KiB
Go

package customer
import (
"context"
"encoding/json"
"net/http"
"net/http/httptest"
"testing"
)
func TestRemoteControllerClientAuthAndCreate(t *testing.T) {
const secret = "0123456789abcdef0123456789abcdef"
seen := false
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.Header.Get("Authorization") != "Bearer "+secret {
t.Fatalf("authorization = %q", r.Header.Get("Authorization"))
}
switch r.URL.Path {
case "/internal/health":
w.WriteHeader(http.StatusOK)
case "/internal/workers":
seen = true
var cfg WorkerContainerConfig
if err := json.NewDecoder(r.Body).Decode(&cfg); err != nil {
t.Fatal(err)
}
if cfg.WorkerID != "wrk_test" || cfg.Image != "worker:test" {
t.Fatalf("unexpected cfg: %+v", cfg)
}
_ = json.NewEncoder(w).Encode(map[string]string{"id": "container_123"})
default:
http.NotFound(w, r)
}
}))
defer ts.Close()
c, err := NewRemoteControllerClient(ts.URL, secret)
if err != nil {
t.Fatal(err)
}
if err := c.Ping(context.Background()); err != nil {
t.Fatal(err)
}
id, err := c.CreateWorker(context.Background(), WorkerContainerConfig{WorkerID: "wrk_test", Image: "worker:test"})
if err != nil {
t.Fatal(err)
}
if id != "container_123" || !seen {
t.Fatalf("id=%q seen=%v", id, seen)
}
}