package response import ( "encoding/json" "testing" "code.tczkiot.com/wlw/ai-agent/internal/models" ) func TestBuildAIConfigResponseOmitsAPIKey(t *testing.T) { payload, err := json.Marshal(BuildAIConfigResponse(&models.AIConfig{ ID: 1, Name: "test", APIKey: "sk-secret", })) if err != nil { t.Fatalf("marshal response error = %v", err) } var decoded map[string]any if err := json.Unmarshal(payload, &decoded); err != nil { t.Fatalf("unmarshal response error = %v", err) } if _, ok := decoded["api_key"]; ok { t.Fatalf("api_key should not be exposed: %s", payload) } if got, ok := decoded["has_api_key"].(bool); !ok || !got { t.Fatalf("has_api_key = %v, want true: %s", decoded["has_api_key"], payload) } } func TestBuildAIConfigDetailResponseIncludesAPIKey(t *testing.T) { payload, err := json.Marshal(BuildAIConfigDetailResponse(&models.AIConfig{ ID: 1, Name: "test", APIKey: "sk-secret", })) if err != nil { t.Fatalf("marshal response error = %v", err) } var decoded map[string]any if err := json.Unmarshal(payload, &decoded); err != nil { t.Fatalf("unmarshal response error = %v", err) } if got := decoded["api_key"]; got != "sk-secret" { t.Fatalf("api_key = %v, want sk-secret: %s", got, payload) } }