package admin import ( "bytes" "encoding/json" "net/http" "net/http/httptest" "testing" "github.com/gin-gonic/gin" "github.com/stretchr/testify/require" ) func TestAccountHandler_Create_AnthropicAPIKeyPassthroughExtraForwarded(t *testing.T) { gin.SetMode(gin.TestMode) adminSvc := newStubAdminService() handler := NewAccountHandler( adminSvc, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ) router := gin.New() router.POST("/api/v1/admin/accounts", handler.Create) body := map[string]any{ "name": "anthropic-key-1", "platform": "anthropic", "type": "apikey", "credentials": map[string]any{ "api_key": "sk-ant-xxx", "base_url": "https://api.anthropic.com", }, "extra": map[string]any{ "anthropic_passthrough": true, }, "concurrency": 1, "priority": 1, } raw, err := json.Marshal(body) require.NoError(t, err) rec := httptest.NewRecorder() req := httptest.NewRequest(http.MethodPost, "/api/v1/admin/accounts", bytes.NewReader(raw)) req.Header.Set("Content-Type", "application/json") router.ServeHTTP(rec, req) require.Equal(t, http.StatusOK, rec.Code) require.Len(t, adminSvc.createdAccounts, 1) created := adminSvc.createdAccounts[0] require.Equal(t, "anthropic", created.Platform) require.Equal(t, "apikey", created.Type) require.NotNil(t, created.Extra) require.Equal(t, true, created.Extra["anthropic_passthrough"]) }