package main import ( "context" "encoding/json" "net/http" "net/http/httptest" "testing" "git.cin.su/m/Assistant/contracts/epistemics" ) func TestResearchRuntimeClientForwardsBoundedWebRequest(t *testing.T) { server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPost || r.URL.Path != "/v1/research/web/evaluate" || r.Header.Get("Content-Type") != "application/json" { t.Fatalf("unexpected request: %s %s", r.Method, r.URL.Path) } var request epistemics.WebResearchRequest if err := json.NewDecoder(r.Body).Decode(&request); err != nil || request.URL != "https://assistant.cin.su/healthz" { t.Fatalf("unexpected request body: %#v %v", request, err) } _ = json.NewEncoder(w).Encode(epistemics.ResearchResult{PlanID: request.Plan.ID, Findings: []epistemics.ResearchFinding{{PropositionKey: request.PropositionKey, State: epistemics.FindingSupported}}}) })) defer server.Close() client, err := newResearchRuntimeClient(server.URL, server.Client()) if err != nil { t.Fatal(err) } result, err := client.EvaluateWeb(context.Background(), epistemics.WebResearchRequest{Plan: epistemics.ResearchPlan{ID: "plan-1"}, PropositionKey: "health", URL: "https://assistant.cin.su/healthz"}) if err != nil || result.PlanID != "plan-1" || len(result.Findings) != 1 || result.Findings[0].State != epistemics.FindingSupported { t.Fatalf("unexpected result: %#v %v", result, err) } }