diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2019-12-05 15:01:05 +0300 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2019-12-05 15:01:05 +0300 |
commit | bc54e819aa4285084698d5713170266699d4d4ed (patch) | |
tree | 41a7cdf1d9391ade291b96084ab55de20c75b303 | |
parent | 70634f8693394cca63bfe84d63888992f756ad5a (diff) |
Fix client when a domain is missing in NoContent case
-rw-r--r-- | internal/source/gitlab/client/client.go | 7 | ||||
-rw-r--r-- | internal/source/gitlab/client/client_test.go | 20 |
2 files changed, 23 insertions, 4 deletions
diff --git a/internal/source/gitlab/client/client.go b/internal/source/gitlab/client/client.go index a230e529..628e2091 100644 --- a/internal/source/gitlab/client/client.go +++ b/internal/source/gitlab/client/client.go @@ -23,7 +23,6 @@ type Client struct { var ( errUnknown = errors.New("Unknown") - errNoContent = errors.New("No Content") errUnauthorized = errors.New("Unauthorized") errNotFound = errors.New("Not Found") ) @@ -77,7 +76,7 @@ func (gc *Client) GetLookup(ctx context.Context, host string) api.Lookup { lookup.Status = status lookup.Error = err - if err != nil { + if err != nil || status == http.StatusNoContent { return lookup } @@ -107,10 +106,12 @@ func (gc *Client) get(ctx context.Context, path string, params url.Values) (*htt } switch { + // StatusOK means we should return the API response case resp.StatusCode == http.StatusOK: return resp, resp.StatusCode, nil + // StatusNoContent means that a domain does not exist, it is not an error case resp.StatusCode == http.StatusNoContent: - return resp, resp.StatusCode, errNoContent + return resp, resp.StatusCode, nil case resp.StatusCode == http.StatusUnauthorized: return resp, resp.StatusCode, errUnauthorized case resp.StatusCode == http.StatusNotFound: diff --git a/internal/source/gitlab/client/client_test.go b/internal/source/gitlab/client/client_test.go index df4d080f..9b7632bd 100644 --- a/internal/source/gitlab/client/client_test.go +++ b/internal/source/gitlab/client/client_test.go @@ -48,7 +48,6 @@ func TestNewInvalidBaseURL(t *testing.T) { func TestLookupForErrorResponses(t *testing.T) { tests := map[int]string{ - http.StatusNoContent: "No Content", http.StatusUnauthorized: "Unauthorized", http.StatusNotFound: "Not Found", } @@ -76,6 +75,25 @@ func TestLookupForErrorResponses(t *testing.T) { } } +func TestMissingDomain(t *testing.T) { + mux := http.NewServeMux() + + mux.HandleFunc("/api/v4/internal/pages", func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusNoContent) + }) + + server := httptest.NewServer(mux) + defer server.Close() + + client, err := NewClient(server.URL, secretKey()) + require.NoError(t, err) + + lookup := client.GetLookup(context.Background(), "group.gitlab.io") + + require.NoError(t, lookup.Error) + require.Equal(t, lookup.Domain, api.VirtualDomain{}) +} + func TestGetVirtualDomainAuthenticatedRequest(t *testing.T) { mux := http.NewServeMux() |