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) } }