Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-pages.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2019-12-05 15:01:05 +0300
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2019-12-05 15:01:05 +0300
commitbc54e819aa4285084698d5713170266699d4d4ed (patch)
tree41a7cdf1d9391ade291b96084ab55de20c75b303
parent70634f8693394cca63bfe84d63888992f756ad5a (diff)
Fix client when a domain is missing in NoContent case
-rw-r--r--internal/source/gitlab/client/client.go7
-rw-r--r--internal/source/gitlab/client/client_test.go20
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()