Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/tm gitlab pagination #232

Merged
merged 12 commits into from
Dec 16, 2024
Prev Previous commit
Next Next commit
feat: adding missing headers; cover headers in test
y-eight committed Dec 13, 2024
commit 00a6242277409e54335bdfab9bf13a00fd622c2e
2 changes: 2 additions & 0 deletions pkg/sparrow/targets/remote/gitlab/gitlab.go
Original file line number Diff line number Diff line change
@@ -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 {
24 changes: 14 additions & 10 deletions pkg/sparrow/targets/remote/gitlab/gitlab_test.go
Original file line number Diff line number Diff line change
@@ -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)