(t *testing.T)
| 58 | } |
| 59 | |
| 60 | func TestHTTPFetcher_Fetch(t *testing.T) { |
| 61 | t.Run("successful fetch", func(t *testing.T) { |
| 62 | server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { |
| 63 | w.WriteHeader(http.StatusOK) |
| 64 | _, _ = w.Write([]byte("test data")) |
| 65 | })) |
| 66 | defer server.Close() |
| 67 | |
| 68 | fetcher, err := NewHTTPFetcher(server.URL, server.Client()) |
| 69 | if err != nil { |
| 70 | t.Fatalf("unexpected error creating fetcher: %v", err) |
| 71 | } |
| 72 | |
| 73 | body, err := fetcher.Fetch(context.Background()) |
| 74 | if err != nil { |
| 75 | t.Fatalf("unexpected error on fetch: %v", err) |
| 76 | } |
| 77 | defer body.Close() |
| 78 | |
| 79 | data, err := io.ReadAll(body) |
| 80 | if err != nil { |
| 81 | t.Fatalf("unexpected error reading body: %v", err) |
| 82 | } |
| 83 | |
| 84 | if string(data) != "test data" { |
| 85 | t.Errorf("expected 'test data', got '%s'", string(data)) |
| 86 | } |
| 87 | }) |
| 88 | |
| 89 | t.Run("unexpected status code", func(t *testing.T) { |
| 90 | server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { |
| 91 | w.WriteHeader(http.StatusNotFound) |
| 92 | })) |
| 93 | defer server.Close() |
| 94 | |
| 95 | fetcher, err := NewHTTPFetcher(server.URL, server.Client()) |
| 96 | if err != nil { |
| 97 | t.Fatalf("unexpected error creating fetcher: %v", err) |
| 98 | } |
| 99 | |
| 100 | _, err = fetcher.Fetch(context.Background()) |
| 101 | if !errors.Is(err, fetchtypes.ErrUnexpectedResult) { |
| 102 | t.Errorf("expected ErrUnexpectedResult, got %v", err) |
| 103 | } |
| 104 | }) |
| 105 | |
| 106 | t.Run("fetch error", func(t *testing.T) { |
| 107 | // nolint:exhaustruct // WONTFIX - external struct. |
| 108 | client := &http.Client{ |
| 109 | Transport: &mockRoundTripper{ |
| 110 | roundTripFunc: func(_ *http.Request) (*http.Response, error) { |
| 111 | return nil, errors.New("network error") |
| 112 | }, |
| 113 | }, |
| 114 | } |
| 115 | |
| 116 | fetcher, err := NewHTTPFetcher("http://example.com", client) |
| 117 | if err != nil { |
nothing calls this directly
no test coverage detected