(t *testing.T)
| 274 | } |
| 275 | |
| 276 | func TestHTTPClient_HTTPErrors(t *testing.T) { |
| 277 | tests := []struct { |
| 278 | name string |
| 279 | statusCode int |
| 280 | expectedError string |
| 281 | }{ |
| 282 | {"bad request", http.StatusBadRequest, "API request failed with status 400"}, |
| 283 | {"not found", http.StatusNotFound, "API request failed with status 404"}, |
| 284 | {"internal server error", http.StatusInternalServerError, "API request failed with status 500"}, |
| 285 | } |
| 286 | |
| 287 | for _, tt := range tests { |
| 288 | t.Run(tt.name, func(t *testing.T) { |
| 289 | server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { |
| 290 | w.WriteHeader(tt.statusCode) |
| 291 | _, _ = w.Write([]byte("Error response")) |
| 292 | })) |
| 293 | defer server.Close() |
| 294 | |
| 295 | client := NewHTTPClient(server.Client(), server.URL, testutils.NewTestLogger()) |
| 296 | |
| 297 | var result map[string]interface{} |
| 298 | err := client.Get(context.Background(), "/test", &result) |
| 299 | |
| 300 | require.Error(t, err) |
| 301 | assert.Contains(t, err.Error(), tt.expectedError) |
| 302 | }) |
| 303 | } |
| 304 | } |
| 305 | |
| 306 | func TestHTTPClient_UnauthorizedWithAPIToken(t *testing.T) { |
| 307 | server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { |
nothing calls this directly
no test coverage detected