package httpapi import ( "encoding/json" "net/http" "net/http/httptest" "strings" "testing" ) func TestPostSpeaker_defaultsFromEndpointIP(t *testing.T) { srv, err := New(Options{InsecureDev: true, SeedDemo: true, BundleSeedHex: testBundleSeed}) if err != nil { t.Fatal(err) } defer srv.Close() tenant, _, _, _, _ := srv.Store().DemoIDs() mustSetTestAPIKeys(t, srv, "edkey|"+tenant+"|editor") body := `{"endpoint":"https://203.0.113.55:8443","role":"replica"}` req := httptest.NewRequest(http.MethodPost, "/v1/speakers", strings.NewReader(body)) req.Header.Set("Authorization", "Bearer edkey") req.Header.Set("Content-Type", "application/json") rec := httptest.NewRecorder() srv.Handler().ServeHTTP(rec, req) if rec.Code != http.StatusCreated { t.Fatalf("status %d body %s", rec.Code, rec.Body.String()) } var out map[string]any if err := json.Unmarshal(rec.Body.Bytes(), &out); err != nil { t.Fatal(err) } if out["agent_secret"] == nil || out["agent_secret"] == "" { t.Fatal("expected agent_secret on create") } if out["node_ipv4"] != "203.0.113.55" { t.Fatalf("node_ipv4: %#v", out["node_ipv4"]) } if out["bird_bgp_source_ipv4"] != "203.0.113.55" { t.Fatalf("bird_bgp_source_ipv4: %#v", out["bird_bgp_source_ipv4"]) } } func TestGetBundleSigningPublicKey(t *testing.T) { srv, err := New(Options{InsecureDev: true, SeedDemo: true, BundleSeedHex: testBundleSeed}) if err != nil { t.Fatal(err) } defer srv.Close() tenant, _, _, _, _ := srv.Store().DemoIDs() mustSetTestAPIKeys(t, srv, "vwkey|"+tenant+"|viewer") req := httptest.NewRequest(http.MethodGet, "/v1/bundle/signing-public-key", nil) req.Header.Set("Authorization", "Bearer vwkey") rec := httptest.NewRecorder() srv.Handler().ServeHTTP(rec, req) if rec.Code != http.StatusOK { t.Fatalf("status %d body %s", rec.Code, rec.Body.String()) } var out map[string]any _ = json.Unmarshal(rec.Body.Bytes(), &out) if out["public_key_base64"] == nil || out["public_key_base64"] == "" { t.Fatalf("missing public_key_base64: %#v", out) } }