diff --git a/pkg/sparrow/targets/remote/gitlab/gitlab.go b/pkg/sparrow/targets/remote/gitlab/gitlab.go index 537b5881..0669b40c 100644 --- a/pkg/sparrow/targets/remote/gitlab/gitlab.go +++ b/pkg/sparrow/targets/remote/gitlab/gitlab.go @@ -177,6 +177,8 @@ func (c *client) fetchNextFileList(ctx context.Context, reqUrl string) ([]string log.ErrorContext(ctx, "Failed to create request", "error", err) return nil, err } + req.Header.Add("PRIVATE-TOKEN", c.config.Token) + req.Header.Add("Content-Type", "application/json") resp, err := c.client.Do(req) if err != nil { diff --git a/pkg/sparrow/targets/remote/gitlab/gitlab_test.go b/pkg/sparrow/targets/remote/gitlab/gitlab_test.go index cdc340a6..1dc695c0 100644 --- a/pkg/sparrow/targets/remote/gitlab/gitlab_test.go +++ b/pkg/sparrow/targets/remote/gitlab/gitlab_test.go @@ -710,16 +710,20 @@ func Test_client_fetchNextFileList(t *testing.T) { t.Run(tt.name, func(t *testing.T) { // prepare http mock responder for paginated requests for _, responder := range tt.mock { - resp, err := httpmock.NewJsonResponder(responder.statusCode, responder.response) - if err != nil { - t.Fatalf("error creating mock response: %v", err) - } - - h := http.Header{} - h.Add("link", responder.linkHeader) - resp = resp.HeaderAdd(h) - - httpmock.RegisterResponder(http.MethodGet, responder.reqUrl, resp) + httpmock.RegisterResponder(http.MethodGet, responder.reqUrl, func(req *http.Request) (*http.Response, error) { + // Check if header are properly set + token := req.Header.Get("PRIVATE-TOKEN") + cType := req.Header.Get("Content-Type") + if token == "" || cType == "" { + t.Error("Some header not properly set", "PRIVATE-TOKEN", token != "", "Content-Type", cType != "") + } + + resp, err := httpmock.NewJsonResponse(responder.statusCode, responder.response) + + // Add link header for next page (pagination) + resp.Header.Set("link", responder.linkHeader) + return resp, err + }) } got, err := c.fetchNextFileList(context.Background(), tt.mock[0].reqUrl)