Ensure rate limit is still parsed, even for error responses.
(t *testing.T)
| 2446 | |
| 2447 | // Ensure rate limit is still parsed, even for error responses. |
| 2448 | func TestDo_rateLimit_errorResponse(t *testing.T) { |
| 2449 | t.Parallel() |
| 2450 | client, mux, _ := setup(t) |
| 2451 | |
| 2452 | mux.HandleFunc("/", func(w http.ResponseWriter, _ *http.Request) { |
| 2453 | w.Header().Set(HeaderRateLimit, "60") |
| 2454 | w.Header().Set(HeaderRateRemaining, "59") |
| 2455 | w.Header().Set(HeaderRateUsed, "1") |
| 2456 | w.Header().Set(HeaderRateReset, "1372700873") |
| 2457 | w.Header().Set(HeaderRateResource, "core") |
| 2458 | http.Error(w, "Bad Request", 400) |
| 2459 | }) |
| 2460 | |
| 2461 | req, _ := client.NewRequest(t.Context(), "GET", ".", nil) |
| 2462 | resp, err := client.Do(req, nil) |
| 2463 | if err == nil { |
| 2464 | t.Error("Expected error to be returned.") |
| 2465 | } |
| 2466 | if errors.As(err, new(*RateLimitError)) { |
| 2467 | t.Errorf("Did not expect a *RateLimitError error; got %#v.", err) |
| 2468 | } |
| 2469 | if got, want := resp.Rate.Limit, 60; got != want { |
| 2470 | t.Errorf("Client rate limit = %v, want %v", got, want) |
| 2471 | } |
| 2472 | if got, want := resp.Rate.Remaining, 59; got != want { |
| 2473 | t.Errorf("Client rate remaining = %v, want %v", got, want) |
| 2474 | } |
| 2475 | if got, want := resp.Rate.Used, 1; got != want { |
| 2476 | t.Errorf("Client rate used = %v, want %v", got, want) |
| 2477 | } |
| 2478 | reset := time.Date(2013, time.July, 1, 17, 47, 53, 0, time.UTC) |
| 2479 | if !resp.Rate.Reset.UTC().Equal(reset) { |
| 2480 | t.Errorf("Client rate reset = %v, want %v", resp.Rate.Reset, reset) |
| 2481 | } |
| 2482 | if got, want := resp.Rate.Resource, "core"; got != want { |
| 2483 | t.Errorf("Client rate resource = %v, want %v", got, want) |
| 2484 | } |
| 2485 | } |
| 2486 | |
| 2487 | // Ensure *RateLimitError is returned when API rate limit is exceeded. |
| 2488 | func TestDo_rateLimit_rateLimitError(t *testing.T) { |
nothing calls this directly
no test coverage detected
searching dependent graphs…