diff --git a/services/migrations/gitlab.go b/services/migrations/gitlab.go index f54f682c47..b58046c4fc 100644 --- a/services/migrations/gitlab.go +++ b/services/migrations/gitlab.go @@ -12,6 +12,7 @@ import ( "net/url" "path" "regexp" + "strconv" "strings" "time" @@ -453,12 +454,15 @@ func (g *GitlabDownloader) GetIssues(page, perPage int) ([]*base.Issue, bool, er awardPage++ } + // record the issue IID, to be used in GetPullRequests() + g.iidResolver.recordIssueIID(issue.IID) + allIssues = append(allIssues, &base.Issue{ Title: issue.Title, Number: int64(issue.IID), PosterID: int64(issue.Author.ID), PosterName: issue.Author.Username, - Content: issue.Description, + Content: g.convertMRReference(issue.Description), Milestone: milestone, State: issue.State, Created: *issue.CreatedAt, @@ -470,9 +474,6 @@ func (g *GitlabDownloader) GetIssues(page, perPage int) ([]*base.Issue, bool, er ForeignIndex: int64(issue.IID), Context: gitlabIssueContext{IsMergeRequest: false}, }) - - // record the issue IID, to be used in GetPullRequests() - g.iidResolver.recordIssueIID(issue.IID) } return allIssues, len(issues) < perPage, nil @@ -593,7 +594,7 @@ func (g *GitlabDownloader) convertNoteToComment(localIndex int64, note *gitlab.N PosterID: int64(note.Author.ID), PosterName: note.Author.Username, PosterEmail: note.Author.Email, - Content: note.Body, + Content: g.convertMRReference(note.Body), Created: *note.CreatedAt, Meta: map[string]any{}, } @@ -706,7 +707,7 @@ func (g *GitlabDownloader) GetPullRequests(page, perPage int) ([]*base.PullReque Number: newPRNumber, PosterName: pr.Author.Username, PosterID: int64(pr.Author.ID), - Content: pr.Description, + Content: g.convertMRReference(pr.Description), Milestone: milestone, State: pr.State, Created: *pr.CreatedAt, @@ -793,3 +794,40 @@ func (g *GitlabDownloader) awardsToReactions(awards []*gitlab.AwardEmoji) []*bas } return result } + +// Build on the assumption, that PR IDs will resolve after Issue IDs +func (g *GitlabDownloader) convertMRReference(body string) string { + maxLength := len(body) + for i := 0; i < maxLength; i++ { + if body[i] == '!' { + var collected string + for k := i + 1; k < maxLength; k++ { // for each rune after ! check if next rune is integer + if body[k]-'0' <= 9 { + collected += string(body[k]) + if k == maxLength-1 { // The last rune in the string was an integer + body = g.updateAndInsert(body, collected, i+1, k) + } + } else if len(collected) > 0 { // Integers have been collected, update value + body = g.updateAndInsert(body, collected, i+1, k) + maxLength = len(body) + i = k + break // We're done, continue after our replacement + } + } + } + } + return body +} + +func (g *GitlabDownloader) updateAndInsert(description, oldReference string, endFirst, startSecond int) string { + oldVal, _ := strconv.Atoi(oldReference) + newVal := oldVal + int(g.iidResolver.maxIssueIID) + firstPart := description[0:endFirst] + firstPart += strconv.Itoa(newVal) + var secondPart string + if startSecond < len(description)-1 { + secondPart = description[startSecond:] + } + description = firstPart + secondPart + return description +} diff --git a/services/migrations/gitlab_test.go b/services/migrations/gitlab_test.go index 30b24f09e8..2a1ecc1c9f 100644 --- a/services/migrations/gitlab_test.go +++ b/services/migrations/gitlab_test.go @@ -135,7 +135,7 @@ func TestGitlabDownloadRepo(t *testing.T) { }, }, releases) - issues, isEnd, err := downloader.GetIssues(1, 2) + issues, isEnd, err := downloader.GetIssues(1, 3) require.NoError(t, err) assert.False(t, isEnd) assertIssuesEqual(t, []*base.Issue{ @@ -220,6 +220,19 @@ func TestGitlabDownloadRepo(t *testing.T) { }, Closed: timePtr(time.Date(2024, 9, 3, 14, 43, 10, 906000000, time.UTC)), }, + { + Number: 3, + Title: "Fix plz", + Content: "Can we do something about it? !5 is maybe related to that.", + Milestone: "", + PosterID: 10529876, + PosterName: "patdyn", + State: "opened", + Created: time.Date(2025, time.November, 25, 9, 49, 31, 991000000, time.UTC), + Updated: time.Date(2025, time.November, 25, 9, 49, 31, 991000000, time.UTC), + Labels: []*base.Label{}, + Reactions: []*base.Reaction{}, + }, }, issues) comments, _, err := downloader.GetComments(&base.Issue{ @@ -256,11 +269,85 @@ func TestGitlabDownloadRepo(t *testing.T) { }, }, comments) - prs, _, err := downloader.GetPullRequests(1, 1) + comments, _, err = downloader.GetComments(&base.Issue{ + Number: 3, + ForeignIndex: 3, + Context: gitlabIssueContext{IsMergeRequest: false}, + }) + require.NoError(t, err) + assertCommentsEqual(t, []*base.Comment{ + { + IssueIndex: 3, + PosterID: 10529876, + PosterName: "patdyn", + Created: time.Date(2025, time.November, 25, 9, 49, 50, 899000000, time.UTC), + Content: "No actually its !4", + Reactions: nil, + }, + }, comments) + + comments, _, err = downloader.GetComments(&base.Issue{ + Number: 5, + ForeignIndex: 2, + Context: gitlabIssueContext{IsMergeRequest: true}, + }) + require.NoError(t, err) + assertCommentsEqual(t, []*base.Comment{ + { + IssueIndex: 5, + PosterID: 10529876, + PosterName: "patdyn", + Created: time.Date(2025, time.November, 25, 9, 49, 0, 750000000, time.UTC), + Content: "Although we had some trouble with !4", + Reactions: nil, + }, + { + IssueIndex: 5, + PosterID: 10529876, + PosterName: "patdyn", + Created: time.Date(2025, time.November, 25, 9, 49, 32, 263000000, time.UTC), + Content: "mentioned in issue #3", + Reactions: nil, + }, + }, comments) + + prs, _, err := downloader.GetPullRequests(1, 2) require.NoError(t, err) assertPullRequestsEqual(t, []*base.PullRequest{ { - Number: 3, + Number: 5, + Title: "Test/parsing", + Content: "Simillar to !4 this solves an issue.", + Milestone: "", + PosterID: 10529876, + PosterName: "patdyn", + State: "opened", + Created: time.Date(2025, time.November, 25, 9, 48, 20, 259000000, time.UTC), + Labels: []*base.Label{}, + Reactions: []*base.Reaction{}, + PatchURL: server.URL + "/forgejo/test_repo/-/merge_requests/2.patch", + Head: base.PullRequestBranch{ + Ref: "test/parsing", + CloneURL: server.URL + "/forgejo/test_repo/-/merge_requests/2", + SHA: "c59c9b451acca9d106cc19d61d87afe3fbbb8b83", + RepoName: "test_repo", + OwnerName: "patdyn", + }, + Base: base.PullRequestBranch{ + Ref: "master", + SHA: "c59c9b451acca9d106cc19d61d87afe3fbbb8b83", + OwnerName: "patdyn", + RepoName: "test_repo", + }, + Closed: nil, + Merged: false, + MergedTime: nil, + MergeCommitSHA: "", + ForeignIndex: 2, + Context: gitlabIssueContext{IsMergeRequest: true}, + }, + { + Number: 4, Title: "Test branch", Content: "do not merge this PR", Milestone: "1.1.0", @@ -303,7 +390,7 @@ func TestGitlabDownloadRepo(t *testing.T) { Merged: false, MergedTime: nil, MergeCommitSHA: "", - ForeignIndex: 2, + ForeignIndex: 1, Context: gitlabIssueContext{IsMergeRequest: true}, }, }, prs) @@ -545,36 +632,37 @@ func TestAwardsToReactions(t *testing.T) { }, reactions) } +func makeTestNote(id int, body string, system bool, t time.Time) gitlab.Note { + return gitlab.Note{ + ID: id, + Author: struct { + ID int `json:"id"` + Username string `json:"username"` + Email string `json:"email"` + Name string `json:"name"` + State string `json:"state"` + AvatarURL string `json:"avatar_url"` + WebURL string `json:"web_url"` + }{ + ID: 72, + Email: "test@example.com", + Username: "test", + }, + Body: body, + CreatedAt: &t, + System: system, + } +} + func TestNoteToComment(t *testing.T) { downloader := &GitlabDownloader{} now := time.Now() - makeTestNote := func(id int, body string, system bool) gitlab.Note { - return gitlab.Note{ - ID: id, - Author: struct { - ID int `json:"id"` - Username string `json:"username"` - Email string `json:"email"` - Name string `json:"name"` - State string `json:"state"` - AvatarURL string `json:"avatar_url"` - WebURL string `json:"web_url"` - }{ - ID: 72, - Email: "test@example.com", - Username: "test", - }, - Body: body, - CreatedAt: &now, - System: system, - } - } notes := []gitlab.Note{ - makeTestNote(1, "This is a regular comment", false), - makeTestNote(2, "enabled an automatic merge for abcd1234", true), - makeTestNote(3, "changed target branch from `master` to `main`", true), - makeTestNote(4, "canceled the automatic merge", true), + makeTestNote(1, "This is a regular comment", false, now), + makeTestNote(2, "enabled an automatic merge for abcd1234", true, now), + makeTestNote(3, "changed target branch from `master` to `main`", true, now), + makeTestNote(4, "canceled the automatic merge", true, now), } comments := []base.Comment{{ IssueIndex: 17, @@ -643,3 +731,32 @@ func TestGitlabIIDResolver(t *testing.T) { r.recordIssueIID(3) // the generation procedure has been started, it shouldn't accept any new issue IID, so it panics }) } + +func TestCommentBodyParser(t *testing.T) { + downloader := GitlabDownloader{} + downloader.iidResolver.maxIssueIID = int64(10) + now := time.Now() + + // Gitlab note references issue with #N and PR with !M, with N and M being arbitrary integers, so N == M is possible + testNote1 := makeTestNote(1, "Simillar to #9, may be solved in !4", false, now) + testNote2 := makeTestNote(2, "Simillar to #21, may be solved in !144", false, now) + testNote3 := makeTestNote(3, "Should actually be discussed in !5 or !6 and not in #2 (here)", false, now) + testNote4 := makeTestNote(4, "Closed by !1 and !14", false, now) + testNote5 := makeTestNote(5, "Actually !1 and !1 are the same but !100 and !214 are not", false, now) + testNote6 := makeTestNote(6, "!11 and !1 are simillar but !201 and !100 are not!", false, now) + + parsedBody1 := downloader.convertMRReference(testNote1.Body) + parsedBody2 := downloader.convertMRReference(testNote2.Body) + parsedBody3 := downloader.convertMRReference(testNote3.Body) + parsedBody4 := downloader.convertMRReference(testNote4.Body) + parsedBody5 := downloader.convertMRReference(testNote5.Body) + parsedBody6 := downloader.convertMRReference(testNote6.Body) + + // Assuming a total of 20 comments + PRs + assert.Equal(t, "Simillar to #9, may be solved in !14", parsedBody1) + assert.Equal(t, "Simillar to #21, may be solved in !154", parsedBody2) + assert.Equal(t, "Should actually be discussed in !15 or !16 and not in #2 (here)", parsedBody3) + assert.Equal(t, "Closed by !11 and !24", parsedBody4) + assert.Equal(t, "Actually !11 and !11 are the same but !110 and !224 are not", parsedBody5) + assert.Equal(t, "!21 and !11 are simillar but !211 and !110 are not!", parsedBody6) +} diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672 index 73532bf751..8dac7b406b 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672 @@ -1,17 +1,23 @@ -X-Runtime: 0.155648 Cache-Control: max-age=0, private, must-revalidate -Strict-Transport-Security: max-age=31536000 -Gitlab-Lb: haproxy-main-41-lb-gprd -Set-Cookie: _cfuvid=BI.nVv95qBu88KUbTZy0ZZJlRApJuj4nHeovyNu0YlU-1725394794027-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Content-Security-Policy: default-src 'none' -X-Frame-Options: SAMEORIGIN -X-Gitlab-Meta: {"correlation_id":"6f22438486feec038cd6ea9f15b00ae5","version":"1"} +Etag: W/"c77cec95a47ea2b28a897b9b9eaaf641" +Gitlab-Lb: haproxy-main-28-lb-gprd +Gitlab-Sv: api-gke-us-east1-b +Ratelimit-Reset: 1764067260 Cf-Cache-Status: MISS +Strict-Transport-Security: max-age=31536000 +Content-Security-Policy: default-src 'none' +Ratelimit-Limit: 2000 +Ratelimit-Observed: 4 +Referrer-Policy: strict-origin-when-cross-origin +X-Runtime: 0.280463 Content-Type: application/json -Etag: W/"b36bd4522b7e8b2509078271491fb972" Vary: Origin, Accept-Encoding X-Content-Type-Options: nosniff -Referrer-Policy: strict-origin-when-cross-origin -Gitlab-Sv: api-gke-us-east1-d +X-Frame-Options: SAMEORIGIN +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Remaining: 1996 +X-Gitlab-Meta: {"correlation_id":"9a40876c7564e0d9-ATL","version":"1"} +Set-Cookie: __cf_bm=pNVcnucqgoXcZjvxr101uQXpAxglmowlLAItA.WHiEE-1764067238-1.0.1.1-bHnsERU82S.3aXviQYZyZ.Wpz1M9bl64MxY81EF8r68DhKfk4q01V_P2K2xdnH2EisJA8NJCH8S6WRN17yBWvtpyv3KTgEM.fWZTzzVvsnE; path=/; expires=Tue, 25-Nov-25 11:10:38 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=IeTcO1.iXZQZ_rk.w1KsaEts1gdvZO2RzZzYRR6IKU0-1764067238254-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -{"id":61363672,"description":"Test repository for testing migration from gitlab to forgejo","name":"test_repo","name_with_namespace":"Forgejo / test_repo","path":"test_repo","path_with_namespace":"forgejo/test_repo","created_at":"2024-09-03T07:44:30.668Z","default_branch":"master","tag_list":["migration","test"],"topics":["migration","test"],"ssh_url_to_repo":"git@gitlab.com:forgejo/test_repo.git","http_url_to_repo":"https://gitlab.com/forgejo/test_repo.git","web_url":"https://gitlab.com/forgejo/test_repo","readme_url":"https://gitlab.com/forgejo/test_repo/-/blob/master/README.md","forks_count":0,"avatar_url":null,"star_count":0,"last_activity_at":"2024-09-03T20:03:18.187Z","namespace":{"id":64459497,"name":"Forgejo","path":"forgejo","kind":"group","full_path":"forgejo","parent_id":null,"avatar_url":"/uploads/-/system/group/avatar/64459497/73144-c883a242dec5299fbc06bbe3ee71d8c6.png","web_url":"https://gitlab.com/groups/forgejo"},"forked_from_project":{"id":15578026,"description":"Test repository for testing migration from gitlab to gitea","name":"test_repo","name_with_namespace":"gitea / test_repo","path":"test_repo","path_with_namespace":"gitea/test_repo","created_at":"2019-11-28T08:20:33.019Z","default_branch":"master","tag_list":["migration","test"],"topics":["migration","test"],"ssh_url_to_repo":"git@gitlab.com:gitea/test_repo.git","http_url_to_repo":"https://gitlab.com/gitea/test_repo.git","web_url":"https://gitlab.com/gitea/test_repo","readme_url":"https://gitlab.com/gitea/test_repo/-/blob/master/README.md","forks_count":2,"avatar_url":null,"star_count":0,"last_activity_at":"2024-09-03T07:52:28.488Z","namespace":{"id":3181312,"name":"gitea","path":"gitea","kind":"group","full_path":"gitea","parent_id":null,"avatar_url":"/uploads/-/system/group/avatar/3181312/gitea.png","web_url":"https://gitlab.com/groups/gitea"}},"container_registry_image_prefix":"registry.gitlab.com/forgejo/test_repo","_links":{"self":"https://gitlab.com/api/v4/projects/61363672","issues":"https://gitlab.com/api/v4/projects/61363672/issues","merge_requests":"https://gitlab.com/api/v4/projects/61363672/merge_requests","repo_branches":"https://gitlab.com/api/v4/projects/61363672/repository/branches","labels":"https://gitlab.com/api/v4/projects/61363672/labels","events":"https://gitlab.com/api/v4/projects/61363672/events","members":"https://gitlab.com/api/v4/projects/61363672/members","cluster_agents":"https://gitlab.com/api/v4/projects/61363672/cluster_agents"},"packages_enabled":true,"empty_repo":false,"archived":false,"visibility":"public","resolve_outdated_diff_discussions":false,"container_expiration_policy":{"cadence":"1d","enabled":false,"keep_n":10,"older_than":"90d","name_regex":".*","name_regex_keep":null,"next_run_at":"2024-09-04T07:44:30.699Z"},"repository_object_format":"sha1","issues_enabled":true,"merge_requests_enabled":true,"wiki_enabled":true,"jobs_enabled":true,"snippets_enabled":true,"container_registry_enabled":true,"service_desk_enabled":true,"service_desk_address":"contact-project+forgejo-test-repo-61363672-issue-@incoming.gitlab.com","can_create_merge_request_in":true,"issues_access_level":"enabled","repository_access_level":"enabled","merge_requests_access_level":"enabled","forking_access_level":"enabled","wiki_access_level":"enabled","builds_access_level":"enabled","snippets_access_level":"enabled","pages_access_level":"enabled","analytics_access_level":"enabled","container_registry_access_level":"enabled","security_and_compliance_access_level":"private","releases_access_level":"enabled","environments_access_level":"enabled","feature_flags_access_level":"enabled","infrastructure_access_level":"enabled","monitor_access_level":"enabled","model_experiments_access_level":"enabled","model_registry_access_level":"enabled","emails_disabled":false,"emails_enabled":true,"shared_runners_enabled":true,"lfs_enabled":true,"creator_id":2005797,"mr_default_target_self":false,"import_url":null,"import_type":null,"import_status":"finished","import_error":null,"open_issues_count":0,"description_html":"\u003cp data-sourcepos=\"1:1-1:60\" dir=\"auto\"\u003eTest repository for testing migration from gitlab to forgejo\u003c/p\u003e","updated_at":"2024-09-03T20:03:18.187Z","ci_default_git_depth":50,"ci_forward_deployment_enabled":true,"ci_forward_deployment_rollback_allowed":true,"ci_job_token_scope_enabled":false,"ci_separated_caches":true,"ci_allow_fork_pipelines_to_run_in_parent_project":true,"ci_id_token_sub_claim_components":["project_path","ref_type","ref"],"build_git_strategy":"fetch","keep_latest_artifact":true,"restrict_user_defined_variables":false,"ci_pipeline_variables_minimum_override_role":"maintainer","runners_token":null,"runner_token_expiration_interval":null,"group_runners_enabled":true,"auto_cancel_pending_pipelines":"enabled","build_timeout":3600,"auto_devops_enabled":false,"auto_devops_deploy_strategy":"continuous","ci_push_repository_for_job_token_allowed":false,"ci_config_path":null,"public_jobs":true,"shared_with_groups":[],"only_allow_merge_if_pipeline_succeeds":false,"allow_merge_on_skipped_pipeline":null,"request_access_enabled":true,"only_allow_merge_if_all_discussions_are_resolved":false,"remove_source_branch_after_merge":true,"printing_merge_request_link_enabled":true,"merge_method":"merge","squash_option":"default_off","enforce_auth_checks_on_uploads":true,"suggestion_commit_message":null,"merge_commit_template":null,"squash_commit_template":null,"issue_branch_template":null,"warn_about_potentially_unwanted_characters":true,"autoclose_referenced_issues":true,"external_authorization_classification_label":"","requirements_enabled":false,"requirements_access_level":"enabled","security_and_compliance_enabled":true,"pre_receive_secret_detection_enabled":false,"compliance_frameworks":[],"permissions":{"project_access":{"access_level":40,"notification_level":3},"group_access":null}} \ No newline at end of file +{"id":61363672,"description":"Test repository for testing migration from gitlab to forgejo","name":"test_repo","name_with_namespace":"Forgejo / test_repo","path":"test_repo","path_with_namespace":"forgejo/test_repo","created_at":"2024-09-03T07:44:30.668Z","default_branch":"master","tag_list":["migration","test"],"topics":["migration","test"],"ssh_url_to_repo":"git@gitlab.com:forgejo/test_repo.git","http_url_to_repo":"https://gitlab.com/forgejo/test_repo.git","web_url":"https://gitlab.com/forgejo/test_repo","readme_url":"https://gitlab.com/forgejo/test_repo/-/blob/master/README.md","forks_count":0,"avatar_url":null,"star_count":0,"last_activity_at":"2025-11-25T09:03:01.001Z","visibility":"public","namespace":{"id":64459497,"name":"Forgejo","path":"forgejo","kind":"group","full_path":"forgejo","parent_id":null,"avatar_url":"/uploads/-/system/group/avatar/64459497/73144-c883a242dec5299fbc06bbe3ee71d8c6.png","web_url":"https://gitlab.com/groups/forgejo"},"forked_from_project":{"id":15578026,"description":"Test repository for testing migration from gitlab to gitea","name":"test_repo","name_with_namespace":"gitea / test_repo","path":"test_repo","path_with_namespace":"gitea/test_repo","created_at":"2019-11-28T08:20:33.019Z","default_branch":"master","tag_list":["migration","test"],"topics":["migration","test"],"ssh_url_to_repo":"git@gitlab.com:gitea/test_repo.git","http_url_to_repo":"https://gitlab.com/gitea/test_repo.git","web_url":"https://gitlab.com/gitea/test_repo","readme_url":"https://gitlab.com/gitea/test_repo/-/blob/master/README.md","forks_count":2,"avatar_url":null,"star_count":0,"last_activity_at":"2025-11-25T09:21:43.130Z","visibility":"public","namespace":{"id":3181312,"name":"gitea","path":"gitea","kind":"group","full_path":"gitea","parent_id":null,"avatar_url":"/uploads/-/system/group/avatar/3181312/gitea.png","web_url":"https://gitlab.com/groups/gitea"}},"container_registry_image_prefix":"registry.gitlab.com/forgejo/test_repo","_links":{"self":"https://gitlab.com/api/v4/projects/61363672","issues":"https://gitlab.com/api/v4/projects/61363672/issues","merge_requests":"https://gitlab.com/api/v4/projects/61363672/merge_requests","repo_branches":"https://gitlab.com/api/v4/projects/61363672/repository/branches","labels":"https://gitlab.com/api/v4/projects/61363672/labels","events":"https://gitlab.com/api/v4/projects/61363672/events","members":"https://gitlab.com/api/v4/projects/61363672/members","cluster_agents":"https://gitlab.com/api/v4/projects/61363672/cluster_agents"},"marked_for_deletion_at":null,"marked_for_deletion_on":null,"packages_enabled":true,"empty_repo":false,"archived":false,"resolve_outdated_diff_discussions":false,"container_expiration_policy":{"cadence":"1d","enabled":false,"keep_n":10,"older_than":"90d","name_regex":".*","name_regex_keep":null,"next_run_at":"2024-09-04T07:44:30.699Z"},"repository_object_format":"sha1","issues_enabled":true,"merge_requests_enabled":true,"wiki_enabled":true,"jobs_enabled":true,"snippets_enabled":true,"container_registry_enabled":true,"service_desk_enabled":true,"service_desk_address":"contact-project+forgejo-test-repo-61363672-issue-@incoming.gitlab.com","can_create_merge_request_in":true,"issues_access_level":"enabled","repository_access_level":"enabled","merge_requests_access_level":"enabled","forking_access_level":"enabled","wiki_access_level":"enabled","builds_access_level":"enabled","snippets_access_level":"enabled","pages_access_level":"enabled","analytics_access_level":"enabled","container_registry_access_level":"enabled","security_and_compliance_access_level":"private","releases_access_level":"enabled","environments_access_level":"enabled","feature_flags_access_level":"enabled","infrastructure_access_level":"enabled","monitor_access_level":"enabled","model_experiments_access_level":"enabled","model_registry_access_level":"enabled","package_registry_access_level":"public","emails_disabled":false,"emails_enabled":true,"show_diff_preview_in_email":true,"shared_runners_enabled":true,"lfs_enabled":true,"creator_id":2005797,"mr_default_target_self":false,"import_url":null,"import_type":null,"import_status":"finished","import_error":null,"open_issues_count":1,"description_html":"\u003cp data-sourcepos=\"1:1-1:60\" dir=\"auto\"\u003eTest repository for testing migration from gitlab to forgejo\u003c/p\u003e","updated_at":"2025-11-25T09:21:03.121Z","ci_default_git_depth":50,"ci_delete_pipelines_in_seconds":null,"ci_forward_deployment_enabled":true,"ci_forward_deployment_rollback_allowed":true,"ci_job_token_scope_enabled":false,"ci_separated_caches":true,"ci_allow_fork_pipelines_to_run_in_parent_project":true,"ci_id_token_sub_claim_components":["project_path","ref_type","ref"],"build_git_strategy":"fetch","keep_latest_artifact":true,"restrict_user_defined_variables":false,"ci_pipeline_variables_minimum_override_role":"developer","runner_token_expiration_interval":null,"group_runners_enabled":true,"resource_group_default_process_mode":"unordered","auto_cancel_pending_pipelines":"enabled","build_timeout":3600,"auto_devops_enabled":false,"auto_devops_deploy_strategy":"continuous","ci_push_repository_for_job_token_allowed":false,"ci_config_path":null,"public_jobs":true,"shared_with_groups":[],"only_allow_merge_if_pipeline_succeeds":false,"allow_merge_on_skipped_pipeline":null,"request_access_enabled":true,"only_allow_merge_if_all_discussions_are_resolved":false,"remove_source_branch_after_merge":true,"printing_merge_request_link_enabled":true,"merge_method":"merge","merge_request_title_regex":null,"merge_request_title_regex_description":null,"squash_option":"default_off","enforce_auth_checks_on_uploads":true,"suggestion_commit_message":null,"merge_commit_template":null,"squash_commit_template":null,"issue_branch_template":null,"warn_about_potentially_unwanted_characters":true,"autoclose_referenced_issues":true,"max_artifacts_size":null,"external_authorization_classification_label":"","requirements_enabled":false,"requirements_access_level":"enabled","security_and_compliance_enabled":true,"compliance_frameworks":[],"duo_remote_flows_enabled":true,"duo_foundational_flows_enabled":false,"web_based_commit_signing_enabled":false,"permissions":{"project_access":{"access_level":40,"notification_level":3},"group_access":null}} \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F1%2Faward_emoji%3Fpage=1&per_page=2 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F1%2Faward_emoji%3Fpage=1&per_page=2 index ce2eb627ed..c95d5fd2ea 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F1%2Faward_emoji%3Fpage=1&per_page=2 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F1%2Faward_emoji%3Fpage=1&per_page=2 @@ -1,24 +1,30 @@ -X-Total-Pages: 1 -X-Next-Page: -Vary: Origin, Accept-Encoding -X-Prev-Page: -Gitlab-Sv: api-gke-us-east1-b -Cache-Control: max-age=0, private, must-revalidate -X-Total: 2 -Strict-Transport-Security: max-age=31536000 -Cf-Cache-Status: MISS -Link: ; rel="first", ; rel="last" -X-Frame-Options: SAMEORIGIN -Etag: W/"9eaad78fd40f769d67d34daaf19cfbab" -X-Content-Type-Options: nosniff +Ratelimit-Limit: 2000 +X-Gitlab-Meta: {"correlation_id":"9a405365d6794fc7-ATL","version":"1"} X-Page: 1 -Referrer-Policy: strict-origin-when-cross-origin -Set-Cookie: _cfuvid=8x.5zI7i_tau_4nKnR1WNvq_Cb_48MmatAHtHqxalEA-1725394795846-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Content-Type: application/json -Content-Security-Policy: default-src 'none' X-Per-Page: 2 -X-Runtime: 0.062405 -X-Gitlab-Meta: {"correlation_id":"d7fc12667b2139b99804080170986c28","version":"1"} -Gitlab-Lb: haproxy-main-18-lb-gprd +Set-Cookie: __cf_bm=C5GGirb47y1AnxdEybainR1wHe_wFq41P5zDjTZX3yk-1764065107-1.0.1.1-mWi3KtIRmcyLamp2D2O3UsEVFAAu65Kq6r.fkCp9g7iBN9NXkpBwglhkU0pH0XEoKCoY7qLFRA6dcjdYRqzU4Wrezc9nf_FvtZ1tDxbRLM4; path=/; expires=Tue, 25-Nov-25 10:35:07 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=DJAtB6RFRWI32R0nVIBcUFeqnT.fjNBWrZdi.MUzDds-1764065107320-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Link: ; rel="first", ; rel="last" +Content-Security-Policy: default-src 'none' +Gitlab-Lb: haproxy-main-43-lb-gprd +X-Content-Type-Options: nosniff +X-Runtime: 0.114443 +Cache-Control: max-age=0, private, must-revalidate +Strict-Transport-Security: max-age=31536000 +Ratelimit-Remaining: 1991 +Ratelimit-Observed: 9 +X-Next-Page: +X-Prev-Page: +X-Total-Pages: 1 +Cf-Cache-Status: MISS +Referrer-Policy: strict-origin-when-cross-origin +X-Frame-Options: SAMEORIGIN +Content-Type: application/json +Vary: Origin, Accept-Encoding +Gitlab-Sv: api-gke-us-east1-b +Ratelimit-Reset: 1764065160 +Etag: W/"8a63dd18b47e217645efd63790d939b6" +Ratelimit-Name: throttle_authenticated_api +X-Total: 2 -[{"id":28099429,"name":"thumbsup","user":{"id":548513,"username":"mkobel","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T19:56:19.487Z","updated_at":"2024-09-03T19:56:19.487Z","awardable_id":152568896,"awardable_type":"Issue","url":null},{"id":28099432,"name":"open_mouth","user":{"id":548513,"username":"mkobel","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T19:56:24.365Z","updated_at":"2024-09-03T19:56:24.365Z","awardable_id":152568896,"awardable_type":"Issue","url":null}] \ No newline at end of file +[{"id":28099429,"name":"thumbsup","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T19:56:19.487Z","updated_at":"2024-09-03T19:56:19.487Z","awardable_id":152568896,"awardable_type":"Issue","url":null},{"id":28099432,"name":"open_mouth","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T19:56:24.365Z","updated_at":"2024-09-03T19:56:24.365Z","awardable_id":152568896,"awardable_type":"Issue","url":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F1%2Faward_emoji%3Fpage=1&per_page=3 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F1%2Faward_emoji%3Fpage=1&per_page=3 new file mode 100644 index 0000000000..e480d6431f --- /dev/null +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F1%2Faward_emoji%3Fpage=1&per_page=3 @@ -0,0 +1,30 @@ +Content-Type: application/json +Gitlab-Sv: api-gke-us-east1-c +Ratelimit-Limit: 2000 +X-Total-Pages: 1 +Cf-Cache-Status: MISS +X-Per-Page: 3 +X-Prev-Page: +Set-Cookie: __cf_bm=AMkW.FglpczGT7nCMi_moniL9P4E.UGt4JDm070vKFE-1764067240-1.0.1.1-3QZwxgak9dKmN8t8sAA11eCLyiWdDjbVaWuGfyVvF.bMk3qQb08X9.n7foHiwljxlG9XcXaGQLJ9RzqwPJGViCz2nTZw7my.wVKi4dECxaA; path=/; expires=Tue, 25-Nov-25 11:10:40 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=VDNJkuLs.DLPThrJdTl9P4NavYEsbxLAbkpfYeG_TIo-1764067240555-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Cache-Control: max-age=0, private, must-revalidate +Strict-Transport-Security: max-age=31536000 +Content-Security-Policy: default-src 'none' +Ratelimit-Remaining: 1991 +Ratelimit-Reset: 1764067260 +X-Frame-Options: SAMEORIGIN +X-Gitlab-Meta: {"correlation_id":"9a40877bd3c5e0d9-ATL","version":"1"} +X-Next-Page: +Vary: Origin, Accept-Encoding +Ratelimit-Observed: 9 +X-Page: 1 +Link: ; rel="first", ; rel="last" +X-Total: 2 +Ratelimit-Name: throttle_authenticated_api +Referrer-Policy: strict-origin-when-cross-origin +X-Content-Type-Options: nosniff +X-Runtime: 0.114023 +Etag: W/"8a63dd18b47e217645efd63790d939b6" +Gitlab-Lb: haproxy-main-38-lb-gprd + +[{"id":28099429,"name":"thumbsup","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T19:56:19.487Z","updated_at":"2024-09-03T19:56:19.487Z","awardable_id":152568896,"awardable_type":"Issue","url":null},{"id":28099432,"name":"open_mouth","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T19:56:24.365Z","updated_at":"2024-09-03T19:56:24.365Z","awardable_id":152568896,"awardable_type":"Issue","url":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F1%2Faward_emoji%3Fpage=2&per_page=2 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F1%2Faward_emoji%3Fpage=2&per_page=2 index 7755d80dc8..fba1ea703f 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F1%2Faward_emoji%3Fpage=2&per_page=2 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F1%2Faward_emoji%3Fpage=2&per_page=2 @@ -1,26 +1,32 @@ -X-Next-Page: -Accept-Ranges: bytes -X-Frame-Options: SAMEORIGIN -Strict-Transport-Security: max-age=31536000 +X-Total: 2 Content-Length: 2 -Link: ; rel="first", ; rel="last" -Cf-Cache-Status: MISS X-Per-Page: 2 Cache-Control: max-age=0, private, must-revalidate Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" -Vary: Origin, Accept-Encoding -Set-Cookie: _cfuvid=hSs90HRbG8m0_RpN8VaCLGaQcrBX1vjr5h0LpLouZrg-1725394796397-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -X-Gitlab-Meta: {"correlation_id":"7ecc8cd91d20fdae3efed851c53b3009","version":"1"} -X-Total: 2 -Gitlab-Lb: haproxy-main-55-lb-gprd -X-Page: 2 -X-Runtime: 0.059820 -Referrer-Policy: strict-origin-when-cross-origin -X-Prev-Page: +Strict-Transport-Security: max-age=31536000 +Ratelimit-Observed: 10 +X-Runtime: 0.093808 X-Total-Pages: 1 -Gitlab-Sv: api-gke-us-east1-c +Accept-Ranges: bytes +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Remaining: 1990 +X-Next-Page: +Set-Cookie: __cf_bm=krmSIgoXy70nwccNzKrKDrmGomsstoTv.pb2G609iS8-1764065107-1.0.1.1-O3bOtgk9Cm4h3Nr5ppRJDGdeQ7ojT70JRYEWnC7I2W8eegxfQG4mhNRRmmbsU86z9feGvE2FRtyPC8WcznS3cvzBO4v0i1K9bifxgfMT3Jg; path=/; expires=Tue, 25-Nov-25 10:35:07 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=3IXI51wbK6iOCjIgl35YHfmHOshYnQFoepGa8MPgbzQ-1764065107606-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None Content-Type: application/json -Content-Security-Policy: default-src 'none' +Link: ; rel="first", ; rel="last" +Vary: Origin, Accept-Encoding +Ratelimit-Limit: 2000 +Cf-Cache-Status: MISS +Gitlab-Sv: api-gke-us-east1-d +X-Prev-Page: +Referrer-Policy: strict-origin-when-cross-origin X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +Content-Security-Policy: default-src 'none' +Gitlab-Lb: haproxy-main-45-lb-gprd +Ratelimit-Reset: 1764065160 +X-Gitlab-Meta: {"correlation_id":"9a40536901af4fc7-ATL","version":"1"} +X-Page: 2 [] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=1&per_page=2 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=1&per_page=2 index 539ef68a75..34671df48b 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=1&per_page=2 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=1&per_page=2 @@ -1,24 +1,30 @@ X-Content-Type-Options: nosniff -X-Runtime: 0.217878 -Etag: W/"5cff9c25fad9db0de0442f8a50af76ed" -Vary: Origin, Accept-Encoding -Cf-Cache-Status: MISS -Strict-Transport-Security: max-age=31536000 -Gitlab-Lb: haproxy-main-11-lb-gprd -Gitlab-Sv: api-gke-us-east1-d -Set-Cookie: _cfuvid=0ssSfnfiXaFlJe_DdQ9NOfPlga.fQbgnLjSEwGIfEzk-1725394796812-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -X-Frame-Options: SAMEORIGIN -X-Prev-Page: -Referrer-Policy: strict-origin-when-cross-origin -X-Next-Page: 2 X-Page: 1 -X-Gitlab-Meta: {"correlation_id":"379af21d1624cba7375460437671af6c","version":"1"} -Content-Security-Policy: default-src 'none' -Link: ; rel="next", ; rel="first", ; rel="last" -Content-Type: application/json -X-Per-Page: 2 -X-Total: 6 +X-Prev-Page: X-Total-Pages: 3 +Gitlab-Lb: haproxy-main-49-lb-gprd +Ratelimit-Observed: 11 +Strict-Transport-Security: max-age=31536000 +Gitlab-Sv: api-gke-us-east1-b +Ratelimit-Limit: 2000 +X-Next-Page: 2 +X-Total: 6 +Vary: Origin, Accept-Encoding +Ratelimit-Remaining: 1989 +Ratelimit-Reset: 1764065160 +X-Frame-Options: SAMEORIGIN +X-Runtime: 0.145887 +Content-Security-Policy: default-src 'none' +X-Per-Page: 2 +Cf-Cache-Status: MISS +Etag: W/"46d402fdfea4626a5b918865ed2a21b3" +Link: ; rel="next", ; rel="first", ; rel="last" +Referrer-Policy: strict-origin-when-cross-origin +X-Gitlab-Meta: {"correlation_id":"9a40536ad3804fc7-ATL","version":"1"} +Set-Cookie: __cf_bm=iAflLFsTWXue0NdlWTclQNmHmKgpnpLwVGp9zRstYHA-1764065107-1.0.1.1-iBouQbArw5dudRhRG8Gc.oXAcwJckMJKbFw9UkTlVrUCMc8xwY52vD9JDp6LxvnCvrbT_TWiKhCL1tjvXy2.hS7lAOJwjoKLTE8Ilc8GPwg; path=/; expires=Tue, 25-Nov-25 10:35:07 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=Rcq3h31X5A4Y4I4o2L2rg7wfiVvTIFeAnA5MHEHeMtE-1764065107948-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Content-Type: application/json Cache-Control: max-age=0, private, must-revalidate +Ratelimit-Name: throttle_authenticated_api -[{"id":28092934,"name":"thumbsup","user":{"id":548513,"username":"mkobel","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:45:50.310Z","updated_at":"2024-09-03T14:45:50.310Z","awardable_id":152568900,"awardable_type":"Issue","url":null},{"id":28092936,"name":"thumbsdown","user":{"id":548513,"username":"mkobel","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:45:51.174Z","updated_at":"2024-09-03T14:45:51.174Z","awardable_id":152568900,"awardable_type":"Issue","url":null}] \ No newline at end of file +[{"id":28092934,"name":"thumbsup","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:45:50.310Z","updated_at":"2024-09-03T14:45:50.310Z","awardable_id":152568900,"awardable_type":"Issue","url":null},{"id":28092936,"name":"thumbsdown","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:45:51.174Z","updated_at":"2024-09-03T14:45:51.174Z","awardable_id":152568900,"awardable_type":"Issue","url":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=1&per_page=3 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=1&per_page=3 new file mode 100644 index 0000000000..9fb6111c05 --- /dev/null +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=1&per_page=3 @@ -0,0 +1,30 @@ +Cf-Cache-Status: MISS +Gitlab-Lb: haproxy-main-56-lb-gprd +Gitlab-Sv: api-gke-us-east1-c +Ratelimit-Observed: 10 +X-Per-Page: 3 +Content-Security-Policy: default-src 'none' +Ratelimit-Limit: 2000 +Referrer-Policy: strict-origin-when-cross-origin +X-Total: 6 +Cache-Control: max-age=0, private, must-revalidate +Ratelimit-Remaining: 1990 +X-Gitlab-Meta: {"correlation_id":"9a40877dc542e0d9-ATL","version":"1"} +X-Total-Pages: 2 +Content-Type: application/json +Link: ; rel="next", ; rel="first", ; rel="last" +Vary: Origin, Accept-Encoding +X-Next-Page: 2 +X-Page: 1 +X-Runtime: 0.094421 +Etag: W/"a7f74b6635cdf940405e20b5627e092a" +Strict-Transport-Security: max-age=31536000 +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Prev-Page: +Set-Cookie: __cf_bm=1pVUk5OSzwbz4O8dsFsRnozXAyop91pPTEBHeWWpDnU-1764067240-1.0.1.1-5IYX.blo82vcD5UKTwXG7ln4ys9VsT8BYI8x9c9lF2Q4yBTQxA8DUvNouhqDG6Ge_Ps8oVjgbQrYPMb7Jt2zn5Xh3jOtS9ulH3q7ITiR7ek; path=/; expires=Tue, 25-Nov-25 11:10:40 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=gEvp_O9POy6sfr63Hx3Ama.RZa_hYvDk4vkRpBHycmE-1764067240834-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Reset: 1764067260 + +[{"id":28092934,"name":"thumbsup","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:45:50.310Z","updated_at":"2024-09-03T14:45:50.310Z","awardable_id":152568900,"awardable_type":"Issue","url":null},{"id":28092936,"name":"thumbsdown","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:45:51.174Z","updated_at":"2024-09-03T14:45:51.174Z","awardable_id":152568900,"awardable_type":"Issue","url":null},{"id":28092944,"name":"laughing","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:46:00.936Z","updated_at":"2024-09-03T14:46:00.936Z","awardable_id":152568900,"awardable_type":"Issue","url":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=2&per_page=2 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=2&per_page=2 index 60c54f2819..ac0ac301b7 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=2&per_page=2 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=2&per_page=2 @@ -1,24 +1,30 @@ -Cache-Control: max-age=0, private, must-revalidate -X-Total-Pages: 3 -Vary: Origin, Accept-Encoding -X-Gitlab-Meta: {"correlation_id":"9bea6a0d3bfa187c0276b05afba166c4","version":"1"} -X-Runtime: 0.086090 -X-Total: 6 -Referrer-Policy: strict-origin-when-cross-origin -Gitlab-Sv: api-gke-us-east1-b -Content-Security-Policy: default-src 'none' -X-Frame-Options: SAMEORIGIN -X-Prev-Page: 1 -Strict-Transport-Security: max-age=31536000 -Gitlab-Lb: haproxy-main-36-lb-gprd +Etag: W/"15557729ecccd67be90f7632b49d20e5" +Gitlab-Sv: api-gke-us-east1-d X-Content-Type-Options: nosniff -X-Page: 2 -Set-Cookie: _cfuvid=ByaUDcdLuj9lg2l.wzIwOZ66jeGSBhcxPeVwYI6iJ0I-1725394797065-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -X-Per-Page: 2 -Content-Type: application/json -Etag: W/"1b260e111b955c4b5b99834b5445d047" +X-Runtime: 0.176046 Link: ; rel="prev", ; rel="next", ; rel="first", ; rel="last" -X-Next-Page: 3 +Vary: Origin, Accept-Encoding +Ratelimit-Observed: 12 +Ratelimit-Reset: 1764065160 Cf-Cache-Status: MISS +X-Gitlab-Meta: {"correlation_id":"9a40536cf55d4fc7-ATL","version":"1"} +X-Total-Pages: 3 +Content-Security-Policy: default-src 'none' +Referrer-Policy: strict-origin-when-cross-origin +X-Per-Page: 2 +X-Prev-Page: 1 +X-Total: 6 +Content-Type: application/json +Cache-Control: max-age=0, private, must-revalidate +Strict-Transport-Security: max-age=31536000 +Gitlab-Lb: haproxy-main-39-lb-gprd +Ratelimit-Name: throttle_authenticated_api +X-Next-Page: 3 +X-Page: 2 +Ratelimit-Limit: 2000 +X-Frame-Options: SAMEORIGIN +Set-Cookie: __cf_bm=6PlKBj6oiuq6_N7epiS8Xm97vcaMAb9oDDhC1roPYgY-1764065108-1.0.1.1-XesydYL7bwOpVgX.ZNZLcgr8fZUWm36QW2vpzPhzl0G3ok_ebr4MVuM_XldppYra8PuF_9X3ErU.u0k.aVkhCwJbtNwJgxrtTycf3bA5gXc; path=/; expires=Tue, 25-Nov-25 10:35:08 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=ww6AGjv1O4W9g8e2r75FKUoE_C9tXI.9LU3S5Ldwk3Q-1764065108312-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Ratelimit-Remaining: 1988 -[{"id":28092944,"name":"laughing","user":{"id":548513,"username":"mkobel","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:46:00.936Z","updated_at":"2024-09-03T14:46:00.936Z","awardable_id":152568900,"awardable_type":"Issue","url":null},{"id":28092948,"name":"tada","user":{"id":548513,"username":"mkobel","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:46:09.593Z","updated_at":"2024-09-03T14:46:09.593Z","awardable_id":152568900,"awardable_type":"Issue","url":null}] \ No newline at end of file +[{"id":28092944,"name":"laughing","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:46:00.936Z","updated_at":"2024-09-03T14:46:00.936Z","awardable_id":152568900,"awardable_type":"Issue","url":null},{"id":28092948,"name":"tada","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:46:09.593Z","updated_at":"2024-09-03T14:46:09.593Z","awardable_id":152568900,"awardable_type":"Issue","url":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=2&per_page=3 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=2&per_page=3 new file mode 100644 index 0000000000..c885b1e7ad --- /dev/null +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=2&per_page=3 @@ -0,0 +1,30 @@ +Strict-Transport-Security: max-age=31536000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 11 +Ratelimit-Remaining: 1989 +Set-Cookie: __cf_bm=9AE8CpIjrEnerJtOH7BLyO_OXlXzIs0gOxe3EtqIUuA-1764067241-1.0.1.1-Qs3bffq8SPyos4SyAbcK_5xcCd8OmKP52qPTL7ta5sxW7DtrWmeVuW8GkH.7PLS4D8kxUIGLhr81eTmtH_pcv9Q6Bq_9ACQVIRXQBoDsjXI; path=/; expires=Tue, 25-Nov-25 11:10:41 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=7LR1RtBEpFtdvYmrN.poZNibwl0WEel7bAmYSK4txoU-1764067241094-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +X-Prev-Page: 1 +Cf-Cache-Status: MISS +Ratelimit-Limit: 2000 +Ratelimit-Reset: 1764067260 +X-Runtime: 0.081401 +X-Total: 6 +Gitlab-Lb: haproxy-main-28-lb-gprd +X-Content-Type-Options: nosniff +Etag: W/"412dc0049cf530d17cba7741291c3200" +Vary: Origin, Accept-Encoding +Referrer-Policy: strict-origin-when-cross-origin +X-Next-Page: +X-Per-Page: 3 +Cache-Control: max-age=0, private, must-revalidate +Content-Security-Policy: default-src 'none' +X-Total-Pages: 2 +Link: ; rel="prev", ; rel="first", ; rel="last" +Gitlab-Sv: api-gke-us-east1-b +X-Frame-Options: SAMEORIGIN +X-Page: 2 +Content-Type: application/json +X-Gitlab-Meta: {"correlation_id":"9a40877f76b0e0d9-ATL","version":"1"} + +[{"id":28092948,"name":"tada","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:46:09.593Z","updated_at":"2024-09-03T14:46:09.593Z","awardable_id":152568900,"awardable_type":"Issue","url":null},{"id":28092953,"name":"confused","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:46:18.191Z","updated_at":"2024-09-03T14:46:18.191Z","awardable_id":152568900,"awardable_type":"Issue","url":null},{"id":28092962,"name":"hearts","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:46:35.367Z","updated_at":"2024-09-03T14:46:35.367Z","awardable_id":152568900,"awardable_type":"Issue","url":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=3&per_page=2 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=3&per_page=2 index e3018faf5e..d016c95c8f 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=3&per_page=2 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=3&per_page=2 @@ -1,24 +1,30 @@ -X-Per-Page: 2 -X-Runtime: 0.064070 -X-Content-Type-Options: nosniff -X-Prev-Page: 2 -X-Page: 3 -Vary: Origin, Accept-Encoding +Ratelimit-Reset: 1764065160 X-Total: 6 -Link: ; rel="prev", ; rel="first", ; rel="last" -X-Frame-Options: SAMEORIGIN -X-Gitlab-Meta: {"correlation_id":"db9cabb4c4399ec8680e56916a5f9ca2","version":"1"} -X-Next-Page: X-Total-Pages: 3 -Strict-Transport-Security: max-age=31536000 -Content-Security-Policy: default-src 'none' -Content-Type: application/json -Etag: W/"578a2e92e9d4f9fb1c21c89b9e13eb0e" -Gitlab-Lb: haproxy-main-17-lb-gprd -Cf-Cache-Status: MISS -Referrer-Policy: strict-origin-when-cross-origin +Gitlab-Lb: haproxy-main-03-lb-gprd +X-Gitlab-Meta: {"correlation_id":"9a40536f57014fc7-ATL","version":"1"} +X-Runtime: 0.292482 +Vary: Origin, Accept-Encoding Gitlab-Sv: api-gke-us-east1-d -Set-Cookie: _cfuvid=Upv78tZEcC_Ry_GNFdw5Ms5eMI9FkehWT5RF0a2i7d0-1725394797546-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Ratelimit-Remaining: 1987 +Referrer-Policy: strict-origin-when-cross-origin +X-Content-Type-Options: nosniff +Cf-Cache-Status: MISS +Ratelimit-Name: throttle_authenticated_api +X-Frame-Options: SAMEORIGIN +Etag: W/"ceed6f177d5f7e84961ad604a8cddc35" +X-Page: 3 +X-Prev-Page: 2 +Content-Type: application/json +Link: ; rel="prev", ; rel="first", ; rel="last" +Ratelimit-Limit: 2000 +Set-Cookie: __cf_bm=t2tUXdhLqCPmsw4U1LbZRu_gDoywVJmKT1x66aIcKoA-1764065108-1.0.1.1-Q6CudjcxQoHnyXHzHcIH4s_2Pte9_SriSix3lG7t79O.7er2sS7Ltg32UG33iHJMoGh1FRMTXnlFJA3g6mPm3vs2T.Z7rx8LjInyQ98AdCA; path=/; expires=Tue, 25-Nov-25 10:35:08 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=L3s_nmm3ScmGh8cr3YisKfgCl7xvN0vJNxfsvMYEpzk-1764065108869-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None Cache-Control: max-age=0, private, must-revalidate +Content-Security-Policy: default-src 'none' +Ratelimit-Observed: 13 +X-Next-Page: +X-Per-Page: 2 +Strict-Transport-Security: max-age=31536000 -[{"id":28092953,"name":"confused","user":{"id":548513,"username":"mkobel","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:46:18.191Z","updated_at":"2024-09-03T14:46:18.191Z","awardable_id":152568900,"awardable_type":"Issue","url":null},{"id":28092962,"name":"hearts","user":{"id":548513,"username":"mkobel","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:46:35.367Z","updated_at":"2024-09-03T14:46:35.367Z","awardable_id":152568900,"awardable_type":"Issue","url":null}] \ No newline at end of file +[{"id":28092953,"name":"confused","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:46:18.191Z","updated_at":"2024-09-03T14:46:18.191Z","awardable_id":152568900,"awardable_type":"Issue","url":null},{"id":28092962,"name":"hearts","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:46:35.367Z","updated_at":"2024-09-03T14:46:35.367Z","awardable_id":152568900,"awardable_type":"Issue","url":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=3&per_page=3 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=3&per_page=3 new file mode 100644 index 0000000000..7b78f53c9a --- /dev/null +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=3&per_page=3 @@ -0,0 +1,32 @@ +Content-Type: application/json +Gitlab-Lb: haproxy-main-53-lb-gprd +Ratelimit-Name: throttle_authenticated_api +X-Prev-Page: +Ratelimit-Reset: 1764067260 +Cache-Control: max-age=0, private, must-revalidate +Gitlab-Sv: api-gke-us-east1-c +Ratelimit-Remaining: 1988 +X-Gitlab-Meta: {"correlation_id":"9a408781100ee0d9-ATL","version":"1"} +Set-Cookie: __cf_bm=ERtdJNpQThaSjqUa1.mZTqn7n0q1_fbzhUfqnAuidrE-1764067241-1.0.1.1-SIVaHdxaT7VFCCtSClSPrkBAOkMKdqMo_6H.18diW8wVohWWzdQkGK1lgp7NSFWYB.9fUd08EGQM4crpdR0vk8L6Lx9vi5tSwI0F9El27Cs; path=/; expires=Tue, 25-Nov-25 11:10:41 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=TWm8WMj9YPkP1A9SyC.xy86EYVqWA5BmefQUd0h0Bh8-1764067241497-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Content-Length: 2 +Accept-Ranges: bytes +Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" +Link: ; rel="first", ; rel="last" +Ratelimit-Limit: 2000 +Vary: Origin, Accept-Encoding +Content-Security-Policy: default-src 'none' +X-Runtime: 0.199084 +Cf-Cache-Status: MISS +X-Next-Page: +Strict-Transport-Security: max-age=31536000 +Ratelimit-Observed: 12 +X-Content-Type-Options: nosniff +X-Per-Page: 3 +X-Total: 6 +X-Total-Pages: 2 +Referrer-Policy: strict-origin-when-cross-origin +X-Frame-Options: SAMEORIGIN +X-Page: 3 + +[] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=4&per_page=2 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=4&per_page=2 index b7dd2a5794..ebb294094d 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=4&per_page=2 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Faward_emoji%3Fpage=4&per_page=2 @@ -1,26 +1,32 @@ -X-Runtime: 0.059461 -X-Total: 6 -Gitlab-Lb: haproxy-main-16-lb-gprd -Set-Cookie: _cfuvid=yVbakY3C4M4Kdnt7wIM2OYjNHbX8d6djf5tCk3NWtfw-1725394797782-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Content-Type: application/json -Cache-Control: max-age=0, private, must-revalidate -X-Page: 4 -X-Per-Page: 2 -Gitlab-Sv: api-gke-us-east1-c -X-Next-Page: -Strict-Transport-Security: max-age=31536000 -Referrer-Policy: strict-origin-when-cross-origin -Content-Length: 2 -Vary: Origin, Accept-Encoding -X-Content-Type-Options: nosniff -Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" -Cf-Cache-Status: MISS -X-Prev-Page: -Accept-Ranges: bytes -Content-Security-Policy: default-src 'none' -X-Frame-Options: SAMEORIGIN -X-Gitlab-Meta: {"correlation_id":"b494fe1273622e61d5b9171bcb8be8f8","version":"1"} -Link: ; rel="first", ; rel="last" X-Total-Pages: 3 +Set-Cookie: __cf_bm=XEiSKl80KAa5zod94SawbVosALj1cNcQ_eq8bE3jYLU-1764065109-1.0.1.1-hnWNajuOroFE7mHA4HInOTO2nVGBGHu9yC6P4yIQZyPkA0jzn2v2QQW3QTNox6wumnUAuRkNfFUCG9tzx2wlteVA0JCboGsGmJY2FADr1LA; path=/; expires=Tue, 25-Nov-25 10:35:09 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=BVV2bFUiotodstANTLeIUoIFj5yU0lMB1WpZbkGzD9Q-1764065109254-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Vary: Origin, Accept-Encoding +Gitlab-Sv: api-gke-us-east1-c +Ratelimit-Observed: 14 +Ratelimit-Reset: 1764065160 +X-Page: 4 +Cf-Cache-Status: MISS +Link: ; rel="first", ; rel="last" +Ratelimit-Limit: 2000 +Ratelimit-Remaining: 1986 +X-Content-Type-Options: nosniff +Accept-Ranges: bytes +X-Frame-Options: SAMEORIGIN +Strict-Transport-Security: max-age=31536000 +Content-Security-Policy: default-src 'none' +X-Next-Page: +Content-Type: application/json +Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" +Gitlab-Lb: haproxy-main-53-lb-gprd +X-Total: 6 +Ratelimit-Name: throttle_authenticated_api +X-Per-Page: 2 +Content-Length: 2 +Referrer-Policy: strict-origin-when-cross-origin +X-Gitlab-Meta: {"correlation_id":"9a405372b1ba4fc7-ATL","version":"1"} +Cache-Control: max-age=0, private, must-revalidate +X-Prev-Page: +X-Runtime: 0.198149 [] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Fdiscussions%3Fpage=1&per_page=100 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Fdiscussions%3Fpage=1&per_page=100 index 7acaddf526..05e407d106 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Fdiscussions%3Fpage=1&per_page=100 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Fdiscussions%3Fpage=1&per_page=100 @@ -1,24 +1,30 @@ -X-Runtime: 0.145197 -X-Total-Pages: 1 -Strict-Transport-Security: max-age=31536000 -Vary: Origin, Accept-Encoding -X-Prev-Page: -X-Frame-Options: SAMEORIGIN -X-Total: 2 -Gitlab-Lb: haproxy-main-52-lb-gprd -Gitlab-Sv: api-gke-us-east1-c -Content-Security-Policy: default-src 'none' -Etag: W/"7f9e8aa5e56c4a23a0ac1fe1e32ea1cf" -Cache-Control: max-age=0, private, must-revalidate -X-Content-Type-Options: nosniff -Referrer-Policy: strict-origin-when-cross-origin -Cf-Cache-Status: MISS -X-Next-Page: -X-Page: 1 Link: ; rel="first", ; rel="last" -X-Gitlab-Meta: {"correlation_id":"e2dd8497292356efa5150a6c5ecd61b5","version":"1"} -Content-Type: application/json +Vary: Origin, Accept-Encoding +X-Next-Page: +Etag: W/"3f43dfe90694977cf41e442db7d78f76" +Ratelimit-Observed: 14 +Ratelimit-Remaining: 1986 +X-Gitlab-Meta: {"correlation_id":"9a408786746ce0d9-ATL","version":"1"} +X-Runtime: 0.160743 +Strict-Transport-Security: max-age=31536000 +Gitlab-Lb: haproxy-main-51-lb-gprd +Gitlab-Sv: api-gke-us-east1-d +Referrer-Policy: strict-origin-when-cross-origin +X-Page: 1 +Cf-Cache-Status: MISS +Ratelimit-Limit: 2000 +X-Content-Type-Options: nosniff X-Per-Page: 100 -Set-Cookie: _cfuvid=zB07q9Xq11k5SlfuxWW17Ez7DHpyfygT7b4L.VixX.I-1725394798110-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +X-Total-Pages: 1 +Content-Security-Policy: default-src 'none' +Ratelimit-Reset: 1764067260 +X-Prev-Page: +Cache-Control: max-age=0, private, must-revalidate +X-Frame-Options: SAMEORIGIN +Content-Type: application/json +Ratelimit-Name: throttle_authenticated_api +X-Total: 2 +Set-Cookie: __cf_bm=yLb0tijb_h6IcP8N5b9_gCUI2Oax.oodlJg5G_org7w-1764067242-1.0.1.1-96nM1EZJz3goO7FuhYyOprR4N67BL_8FlZ8L9TgGmqW2umM_h1xDE8tQNKLmthWt.CBQIfxBfNs1DXkxSv5WLkJ_450s8QqebqHYeHLWzvw; path=/; expires=Tue, 25-Nov-25 11:10:42 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=FKADqckdKPYzioe9Z2r5_0EEWR7cMjHX60K9UT3DE2Q-1764067242301-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -[{"id":"8d6017e7426130502cd94fff207224b8a98efabc","individual_note":true,"notes":[{"id":2087994191,"type":null,"body":"This is a comment","attachment":null,"author":{"id":548513,"username":"mkobel","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:45:20.848Z","updated_at":"2024-09-03T14:45:46.592Z","system":false,"noteable_id":152568900,"noteable_type":"Issue","project_id":61363672,"resolvable":false,"confidential":false,"internal":false,"imported":false,"imported_from":"none","noteable_iid":2,"commands_changes":{}}]},{"id":"c721de2d3f2f0fe9a40005228f50d8c8d8131581","individual_note":true,"notes":[{"id":2087994632,"type":null,"body":"A second comment","attachment":null,"author":{"id":548513,"username":"mkobel","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:45:30.059Z","updated_at":"2024-09-03T14:45:30.059Z","system":false,"noteable_id":152568900,"noteable_type":"Issue","project_id":61363672,"resolvable":false,"confidential":false,"internal":false,"imported":false,"imported_from":"none","noteable_iid":2,"commands_changes":{}}]}] \ No newline at end of file +[{"id":"8d6017e7426130502cd94fff207224b8a98efabc","individual_note":true,"notes":[{"id":2087994191,"type":null,"body":"This is a comment","author":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:45:20.848Z","updated_at":"2024-09-03T14:45:46.592Z","system":false,"noteable_id":152568900,"noteable_type":"Issue","project_id":61363672,"resolvable":false,"confidential":false,"internal":false,"imported":false,"imported_from":"none","noteable_iid":2,"commands_changes":{}}]},{"id":"c721de2d3f2f0fe9a40005228f50d8c8d8131581","individual_note":true,"notes":[{"id":2087994632,"type":null,"body":"A second comment","author":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:45:30.059Z","updated_at":"2024-09-03T14:45:30.059Z","system":false,"noteable_id":152568900,"noteable_type":"Issue","project_id":61363672,"resolvable":false,"confidential":false,"internal":false,"imported":false,"imported_from":"none","noteable_iid":2,"commands_changes":{}}]}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Fresource_state_events%3Fpage=1&per_page=100 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Fresource_state_events%3Fpage=1&per_page=100 index ef8cac008d..201e5cd4dd 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Fresource_state_events%3Fpage=1&per_page=100 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F2%2Fresource_state_events%3Fpage=1&per_page=100 @@ -1,24 +1,30 @@ -Cache-Control: max-age=0, private, must-revalidate -X-Content-Type-Options: nosniff -X-Next-Page: -Gitlab-Sv: api-gke-us-east1-d -Cf-Cache-Status: MISS -Content-Type: application/json -Strict-Transport-Security: max-age=31536000 -X-Total-Pages: 1 -Referrer-Policy: strict-origin-when-cross-origin -Content-Security-Policy: default-src 'none' -Set-Cookie: _cfuvid=FG.klkpkCkFafn4bGe91EcTgDxILPZT9lIAALQsMguo-1725394798392-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -X-Frame-Options: SAMEORIGIN -X-Prev-Page: -Link: ; rel="first", ; rel="last" -X-Runtime: 0.103796 -X-Total: 1 -Etag: W/"7461fc73e919f707da29f7080cbbf5a5" Vary: Origin, Accept-Encoding -X-Gitlab-Meta: {"correlation_id":"aacea0eebb5d187d57ce369f9bd57a96","version":"1"} -X-Page: 1 +Referrer-Policy: strict-origin-when-cross-origin +X-Next-Page: X-Per-Page: 100 -Gitlab-Lb: haproxy-main-02-lb-gprd +X-Prev-Page: +Strict-Transport-Security: max-age=31536000 +Ratelimit-Reset: 1764067260 +Set-Cookie: __cf_bm=3hSvaVOg9Df1RydUBhWv7dmQ6AHasvpAX8RiMf_0IMk-1764067242-1.0.1.1-EFnF8p7l6vPWO.7t.INm4jiU4zIX2q26I0zgX.CvdmU0HESjVmD2HuJVzh_X4vWOmISdYa05_.IJt08.yQ25DsMlnJCYBtAuNHSeGCSl.Lg; path=/; expires=Tue, 25-Nov-25 11:10:42 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=C3.D.QMDCTlck3o2O1IZRIpjzLAzJF.V4LfqOvfHkh0-1764067242832-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Content-Type: application/json +Link: ; rel="first", ; rel="last" +X-Total-Pages: 1 +Cache-Control: max-age=0, private, must-revalidate +Etag: W/"2cf51cc8586d98d271cacf42f33dae75" +Content-Security-Policy: default-src 'none' +X-Runtime: 0.123392 +X-Frame-Options: SAMEORIGIN +X-Page: 1 +X-Total: 1 +Cf-Cache-Status: MISS +Gitlab-Sv: api-gke-us-east1-c +Ratelimit-Observed: 15 +X-Content-Type-Options: nosniff +X-Gitlab-Meta: {"correlation_id":"9a408788a63de0d9-ATL","version":"1"} +Gitlab-Lb: haproxy-main-53-lb-gprd +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Remaining: 1985 -[{"id":241837962,"user":{"id":548513,"username":"mkobel","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:43:10.947Z","resource_type":"Issue","resource_id":152568900,"state":"closed"}] \ No newline at end of file +[{"id":241837962,"user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T14:43:10.947Z","resource_type":"Issue","resource_id":152568900,"source_commit":null,"source_merge_request_id":null,"state":"closed"}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F3%2Faward_emoji%3Fpage=1&per_page=3 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F3%2Faward_emoji%3Fpage=1&per_page=3 new file mode 100644 index 0000000000..4659d0f5ab --- /dev/null +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F3%2Faward_emoji%3Fpage=1&per_page=3 @@ -0,0 +1,32 @@ +Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" +Ratelimit-Remaining: 1987 +Referrer-Policy: strict-origin-when-cross-origin +X-Frame-Options: SAMEORIGIN +Vary: Origin, Accept-Encoding +Set-Cookie: __cf_bm=_PiVkq.l17DijVAdAtfuSQ4GuCtCOOl4czL6yY_6g9E-1764067241-1.0.1.1-QlPR96ULIEw44gI9D5uugVOR0hpmBZeL5BOF.IuALd9NwlgztPD8sH2EjiaF8LhWXfarSxmi1I_02t4cRnqlZZJmgCD3nqaOY1DEr2Jd8J8; path=/; expires=Tue, 25-Nov-25 11:10:41 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=5Y9fvzgH44fmICzIWOGlsiNLueIloiAp7j_1MuyHfL0-1764067241958-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +X-Content-Type-Options: nosniff +X-Prev-Page: +Content-Type: application/json +Cf-Cache-Status: MISS +Accept-Ranges: bytes +Cache-Control: max-age=0, private, must-revalidate +Ratelimit-Name: throttle_authenticated_api +X-Page: 1 +X-Total: 0 +Content-Length: 2 +Gitlab-Sv: api-gke-us-east1-d +Ratelimit-Reset: 1764067260 +X-Runtime: 0.069144 +Content-Security-Policy: default-src 'none' +Gitlab-Lb: haproxy-main-39-lb-gprd +Ratelimit-Limit: 2000 +X-Gitlab-Meta: {"correlation_id":"9a4087839220e0d9-ATL","version":"1"} +X-Next-Page: +Ratelimit-Observed: 13 +X-Per-Page: 3 +Link: ; rel="first", ; rel="last" +Strict-Transport-Security: max-age=31536000 +X-Total-Pages: 1 + +[] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F3%2Fdiscussions%3Fpage=1&per_page=100 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F3%2Fdiscussions%3Fpage=1&per_page=100 new file mode 100644 index 0000000000..c55e369b30 --- /dev/null +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F3%2Fdiscussions%3Fpage=1&per_page=100 @@ -0,0 +1,30 @@ +Strict-Transport-Security: max-age=31536000 +Etag: W/"d25ee844965ed283636474d7b1195b57" +Ratelimit-Observed: 16 +Ratelimit-Reset: 1764067260 +X-Content-Type-Options: nosniff +X-Prev-Page: +X-Total: 1 +Set-Cookie: __cf_bm=YkiNZjRNirt6PowNRQAhJbAZ1pSohmmpGiWle8vgu8U-1764067243-1.0.1.1-TJDOjL6q1b4S_JjFxO6NHWpxJOK77U_qAYESfRAOSIZjbTTqJ3NAThC009W5Ll0R7aiRVA7d1XnHN1AQz0zaZ2X4M0Ws9FePwJD90gaAZns; path=/; expires=Tue, 25-Nov-25 11:10:43 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=vsL8nPGLjnwrlB9N1iy79xlUSdinKj45qcTl7NrXo5E-1764067243230-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Gitlab-Sv: api-gke-us-east1-c +Ratelimit-Name: throttle_authenticated_api +Referrer-Policy: strict-origin-when-cross-origin +Content-Type: application/json +Ratelimit-Limit: 2000 +X-Page: 1 +Cache-Control: max-age=0, private, must-revalidate +Vary: Origin, Accept-Encoding +Ratelimit-Remaining: 1984 +X-Next-Page: +X-Runtime: 0.199882 +X-Per-Page: 100 +X-Total-Pages: 1 +Cf-Cache-Status: MISS +X-Frame-Options: SAMEORIGIN +X-Gitlab-Meta: {"correlation_id":"9a40878bf119e0d9-ATL","version":"1"} +Content-Security-Policy: default-src 'none' +Gitlab-Lb: haproxy-main-14-lb-gprd +Link: ; rel="first", ; rel="last" + +[{"id":"36545838ff9cc7d13fb129f2a97ff49297299158","individual_note":true,"notes":[{"id":2911821024,"type":null,"body":"No actually its !1","author":{"id":10529876,"username":"patdyn","public_email":"","name":"Pat Dyn","state":"active","locked":false,"avatar_url":"https://gitlab.com/uploads/-/system/user/avatar/10529876/avatar.png","web_url":"https://gitlab.com/patdyn"},"created_at":"2025-11-25T09:49:50.899Z","updated_at":"2025-11-25T09:49:50.899Z","system":false,"noteable_id":177633591,"noteable_type":"Issue","project_id":61363672,"resolvable":false,"confidential":false,"internal":false,"imported":false,"imported_from":"none","noteable_iid":3,"commands_changes":{}}]}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F3%2Fresource_state_events%3Fpage=1&per_page=100 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F3%2Fresource_state_events%3Fpage=1&per_page=100 new file mode 100644 index 0000000000..6e8c1d9c81 --- /dev/null +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%2F3%2Fresource_state_events%3Fpage=1&per_page=100 @@ -0,0 +1,32 @@ +X-Total-Pages: 1 +Accept-Ranges: bytes +Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" +Link: ; rel="first", ; rel="last" +Ratelimit-Observed: 17 +X-Content-Type-Options: nosniff +X-Gitlab-Meta: {"correlation_id":"9a40878e7365e0d9-ATL","version":"1"} +X-Per-Page: 100 +Set-Cookie: __cf_bm=K3TOUn2vDaz1qInIfA3ot2QfDGciipMeNz7mTLiUHew-1764067243-1.0.1.1-emtayPBYQbA_Hcjg3SJRaDfSnu1LMo0AwU3oLUo88E9kLsWYkTqQJbtaEa0vquShox_HRWnGFp9s6cIg_iVaPfwR4bzUnIHzO0GNMfRcdls; path=/; expires=Tue, 25-Nov-25 11:10:43 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=Jcc7jNquyhw_7ru6wi24nRmm1pryvsiBqi_0wTQQxNY-1764067243527-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Gitlab-Lb: haproxy-main-49-lb-gprd +X-Next-Page: +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Reset: 1764067260 +X-Total: 0 +Vary: Origin, Accept-Encoding +Content-Security-Policy: default-src 'none' +Ratelimit-Remaining: 1983 +X-Runtime: 0.113354 +Cache-Control: max-age=0, private, must-revalidate +Strict-Transport-Security: max-age=31536000 +Referrer-Policy: strict-origin-when-cross-origin +Content-Type: application/json +Content-Length: 2 +Cf-Cache-Status: MISS +Gitlab-Sv: api-gke-us-east1-b +Ratelimit-Limit: 2000 +X-Frame-Options: SAMEORIGIN +X-Prev-Page: +X-Page: 1 + +[] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%3Fpage=1&per_page=2&sort=asc&state=all b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%3Fpage=1&per_page=2&sort=asc&state=all index 4222407270..3281b83fc4 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%3Fpage=1&per_page=2&sort=asc&state=all +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%3Fpage=1&per_page=2&sort=asc&state=all @@ -1,24 +1,30 @@ -X-Total-Pages: 1 -Cache-Control: max-age=0, private, must-revalidate -X-Runtime: 0.200064 -Etag: W/"d8fb18a73522276c6ef2dcd41f54a48c" -Link: ; rel="first", ; rel="last" Strict-Transport-Security: max-age=31536000 -Cf-Cache-Status: MISS -X-Gitlab-Meta: {"correlation_id":"e93266a7fd0f8392c302d86788f1915d","version":"1"} -X-Per-Page: 2 -X-Total: 2 -Content-Type: application/json -Vary: Origin, Accept-Encoding -X-Next-Page: -Referrer-Policy: strict-origin-when-cross-origin -Gitlab-Lb: haproxy-main-48-lb-gprd +Gitlab-Lb: haproxy-main-08-lb-gprd +Ratelimit-Limit: 2000 X-Content-Type-Options: nosniff +Content-Type: application/json +Etag: W/"fed6a858b8cd04cce298928641bdbf91" +Ratelimit-Name: throttle_authenticated_api +X-Total: 3 +Set-Cookie: __cf_bm=56WriCYT.4x.bhoJPAbtvhcoXjX.hSJZSxyA5n4RgGI-1764065106-1.0.1.1-6X71GaEn1440OUYNQyEtihb2G6vdIAldNl8MmJSA8B8vdpeLOu6wJjctKFZf1p4I_We9_fFUHF6bJxrhnd5L1w60cfZKL..QHzcglCDhYbA; path=/; expires=Tue, 25-Nov-25 10:35:06 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=njTrSjqzKoVc9pRMPI0tC9D3oUEVFwisFK8ERC4hPzQ-1764065106798-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Ratelimit-Remaining: 1992 +X-Gitlab-Meta: {"correlation_id":"9a40536354284fc7-ATL","version":"1"} +X-Per-Page: 2 +Link: ; rel="next", ; rel="first", ; rel="last" +Vary: Origin, Accept-Encoding +Referrer-Policy: strict-origin-when-cross-origin X-Frame-Options: SAMEORIGIN -X-Prev-Page: -Gitlab-Sv: api-gke-us-east1-b -Set-Cookie: _cfuvid=dJlDovqc76Ccf_kb3CEsWZMasfjw9wsdzsdIUd.IMiQ-1725394795593-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Content-Security-Policy: default-src 'none' X-Page: 1 +Ratelimit-Reset: 1764065160 +X-Next-Page: 2 +X-Total-Pages: 2 +Content-Security-Policy: default-src 'none' +X-Prev-Page: +X-Runtime: 0.164380 +Cf-Cache-Status: MISS +Cache-Control: max-age=0, private, must-revalidate +Gitlab-Sv: api-gke-us-east1-c +Ratelimit-Observed: 8 -[{"id":152568896,"iid":1,"project_id":61363672,"title":"Please add an animated gif icon to the merge button","description":"I just want the merge button to hurt my eyes a little. :stuck_out_tongue_closed_eyes:","state":"closed","created_at":"2024-09-03T14:42:34.924Z","updated_at":"2024-09-03T14:48:43.756Z","closed_at":"2024-09-03T14:43:10.708Z","closed_by":{"id":548513,"username":"mkobel","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"labels":["bug","discussion"],"milestone":{"id":4711993,"iid":2,"project_id":61363672,"title":"1.0.0","description":"","state":"closed","created_at":"2024-09-03T13:53:08.516Z","updated_at":"2024-09-03T20:03:57.786Z","due_date":null,"start_date":null,"expired":false,"web_url":"https://gitlab.com/forgejo/test_repo/-/milestones/2"},"assignees":[],"author":{"id":548513,"username":"mkobel","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"type":"ISSUE","assignee":null,"user_notes_count":0,"merge_requests_count":0,"upvotes":1,"downvotes":0,"due_date":null,"confidential":false,"discussion_locked":null,"issue_type":"issue","web_url":"https://gitlab.com/forgejo/test_repo/-/issues/1","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"blocking_issues_count":0,"has_tasks":true,"task_status":"0 of 0 checklist items completed","_links":{"self":"https://gitlab.com/api/v4/projects/61363672/issues/1","notes":"https://gitlab.com/api/v4/projects/61363672/issues/1/notes","award_emoji":"https://gitlab.com/api/v4/projects/61363672/issues/1/award_emoji","project":"https://gitlab.com/api/v4/projects/61363672","closed_as_duplicate_of":null},"references":{"short":"#1","relative":"#1","full":"forgejo/test_repo#1"},"severity":"UNKNOWN","moved_to_id":null,"imported":false,"imported_from":"none","service_desk_reply_to":null},{"id":152568900,"iid":2,"project_id":61363672,"title":"Test issue","description":"This is test issue 2, do not touch!","state":"closed","created_at":"2024-09-03T14:42:35.371Z","updated_at":"2024-09-03T20:03:43.536Z","closed_at":"2024-09-03T14:43:10.906Z","closed_by":{"id":548513,"username":"mkobel","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"labels":["duplicate"],"milestone":{"id":4711993,"iid":2,"project_id":61363672,"title":"1.0.0","description":"","state":"closed","created_at":"2024-09-03T13:53:08.516Z","updated_at":"2024-09-03T20:03:57.786Z","due_date":null,"start_date":null,"expired":false,"web_url":"https://gitlab.com/forgejo/test_repo/-/milestones/2"},"assignees":[],"author":{"id":548513,"username":"mkobel","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"type":"ISSUE","assignee":null,"user_notes_count":2,"merge_requests_count":0,"upvotes":1,"downvotes":1,"due_date":null,"confidential":false,"discussion_locked":null,"issue_type":"issue","web_url":"https://gitlab.com/forgejo/test_repo/-/issues/2","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"blocking_issues_count":0,"has_tasks":true,"task_status":"0 of 0 checklist items completed","_links":{"self":"https://gitlab.com/api/v4/projects/61363672/issues/2","notes":"https://gitlab.com/api/v4/projects/61363672/issues/2/notes","award_emoji":"https://gitlab.com/api/v4/projects/61363672/issues/2/award_emoji","project":"https://gitlab.com/api/v4/projects/61363672","closed_as_duplicate_of":null},"references":{"short":"#2","relative":"#2","full":"forgejo/test_repo#2"},"severity":"UNKNOWN","moved_to_id":null,"imported":false,"imported_from":"none","service_desk_reply_to":null}] \ No newline at end of file +[{"id":152568896,"iid":1,"project_id":61363672,"title":"Please add an animated gif icon to the merge button","description":"I just want the merge button to hurt my eyes a little. :stuck_out_tongue_closed_eyes:","state":"closed","created_at":"2024-09-03T14:42:34.924Z","updated_at":"2024-09-03T14:48:43.756Z","closed_at":"2024-09-03T14:43:10.708Z","closed_by":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"labels":["bug","discussion"],"milestone":{"id":4711993,"iid":2,"project_id":61363672,"title":"1.0.0","description":"","state":"closed","created_at":"2024-09-03T13:53:08.516Z","updated_at":"2024-09-03T20:03:57.786Z","due_date":null,"start_date":null,"expired":false,"web_url":"https://gitlab.com/forgejo/test_repo/-/milestones/2"},"assignees":[],"author":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"type":"ISSUE","assignee":null,"user_notes_count":0,"merge_requests_count":0,"upvotes":1,"downvotes":0,"due_date":null,"confidential":false,"discussion_locked":null,"issue_type":"issue","web_url":"https://gitlab.com/forgejo/test_repo/-/issues/1","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"blocking_issues_count":0,"has_tasks":true,"task_status":"0 of 0 checklist items completed","_links":{"self":"https://gitlab.com/api/v4/projects/61363672/issues/1","notes":"https://gitlab.com/api/v4/projects/61363672/issues/1/notes","award_emoji":"https://gitlab.com/api/v4/projects/61363672/issues/1/award_emoji","project":"https://gitlab.com/api/v4/projects/61363672","closed_as_duplicate_of":null},"references":{"short":"#1","relative":"#1","full":"forgejo/test_repo#1"},"severity":"UNKNOWN","moved_to_id":null,"imported":false,"imported_from":"none","service_desk_reply_to":null},{"id":152568900,"iid":2,"project_id":61363672,"title":"Test issue","description":"This is test issue 2, do not touch!","state":"closed","created_at":"2024-09-03T14:42:35.371Z","updated_at":"2024-09-03T20:03:43.536Z","closed_at":"2024-09-03T14:43:10.906Z","closed_by":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"labels":["duplicate"],"milestone":{"id":4711993,"iid":2,"project_id":61363672,"title":"1.0.0","description":"","state":"closed","created_at":"2024-09-03T13:53:08.516Z","updated_at":"2024-09-03T20:03:57.786Z","due_date":null,"start_date":null,"expired":false,"web_url":"https://gitlab.com/forgejo/test_repo/-/milestones/2"},"assignees":[],"author":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"type":"ISSUE","assignee":null,"user_notes_count":2,"merge_requests_count":0,"upvotes":1,"downvotes":1,"due_date":null,"confidential":false,"discussion_locked":null,"issue_type":"issue","web_url":"https://gitlab.com/forgejo/test_repo/-/issues/2","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"blocking_issues_count":0,"has_tasks":true,"task_status":"0 of 0 checklist items completed","_links":{"self":"https://gitlab.com/api/v4/projects/61363672/issues/2","notes":"https://gitlab.com/api/v4/projects/61363672/issues/2/notes","award_emoji":"https://gitlab.com/api/v4/projects/61363672/issues/2/award_emoji","project":"https://gitlab.com/api/v4/projects/61363672","closed_as_duplicate_of":null},"references":{"short":"#2","relative":"#2","full":"forgejo/test_repo#2"},"severity":"UNKNOWN","moved_to_id":null,"imported":false,"imported_from":"none","service_desk_reply_to":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%3Fpage=1&per_page=3&sort=asc&state=all b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%3Fpage=1&per_page=3&sort=asc&state=all new file mode 100644 index 0000000000..15ae79e7cb --- /dev/null +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fissues%3Fpage=1&per_page=3&sort=asc&state=all @@ -0,0 +1,30 @@ +Vary: Origin, Accept-Encoding +Ratelimit-Limit: 2000 +X-Frame-Options: SAMEORIGIN +Ratelimit-Name: throttle_authenticated_api +X-Page: 1 +X-Per-Page: 3 +X-Prev-Page: +X-Total-Pages: 1 +Ratelimit-Remaining: 1992 +Referrer-Policy: strict-origin-when-cross-origin +X-Content-Type-Options: nosniff +X-Next-Page: +Ratelimit-Reset: 1764067260 +X-Runtime: 0.227834 +X-Total: 3 +Gitlab-Lb: haproxy-main-23-lb-gprd +X-Gitlab-Meta: {"correlation_id":"9a408779112ee0d9-ATL","version":"1"} +Link: ; rel="first", ; rel="last" +Strict-Transport-Security: max-age=31536000 +Gitlab-Sv: api-gke-us-east1-c +Set-Cookie: __cf_bm=EQ7pNoZane3xZqZxCf03mAsOGNucyrqojo9wPP4ChLM-1764067240-1.0.1.1-4ICPtyEd80UCX5bM6Pt8v544OsY1V18pcsukJmXJPhb1L13ezQ1ewpmJtxd2DTS7f_.25GTrVvYfuSVBv4FKp.yuXWHEeTpuHVlaqQnByNY; path=/; expires=Tue, 25-Nov-25 11:10:40 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=1Q7FFLgLU1b0P.8Xf.1UYduw1IUBJQTNRCeXyNRWlCs-1764067240233-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Cf-Cache-Status: MISS +Cache-Control: max-age=0, private, must-revalidate +Etag: W/"7799d3664530e11a655130b629f46644" +Content-Security-Policy: default-src 'none' +Content-Type: application/json +Ratelimit-Observed: 8 + +[{"id":152568896,"iid":1,"project_id":61363672,"title":"Please add an animated gif icon to the merge button","description":"I just want the merge button to hurt my eyes a little. :stuck_out_tongue_closed_eyes:","state":"closed","created_at":"2024-09-03T14:42:34.924Z","updated_at":"2024-09-03T14:48:43.756Z","closed_at":"2024-09-03T14:43:10.708Z","closed_by":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"labels":["bug","discussion"],"milestone":{"id":4711993,"iid":2,"project_id":61363672,"title":"1.0.0","description":"","state":"closed","created_at":"2024-09-03T13:53:08.516Z","updated_at":"2024-09-03T20:03:57.786Z","due_date":null,"start_date":null,"expired":false,"web_url":"https://gitlab.com/forgejo/test_repo/-/milestones/2"},"assignees":[],"author":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"type":"ISSUE","assignee":null,"user_notes_count":0,"merge_requests_count":0,"upvotes":1,"downvotes":0,"due_date":null,"confidential":false,"discussion_locked":null,"issue_type":"issue","web_url":"https://gitlab.com/forgejo/test_repo/-/issues/1","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"blocking_issues_count":0,"has_tasks":true,"task_status":"0 of 0 checklist items completed","_links":{"self":"https://gitlab.com/api/v4/projects/61363672/issues/1","notes":"https://gitlab.com/api/v4/projects/61363672/issues/1/notes","award_emoji":"https://gitlab.com/api/v4/projects/61363672/issues/1/award_emoji","project":"https://gitlab.com/api/v4/projects/61363672","closed_as_duplicate_of":null},"references":{"short":"#1","relative":"#1","full":"forgejo/test_repo#1"},"severity":"UNKNOWN","moved_to_id":null,"imported":false,"imported_from":"none","service_desk_reply_to":null},{"id":152568900,"iid":2,"project_id":61363672,"title":"Test issue","description":"This is test issue 2, do not touch!","state":"closed","created_at":"2024-09-03T14:42:35.371Z","updated_at":"2024-09-03T20:03:43.536Z","closed_at":"2024-09-03T14:43:10.906Z","closed_by":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"labels":["duplicate"],"milestone":{"id":4711993,"iid":2,"project_id":61363672,"title":"1.0.0","description":"","state":"closed","created_at":"2024-09-03T13:53:08.516Z","updated_at":"2024-09-03T20:03:57.786Z","due_date":null,"start_date":null,"expired":false,"web_url":"https://gitlab.com/forgejo/test_repo/-/milestones/2"},"assignees":[],"author":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"type":"ISSUE","assignee":null,"user_notes_count":2,"merge_requests_count":0,"upvotes":1,"downvotes":1,"due_date":null,"confidential":false,"discussion_locked":null,"issue_type":"issue","web_url":"https://gitlab.com/forgejo/test_repo/-/issues/2","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"blocking_issues_count":0,"has_tasks":true,"task_status":"0 of 0 checklist items completed","_links":{"self":"https://gitlab.com/api/v4/projects/61363672/issues/2","notes":"https://gitlab.com/api/v4/projects/61363672/issues/2/notes","award_emoji":"https://gitlab.com/api/v4/projects/61363672/issues/2/award_emoji","project":"https://gitlab.com/api/v4/projects/61363672","closed_as_duplicate_of":null},"references":{"short":"#2","relative":"#2","full":"forgejo/test_repo#2"},"severity":"UNKNOWN","moved_to_id":null,"imported":false,"imported_from":"none","service_desk_reply_to":null},{"id":177633591,"iid":3,"project_id":61363672,"title":"Fix plz","description":"Can we do something about it? !2 is maybe related to that.","state":"opened","created_at":"2025-11-25T09:49:31.991Z","updated_at":"2025-11-25T09:49:31.991Z","closed_at":null,"closed_by":null,"labels":[],"milestone":null,"assignees":[],"author":{"id":10529876,"username":"patdyn","public_email":"","name":"Pat Dyn","state":"active","locked":false,"avatar_url":"https://gitlab.com/uploads/-/system/user/avatar/10529876/avatar.png","web_url":"https://gitlab.com/patdyn"},"type":"ISSUE","assignee":null,"user_notes_count":1,"merge_requests_count":0,"upvotes":0,"downvotes":0,"due_date":null,"confidential":false,"discussion_locked":null,"issue_type":"issue","web_url":"https://gitlab.com/forgejo/test_repo/-/issues/3","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"task_completion_status":{"count":0,"completed_count":0},"blocking_issues_count":0,"has_tasks":true,"task_status":"0 of 0 checklist items completed","_links":{"self":"https://gitlab.com/api/v4/projects/61363672/issues/3","notes":"https://gitlab.com/api/v4/projects/61363672/issues/3/notes","award_emoji":"https://gitlab.com/api/v4/projects/61363672/issues/3/award_emoji","project":"https://gitlab.com/api/v4/projects/61363672","closed_as_duplicate_of":null},"references":{"short":"#3","relative":"#3","full":"forgejo/test_repo#3"},"severity":"UNKNOWN","moved_to_id":null,"imported":false,"imported_from":"none","service_desk_reply_to":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Flabels%3Fpage=1&per_page=100 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Flabels%3Fpage=1&per_page=100 index 7070f55336..a9040ca9c6 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Flabels%3Fpage=1&per_page=100 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Flabels%3Fpage=1&per_page=100 @@ -1,24 +1,30 @@ -X-Runtime: 0.134818 -Gitlab-Lb: haproxy-main-57-lb-gprd -X-Total: 11 -X-Total-Pages: 1 -Content-Security-Policy: default-src 'none' -X-Prev-Page: Etag: W/"91f61a44ed534ef7d26e391dbef8dc0a" -Gitlab-Sv: api-gke-us-east1-b -Vary: Origin, Accept-Encoding -Referrer-Policy: strict-origin-when-cross-origin -Link: ; rel="first", ; rel="last" -X-Frame-Options: SAMEORIGIN -X-Gitlab-Meta: {"correlation_id":"25e616938688ad5e6ab58382f3e39c16","version":"1"} -X-Next-Page: +Strict-Transport-Security: max-age=31536000 X-Page: 1 -Set-Cookie: _cfuvid=hdkQYZmgtcCpfA24UkICU4IGbz73Cpnd9.1NfpCL96Y-1725394794621-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Content-Type: application/json +X-Prev-Page: +Ratelimit-Observed: 6 +X-Gitlab-Meta: {"correlation_id":"9a408773b4a6e0d9-ATL","version":"1"} +X-Next-Page: +X-Total: 11 +Set-Cookie: __cf_bm=j7aaqO7rO5ziUIdQvf3RVOCy1YoqvZ3PMMn1F62gies-1764067239-1.0.1.1-O7tT2VIiDucsyQjuWn1XLbewuJ4MmW97cRVANB7hdyWUzZpBkjvWpeR7MtctRTLHGgNDSjZ4cB8rX_vr7.zxtEJNM0LOGN.YT_oQoCMABHs; path=/; expires=Tue, 25-Nov-25 11:10:39 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=ym04h_vUzr0khxRVeGrqFkX54HQowOMaSiPIyov7_dU-1764067239516-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +X-Total-Pages: 1 Cache-Control: max-age=0, private, must-revalidate -Cf-Cache-Status: MISS +Content-Security-Policy: default-src 'none' +Gitlab-Lb: haproxy-main-49-lb-gprd +Referrer-Policy: strict-origin-when-cross-origin +Content-Type: application/json +Ratelimit-Limit: 2000 +X-Frame-Options: SAMEORIGIN +X-Runtime: 0.141755 +Link: ; rel="first", ; rel="last" +Ratelimit-Name: throttle_authenticated_api X-Content-Type-Options: nosniff X-Per-Page: 100 -Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +Ratelimit-Remaining: 1994 +Ratelimit-Reset: 1764067260 +Gitlab-Sv: api-gke-us-east1-b +Cf-Cache-Status: MISS [{"id":36554072,"name":"bug","description":null,"description_html":"","text_color":"#FFFFFF","color":"#d9534f","subscribed":false,"priority":null,"is_project_label":true},{"id":36554074,"name":"confirmed","description":null,"description_html":"","text_color":"#FFFFFF","color":"#d9534f","subscribed":false,"priority":null,"is_project_label":true},{"id":36554073,"name":"critical","description":null,"description_html":"","text_color":"#FFFFFF","color":"#d9534f","subscribed":false,"priority":null,"is_project_label":true},{"id":36554077,"name":"discussion","description":null,"description_html":"","text_color":"#FFFFFF","color":"#428bca","subscribed":false,"priority":null,"is_project_label":true},{"id":36554075,"name":"documentation","description":null,"description_html":"","text_color":"#1F1E24","color":"#f0ad4e","subscribed":false,"priority":null,"is_project_label":true},{"id":36556606,"name":"duplicate","description":"","description_html":"","text_color":"#FFFFFF","color":"#7F8C8D","subscribed":false,"priority":null,"is_project_label":true},{"id":36554079,"name":"enhancement","description":null,"description_html":"","text_color":"#FFFFFF","color":"#5cb85c","subscribed":false,"priority":null,"is_project_label":true},{"id":36554078,"name":"suggestion","description":null,"description_html":"","text_color":"#FFFFFF","color":"#428bca","subscribed":false,"priority":null,"is_project_label":true},{"id":36554076,"name":"support","description":null,"description_html":"","text_color":"#1F1E24","color":"#f0ad4e","subscribed":false,"priority":null,"is_project_label":true},{"id":36554080,"name":"test-scope::label0","description":"scoped label","description_html":"scoped label","text_color":"#FFFFFF","color":"#6699cc","subscribed":false,"priority":null,"is_project_label":true},{"id":36554094,"name":"test-scope::label1","description":"","description_html":"","text_color":"#FFFFFF","color":"#dc143c","subscribed":false,"priority":null,"is_project_label":true}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1 index 2903724635..fe69777a61 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1 @@ -1,17 +1,23 @@ -X-Content-Type-Options: nosniff -X-Runtime: 0.132332 -Strict-Transport-Security: max-age=31536000 -Set-Cookie: _cfuvid=dCpqfgALGbwKdCAsAe6oT5DVCj6oBwrnU5y2Jd40KPs-1725394799000-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -X-Frame-Options: SAMEORIGIN -Referrer-Policy: strict-origin-when-cross-origin -Gitlab-Lb: haproxy-main-11-lb-gprd -Content-Security-Policy: default-src 'none' -Etag: W/"8b6a8cc6f36ac5289783c7654f292212" -Vary: Origin, Accept-Encoding -X-Gitlab-Meta: {"correlation_id":"bef818a29fa7cfc1f075ef0925e63404","version":"1"} -Gitlab-Sv: api-gke-us-east1-d -Content-Type: application/json -Cache-Control: max-age=0, private, must-revalidate +X-Gitlab-Meta: {"correlation_id":"9a4087994491e0d9-ATL","version":"1"} +X-Runtime: 0.188528 Cf-Cache-Status: MISS +Vary: Origin, Accept-Encoding +Gitlab-Sv: api-gke-us-east1-c +Ratelimit-Limit: 2000 +X-Frame-Options: SAMEORIGIN +Set-Cookie: __cf_bm=vRq7jzBikEzTq7AnqMSFoJylX9YITdPajG9uX4tCYrc-1764067245-1.0.1.1-Hvlybvw74Kibce1zpFZ5U3RZzRotTcS82dIqQrHeSDN5svoMhXq6s7eKBI.0y2048mnyh3swNvHQJl8uNf2OU7_0q_XKtRC.y7j6Z9HlKLQ; path=/; expires=Tue, 25-Nov-25 11:10:45 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=.7RnvMg3Voknz7jDeEvYmkDEODsSDm7wD3k4HhDyqas-1764067245334-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Cache-Control: max-age=0, private, must-revalidate +Strict-Transport-Security: max-age=31536000 +Gitlab-Lb: haproxy-main-20-lb-gprd +Ratelimit-Reset: 1764067260 +Etag: W/"03394ce63b5a2ead1d07419720dfe556" +Ratelimit-Remaining: 1977 +Referrer-Policy: strict-origin-when-cross-origin +X-Content-Type-Options: nosniff +Content-Type: application/json +Content-Security-Policy: default-src 'none' +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 23 -{"id":324657888,"iid":1,"project_id":61363672,"title":"Test branch","description":"do not merge this PR","state":"opened","created_at":"2024-09-03T07:57:19.866Z","updated_at":"2024-09-03T18:50:21.065Z","merged_by":null,"merge_user":null,"merged_at":null,"closed_by":null,"closed_at":null,"target_branch":"master","source_branch":"feat/test","user_notes_count":0,"upvotes":1,"downvotes":0,"author":{"id":2005797,"username":"oliverpool","name":"oliverpool","state":"active","locked":false,"avatar_url":"https://gitlab.com/uploads/-/system/user/avatar/2005797/avatar.png","web_url":"https://gitlab.com/oliverpool"},"assignees":[],"assignee":null,"reviewers":[],"source_project_id":61363672,"target_project_id":61363672,"labels":["test-scope::label0","test-scope::label1"],"draft":false,"imported":false,"imported_from":"none","work_in_progress":false,"milestone":{"id":4711991,"iid":1,"project_id":61363672,"title":"1.1.0","description":"","state":"active","created_at":"2024-09-03T13:52:48.414Z","updated_at":"2024-09-03T14:52:14.093Z","due_date":null,"start_date":null,"expired":false,"web_url":"https://gitlab.com/forgejo/test_repo/-/milestones/1"},"merge_when_pipeline_succeeds":false,"merge_status":"can_be_merged","detailed_merge_status":"mergeable","sha":"9f733b96b98a4175276edf6a2e1231489c3bdd23","merge_commit_sha":null,"squash_commit_sha":null,"discussion_locked":null,"should_remove_source_branch":null,"force_remove_source_branch":true,"prepared_at":"2024-09-03T08:15:46.361Z","reference":"!1","references":{"short":"!1","relative":"!1","full":"forgejo/test_repo!1"},"web_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests/1","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"squash":false,"squash_on_merge":false,"task_completion_status":{"count":0,"completed_count":0},"has_conflicts":false,"blocking_discussions_resolved":true,"approvals_before_merge":null,"subscribed":true,"changes_count":"1","latest_build_started_at":null,"latest_build_finished_at":null,"first_deployed_to_production_at":null,"pipeline":null,"head_pipeline":null,"diff_refs":{"base_sha":"c59c9b451acca9d106cc19d61d87afe3fbbb8b83","head_sha":"9f733b96b98a4175276edf6a2e1231489c3bdd23","start_sha":"c59c9b451acca9d106cc19d61d87afe3fbbb8b83"},"merge_error":null,"first_contribution":true,"user":{"can_merge":true}} \ No newline at end of file +{"id":324657888,"iid":1,"project_id":61363672,"title":"Test branch","description":"do not merge this PR","state":"opened","created_at":"2024-09-03T07:57:19.866Z","updated_at":"2024-09-03T18:50:21.065Z","merged_by":null,"merge_user":null,"merged_at":null,"closed_by":null,"closed_at":null,"target_branch":"master","source_branch":"feat/test","user_notes_count":0,"upvotes":1,"downvotes":0,"author":{"id":2005797,"username":"oliverpool","public_email":"","name":"oliverpool","state":"active","locked":false,"avatar_url":"https://gitlab.com/uploads/-/system/user/avatar/2005797/avatar.png","web_url":"https://gitlab.com/oliverpool"},"assignees":[],"assignee":null,"reviewers":[],"source_project_id":61363672,"target_project_id":61363672,"labels":["test-scope::label0","test-scope::label1"],"draft":false,"imported":false,"imported_from":"none","work_in_progress":false,"milestone":{"id":4711991,"iid":1,"project_id":61363672,"title":"1.1.0","description":"","state":"active","created_at":"2024-09-03T13:52:48.414Z","updated_at":"2024-09-03T14:52:14.093Z","due_date":null,"start_date":null,"expired":false,"web_url":"https://gitlab.com/forgejo/test_repo/-/milestones/1"},"merge_when_pipeline_succeeds":false,"merge_status":"can_be_merged","detailed_merge_status":"mergeable","merge_after":null,"sha":"9f733b96b98a4175276edf6a2e1231489c3bdd23","merge_commit_sha":null,"squash_commit_sha":null,"discussion_locked":null,"should_remove_source_branch":null,"force_remove_source_branch":true,"prepared_at":"2024-09-03T08:15:46.361Z","reference":"!1","references":{"short":"!1","relative":"!1","full":"forgejo/test_repo!1"},"web_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests/1","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"squash":false,"squash_on_merge":false,"task_completion_status":{"count":0,"completed_count":0},"has_conflicts":false,"blocking_discussions_resolved":true,"approvals_before_merge":null,"subscribed":true,"changes_count":"1","latest_build_started_at":null,"latest_build_finished_at":null,"first_deployed_to_production_at":null,"pipeline":null,"head_pipeline":null,"diff_refs":{"base_sha":"c59c9b451acca9d106cc19d61d87afe3fbbb8b83","head_sha":"9f733b96b98a4175276edf6a2e1231489c3bdd23","start_sha":"c59c9b451acca9d106cc19d61d87afe3fbbb8b83"},"merge_error":null,"first_contribution":true,"user":{"can_merge":true}} \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Fapprovals b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Fapprovals index df85ea4f32..4a9e817815 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Fapprovals +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Fapprovals @@ -1,17 +1,23 @@ -Gitlab-Sv: api-gke-us-east1-d -Set-Cookie: _cfuvid=c8dYhAX7c7Kj.9kgrISTCaOoMKuKV0amVHZbY28k_vc-1725394800394-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Content-Security-Policy: default-src 'none' -X-Frame-Options: SAMEORIGIN -X-Gitlab-Meta: {"correlation_id":"1bfdf6ff862f2719b5ff0fa43d4b1f68","version":"1"} -Referrer-Policy: strict-origin-when-cross-origin Cf-Cache-Status: MISS -Cache-Control: max-age=0, private, must-revalidate -X-Runtime: 0.141568 -Strict-Transport-Security: max-age=31536000 -Gitlab-Lb: haproxy-main-26-lb-gprd -Content-Type: application/json -Etag: W/"90fb650b1668940dd7ccac3869a3a2bd" -Vary: Origin, Accept-Encoding +Gitlab-Sv: api-gke-us-east1-d +Ratelimit-Reset: 1764067260 +Referrer-Policy: strict-origin-when-cross-origin X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +Content-Type: application/json +Cache-Control: max-age=0, private, must-revalidate +Etag: W/"3da5e3df1b0f9c6ee83a8de4be017f3a" +Vary: Origin, Accept-Encoding +Content-Security-Policy: default-src 'none' +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 26 +Gitlab-Lb: haproxy-main-03-lb-gprd +Ratelimit-Remaining: 1974 +X-Gitlab-Meta: {"correlation_id":"9a40879ea04ee0d9-ATL","version":"1"} +Strict-Transport-Security: max-age=31536000 +X-Runtime: 0.089708 +Set-Cookie: __cf_bm=OBdSEa.4KBD148U98yToDpYASVjC3RfvvJChcLJD_Kc-1764067246-1.0.1.1-1dlglt_BfkVGaLI98pb6juSKJMhyzHMY1KT5aZOuQyrf2HisPIb7tFfDgraswOe_IEGXIJyHjGWne9ncfWM_I1ALhUewLlQRlSABre9b17I; path=/; expires=Tue, 25-Nov-25 11:10:46 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=3vl9VuwtU32ij7owL1kgjOEE9G9SIR6v5rGoV1LSWMw-1764067246314-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -{"id":324657888,"iid":1,"project_id":61363672,"title":"Test branch","description":"do not merge this PR","state":"opened","created_at":"2024-09-03T07:57:19.866Z","updated_at":"2024-09-03T18:50:21.065Z","merge_status":"can_be_merged","approved":true,"approvals_required":0,"approvals_left":0,"require_password_to_approve":false,"approved_by":[{"user":{"id":548513,"username":"mkobel","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"}}],"suggested_approvers":[],"approvers":[],"approver_groups":[],"user_has_approved":true,"user_can_approve":false,"approval_rules_left":[],"has_approval_rules":false,"merge_request_approvers_available":false,"multiple_approval_rules_available":false,"invalid_approvers_rules":[]} \ No newline at end of file +{"id":324657888,"iid":1,"project_id":61363672,"title":"Test branch","description":"do not merge this PR","state":"opened","created_at":"2024-09-03T07:57:19.866Z","updated_at":"2024-09-03T18:50:21.065Z","merge_status":"can_be_merged","approved":true,"approvals_required":0,"approvals_left":0,"require_password_to_approve":false,"approved_by":[{"user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"approved_at":"2024-09-03T18:50:20.774Z"}],"suggested_approvers":[],"approvers":[],"approver_groups":[],"user_has_approved":false,"user_can_approve":true,"approval_rules_left":[],"has_approval_rules":false,"merge_request_approvers_available":false,"multiple_approval_rules_available":false,"invalid_approvers_rules":[]} \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=1&per_page=1 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=1&per_page=1 index 7e503125c9..e14fd54fe9 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=1&per_page=1 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=1&per_page=1 @@ -1,24 +1,30 @@ -X-Gitlab-Meta: {"correlation_id":"46af78321ea2674ac3e1e56243baabf6","version":"1"} -Gitlab-Lb: haproxy-main-27-lb-gprd -Vary: Origin, Accept-Encoding -X-Total-Pages: 2 -Strict-Transport-Security: max-age=31536000 -Content-Security-Policy: default-src 'none' -X-Content-Type-Options: nosniff -X-Page: 1 -X-Runtime: 0.071781 -Cf-Cache-Status: MISS -Link: ; rel="next", ; rel="first", ; rel="last" -Etag: W/"a08d29f7fa018b5a6f30ae6de1035350" -X-Prev-Page: X-Total: 2 -Content-Type: application/json -X-Frame-Options: SAMEORIGIN -X-Next-Page: 2 -X-Per-Page: 1 -Referrer-Policy: strict-origin-when-cross-origin -Gitlab-Sv: api-gke-us-east1-b -Set-Cookie: _cfuvid=PKNy4TeWDnd8j772wQMiBZpmFpOjDfu9JcpnUSyVULU-1725394799568-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None Cache-Control: max-age=0, private, must-revalidate +Gitlab-Lb: haproxy-main-52-lb-gprd +Ratelimit-Name: throttle_authenticated_api +X-Page: 1 +Etag: W/"70c4ed058c515311f62a5765a249cc5a" +Referrer-Policy: strict-origin-when-cross-origin +X-Next-Page: 2 +Link: ; rel="next", ; rel="first", ; rel="last" +Content-Security-Policy: default-src 'none' +X-Total-Pages: 2 +Set-Cookie: __cf_bm=XkuPSlZqX6G9cDIjI3kScBSmIE8.DphoKnxS7TLsOkw-1764063483-1.0.1.1-mbTkp1GpKErhvN0TGPwU7C70xZ3hGtyNGmIFwd0ztkPoYV1Sa6EAAmpFv0UvuVIo1MZUfmjpu0nKcM0sgmv5Yq93F_j6Mo5yv42SwqSCp.o; path=/; expires=Tue, 25-Nov-25 10:08:03 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=bAOzKGORp_o4KNjq.9E3ti0ukBGdMCxdTqK0GKzH8HM-1764063483573-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Content-Type: application/json +X-Content-Type-Options: nosniff +X-Prev-Page: +Strict-Transport-Security: max-age=31536000 +Ratelimit-Limit: 2000 +Ratelimit-Remaining: 1993 +X-Frame-Options: SAMEORIGIN +X-Gitlab-Meta: {"correlation_id":"9a402bbdd2c14fc7-ATL","version":"1"} +Gitlab-Sv: gke-cny-api +Ratelimit-Observed: 7 +X-Runtime: 0.556538 +Cf-Cache-Status: MISS +Vary: Origin, Accept-Encoding +Ratelimit-Reset: 1764063540 +X-Per-Page: 1 -[{"id":28098492,"name":"thumbsup","user":{"id":548513,"username":"mkobel","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T18:49:58.072Z","updated_at":"2024-09-03T18:49:58.072Z","awardable_id":324657888,"awardable_type":"MergeRequest","url":null}] \ No newline at end of file +[{"id":28098492,"name":"thumbsup","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T18:49:58.072Z","updated_at":"2024-09-03T18:49:58.072Z","awardable_id":324657888,"awardable_type":"MergeRequest","url":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=1&per_page=2 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=1&per_page=2 new file mode 100644 index 0000000000..7f5cac98b4 --- /dev/null +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=1&per_page=2 @@ -0,0 +1,30 @@ +Cf-Cache-Status: MISS +Ratelimit-Reset: 1764067260 +X-Page: 1 +X-Total-Pages: 1 +Content-Type: application/json +Gitlab-Lb: haproxy-main-54-lb-gprd +Ratelimit-Limit: 2000 +Referrer-Policy: strict-origin-when-cross-origin +X-Gitlab-Meta: {"correlation_id":"9a40879b9635e0d9-ATL","version":"1"} +X-Runtime: 0.064452 +Set-Cookie: __cf_bm=b3C7feSdSLcE5xBQkgGd_HSIGeFMUvtzoe7GjmBh4Sk-1764067245-1.0.1.1-69_Md94YSDAyIau0t6tbIWbQGCnD__2bLKIX_WYDa0uRa9WuVm1U9fHC0QdOI_PYD4NVQM68oFumZvLz.O6A93tHnH6PxlVDxJEc1i_gzfQ; path=/; expires=Tue, 25-Nov-25 11:10:45 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=i6_IAh2s573c9vJrB5wlCzyfSOOgp4v9v0gzK1Wr0nk-1764067245571-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Vary: Origin, Accept-Encoding +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 24 +X-Content-Type-Options: nosniff +X-Total: 2 +Link: ; rel="first", ; rel="last" +Strict-Transport-Security: max-age=31536000 +Gitlab-Sv: api-gke-us-east1-d +Ratelimit-Remaining: 1976 +Etag: W/"bd2f80bb25761a40ac32dfacf2031227" +Content-Security-Policy: default-src 'none' +X-Next-Page: +X-Prev-Page: +Cache-Control: max-age=0, private, must-revalidate +X-Frame-Options: SAMEORIGIN +X-Per-Page: 2 + +[{"id":28098492,"name":"thumbsup","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T18:49:58.072Z","updated_at":"2024-09-03T18:49:58.072Z","awardable_id":324657888,"awardable_type":"MergeRequest","url":null},{"id":28098494,"name":"tada","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T18:50:02.028Z","updated_at":"2024-09-03T18:50:02.028Z","awardable_id":324657888,"awardable_type":"MergeRequest","url":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=2&per_page=1 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=2&per_page=1 index f33a33cb7d..afd45d6577 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=2&per_page=1 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=2&per_page=1 @@ -1,24 +1,30 @@ -Etag: W/"9d4f10c73db7508f9f63f83f4f3e9dd2" -Link: ; rel="prev", ; rel="first", ; rel="last" -X-Runtime: 0.070580 -Gitlab-Sv: api-gke-us-east1-c -Content-Type: application/json -Cf-Cache-Status: MISS +X-Runtime: 0.081215 Vary: Origin, Accept-Encoding X-Frame-Options: SAMEORIGIN +X-Gitlab-Meta: {"correlation_id":"9a402bc4a7d24fc7-ATL","version":"1"} +X-Page: 2 +Set-Cookie: __cf_bm=YmAk0.hRdZg1DtVIkj7YXf8z7q94AXkw7DPT6UASlcg-1764063484-1.0.1.1-rCR7QJGDjGvGw7RA8JmcdbMEKiNoDr3w9Iyu290lGhFN6oyozy1GKI51UR6Ul29VSBh9W2lqUqeBIF2gSCTe227jItc5EnFmEUrzN3_dPUQ; path=/; expires=Tue, 25-Nov-25 10:08:04 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=cQxspr39HLxTXEIAEI3Z8UlOj.KlZ4ayyHo87KzcH9g-1764063484057-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Content-Security-Policy: default-src 'none' +Content-Type: application/json +Cf-Cache-Status: MISS +Strict-Transport-Security: max-age=31536000 +Ratelimit-Reset: 1764063540 +X-Per-Page: 1 X-Prev-Page: 1 -Gitlab-Lb: haproxy-main-58-lb-gprd -Cache-Control: max-age=0, private, must-revalidate +Ratelimit-Observed: 8 +Referrer-Policy: strict-origin-when-cross-origin +X-Content-Type-Options: nosniff +X-Next-Page: X-Total: 2 X-Total-Pages: 2 -Strict-Transport-Security: max-age=31536000 -Referrer-Policy: strict-origin-when-cross-origin -X-Gitlab-Meta: {"correlation_id":"c39c59a22f48b51fcdbe4d7121983045","version":"1"} -X-Next-Page: -X-Per-Page: 1 -Set-Cookie: _cfuvid=ocsAYkwqggUMC09s009R.yWb7q3OTyWzwjV73iFeOAM-1725394799827-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Content-Security-Policy: default-src 'none' -X-Content-Type-Options: nosniff -X-Page: 2 +Gitlab-Lb: haproxy-main-59-lb-gprd +Gitlab-Sv: api-gke-us-east1-c +Ratelimit-Remaining: 1992 +Cache-Control: max-age=0, private, must-revalidate +Etag: W/"9c7da703c0da01fbfe41ef1d4bd2a84e" +Link: ; rel="prev", ; rel="first", ; rel="last" +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api -[{"id":28098494,"name":"tada","user":{"id":548513,"username":"mkobel","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T18:50:02.028Z","updated_at":"2024-09-03T18:50:02.028Z","awardable_id":324657888,"awardable_type":"MergeRequest","url":null}] \ No newline at end of file +[{"id":28098494,"name":"tada","user":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"created_at":"2024-09-03T18:50:02.028Z","updated_at":"2024-09-03T18:50:02.028Z","awardable_id":324657888,"awardable_type":"MergeRequest","url":null}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=2&per_page=2 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=2&per_page=2 new file mode 100644 index 0000000000..3eae28338a --- /dev/null +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=2&per_page=2 @@ -0,0 +1,32 @@ +Cache-Control: max-age=0, private, must-revalidate +Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" +Ratelimit-Limit: 2000 +Ratelimit-Remaining: 1975 +X-Next-Page: +X-Prev-Page: +Cf-Cache-Status: MISS +Accept-Ranges: bytes +Ratelimit-Reset: 1764067260 +Gitlab-Lb: haproxy-main-20-lb-gprd +X-Content-Type-Options: nosniff +X-Gitlab-Meta: {"correlation_id":"9a40879d1756e0d9-ATL","version":"1"} +X-Total: 2 +X-Total-Pages: 1 +Content-Type: application/json +Content-Length: 2 +Gitlab-Sv: api-gke-us-east1-c +Ratelimit-Observed: 25 +X-Page: 2 +X-Runtime: 0.067902 +Ratelimit-Name: throttle_authenticated_api +X-Per-Page: 2 +Vary: Origin, Accept-Encoding +Referrer-Policy: strict-origin-when-cross-origin +X-Frame-Options: SAMEORIGIN +Strict-Transport-Security: max-age=31536000 +Content-Security-Policy: default-src 'none' +Link: ; rel="first", ; rel="last" +Set-Cookie: __cf_bm=h8BkNDjGvwb3L57ZRGQkkABB5U78kXobmi1vtvY8i5c-1764067245-1.0.1.1-qeX.CJTb63vRVrI6u7enwWNE_coj067G.amslx62c.UdglGf2qHOdO25C8bxHlEWtNPaxlkY0ihPzQSjY2B.em1fEWDa98O9iqQxEEgy680; path=/; expires=Tue, 25-Nov-25 11:10:45 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=384Idtls0tkTwfkLTd3hr9ayqErhfdHhmT.uwruZi1E-1764067245816-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None + +[] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=3&per_page=1 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=3&per_page=1 index 783ea3b642..22dc3f24fc 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=3&per_page=1 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F1%2Faward_emoji%3Fpage=3&per_page=1 @@ -1,26 +1,32 @@ -Content-Length: 2 -X-Next-Page: -X-Per-Page: 1 -X-Runtime: 0.069736 -Link: ; rel="first", ; rel="last" -X-Total-Pages: 2 -X-Content-Type-Options: nosniff -X-Gitlab-Meta: {"correlation_id":"4a199f75df6e91c7bb25ce7f0ae5ba87","version":"1"} -Cf-Cache-Status: MISS -Strict-Transport-Security: max-age=31536000 -Referrer-Policy: strict-origin-when-cross-origin -X-Prev-Page: +X-Runtime: 0.081756 Content-Type: application/json -Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" -Set-Cookie: _cfuvid=LKsdyXLErarfZPBo25O7PYiKWcvrF92MfU4i57.1wVw-1725394800092-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Content-Security-Policy: default-src 'none' -Accept-Ranges: bytes X-Frame-Options: SAMEORIGIN -Gitlab-Lb: haproxy-main-12-lb-gprd -Gitlab-Sv: api-gke-us-east1-b -Cache-Control: max-age=0, private, must-revalidate -Vary: Origin, Accept-Encoding X-Page: 3 +Strict-Transport-Security: max-age=31536000 +Content-Security-Policy: default-src 'none' +X-Content-Type-Options: nosniff +X-Next-Page: X-Total: 2 +Content-Length: 2 +Cf-Cache-Status: MISS +X-Prev-Page: +Accept-Ranges: bytes +Gitlab-Sv: api-gke-us-east1-c +Set-Cookie: __cf_bm=AHaUZsC2vGJiM7kOdVaKOrbNwS69trH4NwA4P6H35Vo-1764063484-1.0.1.1-gfqG42z4PvllEAyjj0SNhLcsgPK3u54jS6cGLa78UgC.Any.C_FMzf7kkXJvCnT28XdjZ7_FcCLOVfdz8xG3y9QpvRCvCWhSzmFixx.vluM; path=/; expires=Tue, 25-Nov-25 10:08:04 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=yd78Ii6EQz3b4s8UdQ3cbMCFHi10JBkiCih71Ur2DCY-1764063484541-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Cache-Control: max-age=0, private, must-revalidate +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Reset: 1764063540 +Link: ; rel="first", ; rel="last" +Gitlab-Lb: haproxy-main-38-lb-gprd +Ratelimit-Limit: 2000 +Ratelimit-Observed: 9 +Ratelimit-Remaining: 1991 +X-Gitlab-Meta: {"correlation_id":"9a402bc7a1d04fc7-ATL","version":"1"} +X-Total-Pages: 2 +Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" +X-Per-Page: 1 +Vary: Origin, Accept-Encoding +Referrer-Policy: strict-origin-when-cross-origin [] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2 new file mode 100644 index 0000000000..f28ebfc5b3 --- /dev/null +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2 @@ -0,0 +1,23 @@ +X-Runtime: 0.178866 +Set-Cookie: __cf_bm=HovvnRHtwoTC7rEbSu8TkTRpkxnN64EyEWBOEpKDwU8-1764067244-1.0.1.1-0CLYMFRqlcI0z_A7KhZby1Aw17uQQga6KzLBpEDHWCnRtXpCZQJogK6a4bPwHMTwIX88ao8QGRhAkD.23OgXKxzXH4VrjXO0rYEok74gQd4; path=/; expires=Tue, 25-Nov-25 11:10:44 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=O46TDle0ljANZqt352yHmPEDBXtO70FiLe5dp9Z0Wnw-1764067244738-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Content-Type: application/json +Ratelimit-Name: throttle_authenticated_api +X-Content-Type-Options: nosniff +Strict-Transport-Security: max-age=31536000 +Gitlab-Sv: api-gke-us-east1-b +Ratelimit-Reset: 1764067260 +X-Gitlab-Meta: {"correlation_id":"9a408795917de0d9-ATL","version":"1"} +Cf-Cache-Status: MISS +Etag: W/"e5bb0f6d19fcb489771c0b23b44ef3c7" +Vary: Origin, Accept-Encoding +Gitlab-Lb: haproxy-main-25-lb-gprd +Ratelimit-Limit: 2000 +Referrer-Policy: strict-origin-when-cross-origin +Cache-Control: max-age=0, private, must-revalidate +Content-Security-Policy: default-src 'none' +Ratelimit-Observed: 21 +Ratelimit-Remaining: 1979 +X-Frame-Options: SAMEORIGIN + +{"id":435564587,"iid":2,"project_id":61363672,"title":"Test/parsing","description":"Simillar to !1 this solves an issue.","state":"opened","created_at":"2025-11-25T09:48:20.259Z","updated_at":"2025-11-25T09:48:21.627Z","merged_by":null,"merge_user":null,"merged_at":null,"closed_by":null,"closed_at":null,"target_branch":"master","source_branch":"test/parsing","user_notes_count":1,"upvotes":0,"downvotes":0,"author":{"id":10529876,"username":"patdyn","public_email":"","name":"Pat Dyn","state":"active","locked":false,"avatar_url":"https://gitlab.com/uploads/-/system/user/avatar/10529876/avatar.png","web_url":"https://gitlab.com/patdyn"},"assignees":[],"assignee":null,"reviewers":[],"source_project_id":61363672,"target_project_id":61363672,"labels":[],"draft":false,"imported":false,"imported_from":"none","work_in_progress":false,"milestone":null,"merge_when_pipeline_succeeds":false,"merge_status":"cannot_be_merged","detailed_merge_status":"commits_status","merge_after":null,"sha":"c59c9b451acca9d106cc19d61d87afe3fbbb8b83","merge_commit_sha":null,"squash_commit_sha":null,"discussion_locked":null,"should_remove_source_branch":null,"force_remove_source_branch":true,"prepared_at":"2025-11-25T09:48:21.605Z","reference":"!2","references":{"short":"!2","relative":"!2","full":"forgejo/test_repo!2"},"web_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests/2","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null},"squash":false,"squash_on_merge":false,"task_completion_status":{"count":0,"completed_count":0},"has_conflicts":true,"blocking_discussions_resolved":true,"approvals_before_merge":null,"subscribed":true,"changes_count":null,"latest_build_started_at":null,"latest_build_finished_at":null,"first_deployed_to_production_at":null,"pipeline":null,"head_pipeline":null,"diff_refs":{"base_sha":"c59c9b451acca9d106cc19d61d87afe3fbbb8b83","head_sha":"c59c9b451acca9d106cc19d61d87afe3fbbb8b83","start_sha":"c59c9b451acca9d106cc19d61d87afe3fbbb8b83"},"merge_error":null,"first_contribution":true,"user":{"can_merge":true}} \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Faward_emoji%3Fpage=1&per_page=1 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Faward_emoji%3Fpage=1&per_page=1 new file mode 100644 index 0000000000..3ed2facd4e --- /dev/null +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Faward_emoji%3Fpage=1&per_page=1 @@ -0,0 +1,32 @@ +X-Next-Page: +Content-Length: 2 +Cf-Cache-Status: MISS +Content-Security-Policy: default-src 'none' +Gitlab-Lb: haproxy-main-18-lb-gprd +Referrer-Policy: strict-origin-when-cross-origin +Content-Type: application/json +Ratelimit-Observed: 19 +X-Prev-Page: +X-Total: 0 +Accept-Ranges: bytes +Ratelimit-Remaining: 1981 +X-Content-Type-Options: nosniff +X-Per-Page: 1 +X-Runtime: 0.334300 +Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" +Link: ; rel="first", ; rel="last" +Strict-Transport-Security: max-age=31536000 +Gitlab-Sv: api-gke-us-east1-d +Ratelimit-Limit: 2000 +Ratelimit-Reset: 1764065160 +X-Gitlab-Meta: {"correlation_id":"9a40538146934fc7-ATL","version":"1"} +Vary: Origin, Accept-Encoding +X-Page: 1 +X-Total-Pages: 1 +Set-Cookie: __cf_bm=aMNCos1nC670QtjMcPl6AMOr5.gQUvwKoSkkyhFR2hA-1764065111-1.0.1.1-m.0niiKJJIBHdpKYYtPy7xw4tWUWsrxwXv.ZidE9s75fbutM0awLVZIAG4443voqhHhr92y0BEsgfJd2.dEPfqO5y0Zq8U2dIDMlwE7IjUI; path=/; expires=Tue, 25-Nov-25 10:35:11 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=ldTbqSB2WbTEqJNb2dvw._Hp9jvybBVGuhFVSaaB7GA-1764065111752-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Cache-Control: max-age=0, private, must-revalidate +Ratelimit-Name: throttle_authenticated_api +X-Frame-Options: SAMEORIGIN + +[] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Faward_emoji%3Fpage=1&per_page=2 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Faward_emoji%3Fpage=1&per_page=2 new file mode 100644 index 0000000000..c5c729ae7b --- /dev/null +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Faward_emoji%3Fpage=1&per_page=2 @@ -0,0 +1,32 @@ +Cf-Cache-Status: MISS +Link: ; rel="first", ; rel="last" +Ratelimit-Remaining: 1978 +Referrer-Policy: strict-origin-when-cross-origin +Strict-Transport-Security: max-age=31536000 +Gitlab-Sv: api-gke-us-east1-c +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-Gitlab-Meta: {"correlation_id":"9a408797d389e0d9-ATL","version":"1"} +X-Total: 0 +Content-Length: 2 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Reset: 1764067260 +X-Prev-Page: +Set-Cookie: __cf_bm=H04JUnNcTc5yzKjplGbl_VmPweCoi2aMc578JKU_Q.M-1764067244-1.0.1.1-zcEHZ4sJjriN3Gh0ujBF_3s7qAY.rzjaoXGjAqzJntUfd.fKcKzAnTLjEg70s0xAr7208YETSkoJ7.HlDXm0T3N1s6mI_oGRQ_xeDuc5FP8; path=/; expires=Tue, 25-Nov-25 11:10:44 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=R_C1xCw9pcpiAS2mZ6MTjC9pE2RWjtSAXb5vDH3RRbQ-1764067244972-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Accept-Ranges: bytes +Content-Security-Policy: default-src 'none' +Gitlab-Lb: haproxy-main-23-lb-gprd +X-Total-Pages: 1 +Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" +Ratelimit-Observed: 22 +X-Runtime: 0.058917 +Content-Type: application/json +Ratelimit-Limit: 2000 +Cache-Control: max-age=0, private, must-revalidate +X-Next-Page: +Vary: Origin, Accept-Encoding +X-Page: 1 +X-Per-Page: 2 + +[] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Fdiscussions%3Fpage=1&per_page=100 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Fdiscussions%3Fpage=1&per_page=100 new file mode 100644 index 0000000000..43a14538b7 --- /dev/null +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Fdiscussions%3Fpage=1&per_page=100 @@ -0,0 +1,30 @@ +Set-Cookie: __cf_bm=o0aS8o8ajcHs8a5C4vSUXQmZAQazi4dD0KCvTVlvSes-1764067243-1.0.1.1-94CxZwBfz9gJBykfV5Arn2iq8ORj_QBoMo9BmK9tJUwpEf0.WHNvPI5pVdUvZhdhCJGv3Bcxj0RbLwC..n2enJmsCgru1h.kjm0qBMVBCHA; path=/; expires=Tue, 25-Nov-25 11:10:43 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=HmW_.D2rp7JGXPOBvfl0WM76DobWOh6fFYs.z8WTWgw-1764067243834-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Cf-Cache-Status: MISS +Link: ; rel="first", ; rel="last" +Ratelimit-Observed: 18 +X-Total: 2 +Content-Security-Policy: default-src 'none' +Ratelimit-Remaining: 1982 +X-Next-Page: +Content-Type: application/json +Strict-Transport-Security: max-age=31536000 +Cache-Control: max-age=0, private, must-revalidate +Gitlab-Lb: haproxy-main-03-lb-gprd +X-Gitlab-Meta: {"correlation_id":"9a40879044cce0d9-ATL","version":"1"} +Etag: W/"d87805cd93ac626c7e1fe459c808b459" +X-Page: 1 +X-Runtime: 0.131844 +Vary: Origin, Accept-Encoding +Gitlab-Sv: api-gke-us-east1-d +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Reset: 1764067260 +X-Frame-Options: SAMEORIGIN +X-Prev-Page: +Ratelimit-Limit: 2000 +Referrer-Policy: strict-origin-when-cross-origin +X-Content-Type-Options: nosniff +X-Per-Page: 100 +X-Total-Pages: 1 + +[{"id":"b5ca983c1aa64f694c89a7c6df9a27a7b68b5414","individual_note":true,"notes":[{"id":2911818565,"type":null,"body":"Although we had some trouble with !1.","author":{"id":10529876,"username":"patdyn","public_email":"","name":"Pat Dyn","state":"active","locked":false,"avatar_url":"https://gitlab.com/uploads/-/system/user/avatar/10529876/avatar.png","web_url":"https://gitlab.com/patdyn"},"created_at":"2025-11-25T09:49:00.750Z","updated_at":"2025-11-25T09:49:00.750Z","system":false,"noteable_id":435564587,"noteable_type":"MergeRequest","project_id":61363672,"resolvable":false,"confidential":false,"internal":false,"imported":false,"imported_from":"none","noteable_iid":2,"commands_changes":{}}]},{"id":"d6baff3ff75a892764e7b3cc164689687c875266","individual_note":true,"notes":[{"id":2911820075,"type":null,"body":"mentioned in issue #3","author":{"id":10529876,"username":"patdyn","public_email":"","name":"Pat Dyn","state":"active","locked":false,"avatar_url":"https://gitlab.com/uploads/-/system/user/avatar/10529876/avatar.png","web_url":"https://gitlab.com/patdyn"},"created_at":"2025-11-25T09:49:32.263Z","updated_at":"2025-11-25T09:49:32.265Z","system":true,"noteable_id":435564587,"noteable_type":"MergeRequest","project_id":61363672,"resolvable":false,"confidential":false,"internal":false,"imported":false,"imported_from":"none","noteable_iid":2,"commands_changes":{}}]}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Fresource_state_events%3Fpage=1&per_page=100 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Fresource_state_events%3Fpage=1&per_page=100 new file mode 100644 index 0000000000..f4f9a26815 --- /dev/null +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%2F2%2Fresource_state_events%3Fpage=1&per_page=100 @@ -0,0 +1,32 @@ +Cf-Cache-Status: MISS +Cache-Control: max-age=0, private, must-revalidate +Content-Security-Policy: default-src 'none' +X-Content-Type-Options: nosniff +X-Per-Page: 100 +Content-Type: application/json +Vary: Origin, Accept-Encoding +Gitlab-Sv: api-gke-us-east1-b +X-Frame-Options: SAMEORIGIN +X-Page: 1 +X-Total: 0 +Accept-Ranges: bytes +Link: ; rel="first", ; rel="last" +X-Prev-Page: +X-Total-Pages: 1 +Strict-Transport-Security: max-age=31536000 +Gitlab-Lb: haproxy-main-37-lb-gprd +X-Gitlab-Meta: {"correlation_id":"9a408792362de0d9-ATL","version":"1"} +X-Runtime: 0.082961 +Etag: W/"4f53cda18c2baa0c0354bb5f9a3ecbe5" +Ratelimit-Limit: 2000 +Ratelimit-Reset: 1764067260 +Referrer-Policy: strict-origin-when-cross-origin +X-Next-Page: +Set-Cookie: __cf_bm=AnbNdfNVmM4eBwZO07iC8Va19AxPZPp91NRwcAAlm_4-1764067244-1.0.1.1-qdSGqOhjrZDqx4w1MVLdWS9_hLohzXuyB6JjSNSvzdYbcKAB9eHFjLuKigE7JLZOzDMt7b4_O8Z_a9VJwO5qn4QmH1tG0wA3sxAzlkyFpog; path=/; expires=Tue, 25-Nov-25 11:10:44 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=l_1AA94UEp6etDe2M2tLuf3x3bwZqHT2Kexkl1I.K18-1764067244103-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Content-Length: 2 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Observed: 19 +Ratelimit-Remaining: 1981 + +[] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%3Fpage=1&per_page=1&view=simple b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%3Fpage=1&per_page=1&view=simple index 1ad6255c07..bbeec767ae 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%3Fpage=1&per_page=1&view=simple +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%3Fpage=1&per_page=1&view=simple @@ -1,24 +1,30 @@ -Content-Security-Policy: default-src 'none' -X-Prev-Page: -Set-Cookie: _cfuvid=7GL5tIuTakQp9CVUUSpwUwMYssAGhn7PgI8tTqNnmz0-1725394798686-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -X-Gitlab-Meta: {"correlation_id":"7b65fd9c80614af0ef38989ba51e5c29","version":"1"} -Gitlab-Lb: haproxy-main-30-lb-gprd -Etag: W/"8a9c7ac19d2c07896e0e68bc7725d52c" -X-Content-Type-Options: nosniff -Strict-Transport-Security: max-age=31536000 -Gitlab-Sv: api-gke-us-east1-b -X-Page: 1 -X-Total: 1 -Cache-Control: max-age=0, private, must-revalidate -Link: ; rel="first", ; rel="last" +Ratelimit-Name: throttle_authenticated_api X-Per-Page: 1 -Referrer-Policy: strict-origin-when-cross-origin -Cf-Cache-Status: MISS +X-Total: 2 Content-Type: application/json -X-Total-Pages: 1 -Vary: Origin, Accept-Encoding +Etag: W/"bea70362bb288b76f51e3d14bd31bc42" +Ratelimit-Observed: 17 +X-Runtime: 0.447768 +X-Total-Pages: 2 +Ratelimit-Limit: 2000 +Ratelimit-Remaining: 1983 +Ratelimit-Reset: 1764065160 +Referrer-Policy: strict-origin-when-cross-origin +X-Content-Type-Options: nosniff +Gitlab-Sv: api-gke-us-east1-c X-Frame-Options: SAMEORIGIN -X-Runtime: 0.123283 -X-Next-Page: +Content-Security-Policy: default-src 'none' +X-Gitlab-Meta: {"correlation_id":"9a40537b01234fc7-ATL","version":"1"} +Set-Cookie: __cf_bm=_HMrVhG5HY5SHmHF_4ytrh.j8o.Q2PM_KOi9Vc9CQts-1764065110-1.0.1.1-cRPKy84Yt3i5.R5xOiJjfYqrJUDcb2sTotrA4Di5rodGlh4onCATQRN9el4Gx41Mx_TZWH0HatzJ5eRfxxBpy_0QKhMi3U6s46JhXhTzsmU; path=/; expires=Tue, 25-Nov-25 10:35:10 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=J1H2NC_dYKCXaGmgSwM0Ahwl.9DTCQXtQRfhU.LqfQI-1764065110860-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Cf-Cache-Status: MISS +Gitlab-Lb: haproxy-main-08-lb-gprd +X-Page: 1 +Cache-Control: max-age=0, private, must-revalidate +Link: ; rel="next", ; rel="first", ; rel="last" +Strict-Transport-Security: max-age=31536000 +Vary: Origin, Accept-Encoding +X-Next-Page: 2 +X-Prev-Page: -[{"id":324657888,"iid":1,"project_id":61363672,"title":"Test branch","description":"do not merge this PR","state":"opened","created_at":"2024-09-03T07:57:19.866Z","updated_at":"2024-09-03T18:50:21.065Z","web_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests/1"}] \ No newline at end of file +[{"id":435564587,"iid":2,"project_id":61363672,"title":"Test/parsing","description":"Simillar to !1 this solves an issue.","state":"opened","created_at":"2025-11-25T09:48:20.259Z","updated_at":"2025-11-25T09:48:21.627Z","web_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests/2"}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%3Fpage=1&per_page=2&view=simple b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%3Fpage=1&per_page=2&view=simple new file mode 100644 index 0000000000..49b8a01c33 --- /dev/null +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmerge_requests%3Fpage=1&per_page=2&view=simple @@ -0,0 +1,30 @@ +Referrer-Policy: strict-origin-when-cross-origin +Gitlab-Sv: api-gke-us-east1-c +X-Content-Type-Options: nosniff +X-Next-Page: +X-Page: 1 +X-Per-Page: 2 +Link: ; rel="first", ; rel="last" +Ratelimit-Remaining: 1980 +X-Runtime: 0.087096 +X-Total-Pages: 1 +Cache-Control: max-age=0, private, must-revalidate +Strict-Transport-Security: max-age=31536000 +Ratelimit-Observed: 20 +Set-Cookie: __cf_bm=oXDIvscgtcgX.J4BQH6gVUnRcpqDCIxXtIW88H5GkeE-1764067244-1.0.1.1-MRMb6HL_mAeWU7TOSknLwTRt2Vci4So1emQBn4uV6PvsIL4KAA7mEHa7wQYT0M6iXAH7ZrZz9R2cQT9cOsKuj_dxehLZHXdKGWA2H9sXINM; path=/; expires=Tue, 25-Nov-25 11:10:44 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=sto9ErHOck8xfsNxjLefx9wVTcqi24bVZV4T.w0DQSw-1764067244372-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Content-Type: application/json +Vary: Origin, Accept-Encoding +Ratelimit-Limit: 2000 +Ratelimit-Name: throttle_authenticated_api +Ratelimit-Reset: 1764067260 +Cf-Cache-Status: MISS +Content-Security-Policy: default-src 'none' +Gitlab-Lb: haproxy-main-32-lb-gprd +X-Gitlab-Meta: {"correlation_id":"9a408793e7bfe0d9-ATL","version":"1"} +X-Total: 2 +Etag: W/"890cf8ae2716f07ebfd15e1c459084c7" +X-Frame-Options: SAMEORIGIN +X-Prev-Page: + +[{"id":435564587,"iid":2,"project_id":61363672,"title":"Test/parsing","description":"Simillar to !1 this solves an issue.","state":"opened","created_at":"2025-11-25T09:48:20.259Z","updated_at":"2025-11-25T09:48:21.627Z","web_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests/2"},{"id":324657888,"iid":1,"project_id":61363672,"title":"Test branch","description":"do not merge this PR","state":"opened","created_at":"2024-09-03T07:57:19.866Z","updated_at":"2024-09-03T18:50:21.065Z","web_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests/1"}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmilestones%3Fpage=1&per_page=100&state=all b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmilestones%3Fpage=1&per_page=100&state=all index 47955698eb..5583057266 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmilestones%3Fpage=1&per_page=100&state=all +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Fmilestones%3Fpage=1&per_page=100&state=all @@ -1,24 +1,30 @@ -X-Total: 2 -Set-Cookie: _cfuvid=uwwcVHMnVqsf5dOVdmePMl8w9SEvmr1muvo7QttWeKI-1725394794295-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Content-Security-Policy: default-src 'none' +Gitlab-Sv: api-gke-us-east1-c +X-Page: 1 +X-Per-Page: 100 +Cf-Cache-Status: MISS +Cache-Control: max-age=0, private, must-revalidate +X-Frame-Options: SAMEORIGIN +X-Next-Page: +X-Prev-Page: +Set-Cookie: __cf_bm=_41Rh9aSyGsrVkscA.pV8yzJ4_ETNn9QF0Ag5uOwFqM-1764067238-1.0.1.1-bznJbf8viMS6FKcHE5lHz3uctOWh26FtF1avZuq328MUfmiD9DR0UYeWy900ArfK2i6mhadZCuvjqSl5V4hfYb3ndX30EH36gtJnzrDm11I; path=/; expires=Tue, 25-Nov-25 11:10:38 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=rCL0Wxxs.PKqgYyWaT19PeP_2uBvc11akIdy0Wt8f7A-1764067238959-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Content-Type: application/json +Gitlab-Lb: haproxy-main-08-lb-gprd +Ratelimit-Observed: 5 +Referrer-Policy: strict-origin-when-cross-origin Etag: W/"a42f286b703ec341ad7f117b273a51ad" +Strict-Transport-Security: max-age=31536000 +Ratelimit-Limit: 2000 +X-Total: 2 +Ratelimit-Remaining: 1995 +Ratelimit-Reset: 1764067260 +X-Gitlab-Meta: {"correlation_id":"9a40876f5056e0d9-ATL","version":"1"} +X-Content-Type-Options: nosniff +X-Runtime: 0.490074 +X-Total-Pages: 1 Link: ; rel="first", ; rel="last" Vary: Origin, Accept-Encoding -X-Content-Type-Options: nosniff -X-Gitlab-Meta: {"correlation_id":"ed978cae0ea2bf9ac4b1f46fddfdf982","version":"1"} -X-Per-Page: 100 -Cache-Control: max-age=0, private, must-revalidate -Cf-Cache-Status: MISS -Content-Type: application/json -X-Next-Page: -X-Page: 1 -Strict-Transport-Security: max-age=31536000 -Gitlab-Sv: api-gke-us-east1-c -X-Frame-Options: SAMEORIGIN -X-Prev-Page: -Referrer-Policy: strict-origin-when-cross-origin -Gitlab-Lb: haproxy-main-34-lb-gprd -X-Runtime: 0.069266 -X-Total-Pages: 1 +Ratelimit-Name: throttle_authenticated_api +Content-Security-Policy: default-src 'none' [{"id":4711993,"iid":2,"project_id":61363672,"title":"1.0.0","description":"","state":"closed","created_at":"2024-09-03T13:53:08.516Z","updated_at":"2024-09-03T20:03:57.786Z","due_date":null,"start_date":null,"expired":false,"web_url":"https://gitlab.com/forgejo/test_repo/-/milestones/2"},{"id":4711991,"iid":1,"project_id":61363672,"title":"1.1.0","description":"","state":"active","created_at":"2024-09-03T13:52:48.414Z","updated_at":"2024-09-03T14:52:14.093Z","due_date":null,"start_date":null,"expired":false,"web_url":"https://gitlab.com/forgejo/test_repo/-/milestones/1"}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Freleases%3Fpage=1&per_page=100 b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Freleases%3Fpage=1&per_page=100 index e0dcec21db..69147618ed 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Freleases%3Fpage=1&per_page=100 +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2F61363672%2Freleases%3Fpage=1&per_page=100 @@ -1,24 +1,30 @@ -X-Total-Pages: 1 -Referrer-Policy: strict-origin-when-cross-origin -X-Total: 1 +Etag: W/"8e9bc910bda56a48f88c6b10688d08e9" X-Frame-Options: SAMEORIGIN -X-Prev-Page: -X-Content-Type-Options: nosniff -Strict-Transport-Security: max-age=31536000 -Link: ; rel="first", ; rel="last" -Vary: Origin, Accept-Encoding -X-Per-Page: 100 -Set-Cookie: _cfuvid=oZA4jh0EzL5.ONTRYvxi4IryznOCXhUFgv3_ILSeCaA-1725394795215-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: __cf_bm=IqmyzMHjnUzan7uwUHFl.h_L2KH2gn3oinFwKn.ohxw-1764067239-1.0.1.1-U49Lfd8o3XxxNn6s4NaaBb6IVSBNE6qZIXrgjggwzM6hh_Y3AMRrXPgR.cYt2JjjBfysZfQXaB5iC5HN8VZ_KefSkjWzKZTI11._lwVsze8; path=/; expires=Tue, 25-Nov-25 11:10:39 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=bimDaLUdNYksl6173_Be3EXR5YSZBCDuUSR5YDEQP8s-1764067239812-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None Cache-Control: max-age=0, private, must-revalidate -X-Next-Page: -Gitlab-Sv: api-gke-us-east1-c +Gitlab-Lb: haproxy-main-01-lb-gprd +Ratelimit-Name: throttle_authenticated_api +X-Total-Pages: 1 Cf-Cache-Status: MISS -X-Gitlab-Meta: {"correlation_id":"3ddca8834bb2582c7864327265a18732","version":"1"} -Gitlab-Lb: haproxy-main-37-lb-gprd -Etag: W/"0dca592238578abf637a888d6aa33e06" -X-Page: 1 -X-Runtime: 0.099990 -Content-Type: application/json +Strict-Transport-Security: max-age=31536000 Content-Security-Policy: default-src 'none' +Referrer-Policy: strict-origin-when-cross-origin +Ratelimit-Reset: 1764067260 +X-Prev-Page: +Vary: Origin, Accept-Encoding +X-Gitlab-Meta: {"correlation_id":"9a4087774774e0d9-ATL","version":"1"} +X-Per-Page: 100 +Content-Type: application/json +Gitlab-Sv: api-gke-us-east1-b +Link: ; rel="first", ; rel="last" +Ratelimit-Observed: 7 +X-Content-Type-Options: nosniff +X-Next-Page: +X-Page: 1 +X-Runtime: 0.099947 +Ratelimit-Limit: 2000 +Ratelimit-Remaining: 1993 +X-Total: 1 -[{"name":"First Release","tag_name":"v0.9.99","description":"A test release","created_at":"2024-09-03T15:01:01.513Z","released_at":"2024-09-03T15:01:01.000Z","upcoming_release":false,"author":{"id":548513,"username":"mkobel","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"commit":{"id":"0720a3ec57c1f843568298117b874319e7deee75","short_id":"0720a3ec","created_at":"2019-11-28T08:49:16.000+00:00","parent_ids":["93ea21ce45d35690c35e80961d239645139e872c"],"title":"Add new file","message":"Add new file","author_name":"Lauris BH","author_email":"lauris@nix.lv","authored_date":"2019-11-28T08:49:16.000+00:00","committer_name":"Lauris BH","committer_email":"lauris@nix.lv","committed_date":"2019-11-28T08:49:16.000+00:00","trailers":{},"extended_trailers":{},"web_url":"https://gitlab.com/forgejo/test_repo/-/commit/0720a3ec57c1f843568298117b874319e7deee75"},"commit_path":"/forgejo/test_repo/-/commit/0720a3ec57c1f843568298117b874319e7deee75","tag_path":"/forgejo/test_repo/-/tags/v0.9.99","assets":{"count":4,"sources":[{"format":"zip","url":"https://gitlab.com/forgejo/test_repo/-/archive/v0.9.99/test_repo-v0.9.99.zip"},{"format":"tar.gz","url":"https://gitlab.com/forgejo/test_repo/-/archive/v0.9.99/test_repo-v0.9.99.tar.gz"},{"format":"tar.bz2","url":"https://gitlab.com/forgejo/test_repo/-/archive/v0.9.99/test_repo-v0.9.99.tar.bz2"},{"format":"tar","url":"https://gitlab.com/forgejo/test_repo/-/archive/v0.9.99/test_repo-v0.9.99.tar"}],"links":[]},"evidences":[{"sha":"e30c1d21d05ff0c73436ee1e97b3ef12a1d6d33d0dcd","filepath":"https://gitlab.com/forgejo/test_repo/-/releases/v0.9.99/evidences/9608487.json","collected_at":"2024-09-03T15:01:02.963Z"}],"_links":{"closed_issues_url":"https://gitlab.com/forgejo/test_repo/-/issues?release_tag=v0.9.99\u0026scope=all\u0026state=closed","closed_merge_requests_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests?release_tag=v0.9.99\u0026scope=all\u0026state=closed","edit_url":"https://gitlab.com/forgejo/test_repo/-/releases/v0.9.99/edit","merged_merge_requests_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests?release_tag=v0.9.99\u0026scope=all\u0026state=merged","opened_issues_url":"https://gitlab.com/forgejo/test_repo/-/issues?release_tag=v0.9.99\u0026scope=all\u0026state=opened","opened_merge_requests_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests?release_tag=v0.9.99\u0026scope=all\u0026state=opened","self":"https://gitlab.com/forgejo/test_repo/-/releases/v0.9.99"}}] \ No newline at end of file +[{"name":"First Release","tag_name":"v0.9.99","description":"A test release","created_at":"2024-09-03T15:01:01.513Z","released_at":"2024-09-03T15:01:01.000Z","upcoming_release":false,"author":{"id":548513,"username":"mkobel","public_email":"","name":"Moritz Kobel","state":"active","locked":false,"avatar_url":"https://secure.gravatar.com/avatar/eae1be6324682816aedc885acbf5858719b40956e0278edabe5c0db7cbc95f3b?s=80\u0026d=identicon","web_url":"https://gitlab.com/mkobel"},"commit":{"id":"0720a3ec57c1f843568298117b874319e7deee75","short_id":"0720a3ec","created_at":"2019-11-28T08:49:16.000+00:00","parent_ids":["93ea21ce45d35690c35e80961d239645139e872c"],"title":"Add new file","message":"Add new file","author_name":"Lauris BH","author_email":"lauris@nix.lv","authored_date":"2019-11-28T08:49:16.000+00:00","committer_name":"Lauris BH","committer_email":"lauris@nix.lv","committed_date":"2019-11-28T08:49:16.000+00:00","trailers":{},"extended_trailers":{},"web_url":"https://gitlab.com/forgejo/test_repo/-/commit/0720a3ec57c1f843568298117b874319e7deee75"},"commit_path":"/forgejo/test_repo/-/commit/0720a3ec57c1f843568298117b874319e7deee75","tag_path":"/forgejo/test_repo/-/tags/v0.9.99","assets":{"count":4,"sources":[{"format":"zip","url":"https://gitlab.com/forgejo/test_repo/-/archive/v0.9.99/test_repo-v0.9.99.zip"},{"format":"tar.gz","url":"https://gitlab.com/forgejo/test_repo/-/archive/v0.9.99/test_repo-v0.9.99.tar.gz"},{"format":"tar.bz2","url":"https://gitlab.com/forgejo/test_repo/-/archive/v0.9.99/test_repo-v0.9.99.tar.bz2"},{"format":"tar","url":"https://gitlab.com/forgejo/test_repo/-/archive/v0.9.99/test_repo-v0.9.99.tar"}],"links":[]},"evidences":[{"sha":"e30c1d21d05ff0c73436ee1e97b3ef12a1d6d33d0dcd","filepath":"https://gitlab.com/forgejo/test_repo/-/releases/v0.9.99/evidences/9608487.json","collected_at":"2024-09-03T15:01:02.963Z"}],"_links":{"closed_issues_url":"https://gitlab.com/forgejo/test_repo/-/issues?release_tag=v0.9.99\u0026scope=all\u0026state=closed","closed_merge_requests_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests?release_tag=v0.9.99\u0026scope=all\u0026state=closed","edit_url":"https://gitlab.com/forgejo/test_repo/-/releases/v0.9.99/edit","merged_merge_requests_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests?release_tag=v0.9.99\u0026scope=all\u0026state=merged","opened_issues_url":"https://gitlab.com/forgejo/test_repo/-/issues?release_tag=v0.9.99\u0026scope=all\u0026state=opened","opened_merge_requests_url":"https://gitlab.com/forgejo/test_repo/-/merge_requests?release_tag=v0.9.99\u0026scope=all\u0026state=opened","self":"https://gitlab.com/forgejo/test_repo/-/releases/v0.9.99"}}] \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2Fforgejo%252Ftest_repo b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2Fforgejo%252Ftest_repo index 53c925a693..b9f3b5883c 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2Fforgejo%252Ftest_repo +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fprojects%2Fforgejo%252Ftest_repo @@ -1,17 +1,23 @@ -Content-Security-Policy: default-src 'none' -Etag: W/"b36bd4522b7e8b2509078271491fb972" -X-Runtime: 0.182246 -Set-Cookie: _cfuvid=wk6gVgcAYZqUygBPZ8pK6j22vOlbZuagLq74bgkySCs-1725394793303-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None -Content-Type: application/json -X-Content-Type-Options: nosniff -Gitlab-Sv: api-gke-us-east1-c -Gitlab-Lb: haproxy-main-58-lb-gprd -Cache-Control: max-age=0, private, must-revalidate +X-Runtime: 0.171155 +Etag: W/"c77cec95a47ea2b28a897b9b9eaaf641" Strict-Transport-Security: max-age=31536000 -Referrer-Policy: strict-origin-when-cross-origin Vary: Origin, Accept-Encoding -X-Frame-Options: SAMEORIGIN -X-Gitlab-Meta: {"correlation_id":"43c0c955821005b625f1707ecac8d4d8","version":"1"} +Gitlab-Lb: haproxy-main-15-lb-gprd +Ratelimit-Remaining: 1998 +Ratelimit-Reset: 1764067260 +X-Gitlab-Meta: {"correlation_id":"9a4087681127e0d9-ATL","version":"1"} +Content-Type: application/json +Cache-Control: max-age=0, private, must-revalidate +Ratelimit-Limit: 2000 +Ratelimit-Observed: 2 +X-Content-Type-Options: nosniff Cf-Cache-Status: MISS +Content-Security-Policy: default-src 'none' +Gitlab-Sv: api-gke-us-east1-d +Ratelimit-Name: throttle_authenticated_api +X-Frame-Options: SAMEORIGIN +Set-Cookie: __cf_bm=ewgZYYeSboiRyGpVTDdPSVDfQthTkGsdCdZ98QAfFxg-1764067237-1.0.1.1-BpQ7IOgWJuKrJMmIUiu_2cbPWhTpSIXcC7t33gKB2xDwnlymfMCkCOBlDVT.dPN4HFT1_6NaM9LC2vHEe.kYzUnW9T5U6aySrghgvKuops0; path=/; expires=Tue, 25-Nov-25 11:10:37 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=vtpk1JkIE1jJ1yKC2ZDs1gmNCGXsPbWYHO.qSKcyAYc-1764067237452-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Referrer-Policy: strict-origin-when-cross-origin -{"id":61363672,"description":"Test repository for testing migration from gitlab to forgejo","name":"test_repo","name_with_namespace":"Forgejo / test_repo","path":"test_repo","path_with_namespace":"forgejo/test_repo","created_at":"2024-09-03T07:44:30.668Z","default_branch":"master","tag_list":["migration","test"],"topics":["migration","test"],"ssh_url_to_repo":"git@gitlab.com:forgejo/test_repo.git","http_url_to_repo":"https://gitlab.com/forgejo/test_repo.git","web_url":"https://gitlab.com/forgejo/test_repo","readme_url":"https://gitlab.com/forgejo/test_repo/-/blob/master/README.md","forks_count":0,"avatar_url":null,"star_count":0,"last_activity_at":"2024-09-03T20:03:18.187Z","namespace":{"id":64459497,"name":"Forgejo","path":"forgejo","kind":"group","full_path":"forgejo","parent_id":null,"avatar_url":"/uploads/-/system/group/avatar/64459497/73144-c883a242dec5299fbc06bbe3ee71d8c6.png","web_url":"https://gitlab.com/groups/forgejo"},"forked_from_project":{"id":15578026,"description":"Test repository for testing migration from gitlab to gitea","name":"test_repo","name_with_namespace":"gitea / test_repo","path":"test_repo","path_with_namespace":"gitea/test_repo","created_at":"2019-11-28T08:20:33.019Z","default_branch":"master","tag_list":["migration","test"],"topics":["migration","test"],"ssh_url_to_repo":"git@gitlab.com:gitea/test_repo.git","http_url_to_repo":"https://gitlab.com/gitea/test_repo.git","web_url":"https://gitlab.com/gitea/test_repo","readme_url":"https://gitlab.com/gitea/test_repo/-/blob/master/README.md","forks_count":2,"avatar_url":null,"star_count":0,"last_activity_at":"2024-09-03T07:52:28.488Z","namespace":{"id":3181312,"name":"gitea","path":"gitea","kind":"group","full_path":"gitea","parent_id":null,"avatar_url":"/uploads/-/system/group/avatar/3181312/gitea.png","web_url":"https://gitlab.com/groups/gitea"}},"container_registry_image_prefix":"registry.gitlab.com/forgejo/test_repo","_links":{"self":"https://gitlab.com/api/v4/projects/61363672","issues":"https://gitlab.com/api/v4/projects/61363672/issues","merge_requests":"https://gitlab.com/api/v4/projects/61363672/merge_requests","repo_branches":"https://gitlab.com/api/v4/projects/61363672/repository/branches","labels":"https://gitlab.com/api/v4/projects/61363672/labels","events":"https://gitlab.com/api/v4/projects/61363672/events","members":"https://gitlab.com/api/v4/projects/61363672/members","cluster_agents":"https://gitlab.com/api/v4/projects/61363672/cluster_agents"},"packages_enabled":true,"empty_repo":false,"archived":false,"visibility":"public","resolve_outdated_diff_discussions":false,"container_expiration_policy":{"cadence":"1d","enabled":false,"keep_n":10,"older_than":"90d","name_regex":".*","name_regex_keep":null,"next_run_at":"2024-09-04T07:44:30.699Z"},"repository_object_format":"sha1","issues_enabled":true,"merge_requests_enabled":true,"wiki_enabled":true,"jobs_enabled":true,"snippets_enabled":true,"container_registry_enabled":true,"service_desk_enabled":true,"service_desk_address":"contact-project+forgejo-test-repo-61363672-issue-@incoming.gitlab.com","can_create_merge_request_in":true,"issues_access_level":"enabled","repository_access_level":"enabled","merge_requests_access_level":"enabled","forking_access_level":"enabled","wiki_access_level":"enabled","builds_access_level":"enabled","snippets_access_level":"enabled","pages_access_level":"enabled","analytics_access_level":"enabled","container_registry_access_level":"enabled","security_and_compliance_access_level":"private","releases_access_level":"enabled","environments_access_level":"enabled","feature_flags_access_level":"enabled","infrastructure_access_level":"enabled","monitor_access_level":"enabled","model_experiments_access_level":"enabled","model_registry_access_level":"enabled","emails_disabled":false,"emails_enabled":true,"shared_runners_enabled":true,"lfs_enabled":true,"creator_id":2005797,"mr_default_target_self":false,"import_url":null,"import_type":null,"import_status":"finished","import_error":null,"open_issues_count":0,"description_html":"\u003cp data-sourcepos=\"1:1-1:60\" dir=\"auto\"\u003eTest repository for testing migration from gitlab to forgejo\u003c/p\u003e","updated_at":"2024-09-03T20:03:18.187Z","ci_default_git_depth":50,"ci_forward_deployment_enabled":true,"ci_forward_deployment_rollback_allowed":true,"ci_job_token_scope_enabled":false,"ci_separated_caches":true,"ci_allow_fork_pipelines_to_run_in_parent_project":true,"ci_id_token_sub_claim_components":["project_path","ref_type","ref"],"build_git_strategy":"fetch","keep_latest_artifact":true,"restrict_user_defined_variables":false,"ci_pipeline_variables_minimum_override_role":"maintainer","runners_token":null,"runner_token_expiration_interval":null,"group_runners_enabled":true,"auto_cancel_pending_pipelines":"enabled","build_timeout":3600,"auto_devops_enabled":false,"auto_devops_deploy_strategy":"continuous","ci_push_repository_for_job_token_allowed":false,"ci_config_path":null,"public_jobs":true,"shared_with_groups":[],"only_allow_merge_if_pipeline_succeeds":false,"allow_merge_on_skipped_pipeline":null,"request_access_enabled":true,"only_allow_merge_if_all_discussions_are_resolved":false,"remove_source_branch_after_merge":true,"printing_merge_request_link_enabled":true,"merge_method":"merge","squash_option":"default_off","enforce_auth_checks_on_uploads":true,"suggestion_commit_message":null,"merge_commit_template":null,"squash_commit_template":null,"issue_branch_template":null,"warn_about_potentially_unwanted_characters":true,"autoclose_referenced_issues":true,"external_authorization_classification_label":"","requirements_enabled":false,"requirements_access_level":"enabled","security_and_compliance_enabled":true,"pre_receive_secret_detection_enabled":false,"compliance_frameworks":[],"permissions":{"project_access":{"access_level":40,"notification_level":3},"group_access":null}} \ No newline at end of file +{"id":61363672,"description":"Test repository for testing migration from gitlab to forgejo","name":"test_repo","name_with_namespace":"Forgejo / test_repo","path":"test_repo","path_with_namespace":"forgejo/test_repo","created_at":"2024-09-03T07:44:30.668Z","default_branch":"master","tag_list":["migration","test"],"topics":["migration","test"],"ssh_url_to_repo":"git@gitlab.com:forgejo/test_repo.git","http_url_to_repo":"https://gitlab.com/forgejo/test_repo.git","web_url":"https://gitlab.com/forgejo/test_repo","readme_url":"https://gitlab.com/forgejo/test_repo/-/blob/master/README.md","forks_count":0,"avatar_url":null,"star_count":0,"last_activity_at":"2025-11-25T09:03:01.001Z","visibility":"public","namespace":{"id":64459497,"name":"Forgejo","path":"forgejo","kind":"group","full_path":"forgejo","parent_id":null,"avatar_url":"/uploads/-/system/group/avatar/64459497/73144-c883a242dec5299fbc06bbe3ee71d8c6.png","web_url":"https://gitlab.com/groups/forgejo"},"forked_from_project":{"id":15578026,"description":"Test repository for testing migration from gitlab to gitea","name":"test_repo","name_with_namespace":"gitea / test_repo","path":"test_repo","path_with_namespace":"gitea/test_repo","created_at":"2019-11-28T08:20:33.019Z","default_branch":"master","tag_list":["migration","test"],"topics":["migration","test"],"ssh_url_to_repo":"git@gitlab.com:gitea/test_repo.git","http_url_to_repo":"https://gitlab.com/gitea/test_repo.git","web_url":"https://gitlab.com/gitea/test_repo","readme_url":"https://gitlab.com/gitea/test_repo/-/blob/master/README.md","forks_count":2,"avatar_url":null,"star_count":0,"last_activity_at":"2025-11-25T09:21:43.130Z","visibility":"public","namespace":{"id":3181312,"name":"gitea","path":"gitea","kind":"group","full_path":"gitea","parent_id":null,"avatar_url":"/uploads/-/system/group/avatar/3181312/gitea.png","web_url":"https://gitlab.com/groups/gitea"}},"container_registry_image_prefix":"registry.gitlab.com/forgejo/test_repo","_links":{"self":"https://gitlab.com/api/v4/projects/61363672","issues":"https://gitlab.com/api/v4/projects/61363672/issues","merge_requests":"https://gitlab.com/api/v4/projects/61363672/merge_requests","repo_branches":"https://gitlab.com/api/v4/projects/61363672/repository/branches","labels":"https://gitlab.com/api/v4/projects/61363672/labels","events":"https://gitlab.com/api/v4/projects/61363672/events","members":"https://gitlab.com/api/v4/projects/61363672/members","cluster_agents":"https://gitlab.com/api/v4/projects/61363672/cluster_agents"},"marked_for_deletion_at":null,"marked_for_deletion_on":null,"packages_enabled":true,"empty_repo":false,"archived":false,"resolve_outdated_diff_discussions":false,"container_expiration_policy":{"cadence":"1d","enabled":false,"keep_n":10,"older_than":"90d","name_regex":".*","name_regex_keep":null,"next_run_at":"2024-09-04T07:44:30.699Z"},"repository_object_format":"sha1","issues_enabled":true,"merge_requests_enabled":true,"wiki_enabled":true,"jobs_enabled":true,"snippets_enabled":true,"container_registry_enabled":true,"service_desk_enabled":true,"service_desk_address":"contact-project+forgejo-test-repo-61363672-issue-@incoming.gitlab.com","can_create_merge_request_in":true,"issues_access_level":"enabled","repository_access_level":"enabled","merge_requests_access_level":"enabled","forking_access_level":"enabled","wiki_access_level":"enabled","builds_access_level":"enabled","snippets_access_level":"enabled","pages_access_level":"enabled","analytics_access_level":"enabled","container_registry_access_level":"enabled","security_and_compliance_access_level":"private","releases_access_level":"enabled","environments_access_level":"enabled","feature_flags_access_level":"enabled","infrastructure_access_level":"enabled","monitor_access_level":"enabled","model_experiments_access_level":"enabled","model_registry_access_level":"enabled","package_registry_access_level":"public","emails_disabled":false,"emails_enabled":true,"show_diff_preview_in_email":true,"shared_runners_enabled":true,"lfs_enabled":true,"creator_id":2005797,"mr_default_target_self":false,"import_url":null,"import_type":null,"import_status":"finished","import_error":null,"open_issues_count":1,"description_html":"\u003cp data-sourcepos=\"1:1-1:60\" dir=\"auto\"\u003eTest repository for testing migration from gitlab to forgejo\u003c/p\u003e","updated_at":"2025-11-25T09:21:03.121Z","ci_default_git_depth":50,"ci_delete_pipelines_in_seconds":null,"ci_forward_deployment_enabled":true,"ci_forward_deployment_rollback_allowed":true,"ci_job_token_scope_enabled":false,"ci_separated_caches":true,"ci_allow_fork_pipelines_to_run_in_parent_project":true,"ci_id_token_sub_claim_components":["project_path","ref_type","ref"],"build_git_strategy":"fetch","keep_latest_artifact":true,"restrict_user_defined_variables":false,"ci_pipeline_variables_minimum_override_role":"developer","runner_token_expiration_interval":null,"group_runners_enabled":true,"resource_group_default_process_mode":"unordered","auto_cancel_pending_pipelines":"enabled","build_timeout":3600,"auto_devops_enabled":false,"auto_devops_deploy_strategy":"continuous","ci_push_repository_for_job_token_allowed":false,"ci_config_path":null,"public_jobs":true,"shared_with_groups":[],"only_allow_merge_if_pipeline_succeeds":false,"allow_merge_on_skipped_pipeline":null,"request_access_enabled":true,"only_allow_merge_if_all_discussions_are_resolved":false,"remove_source_branch_after_merge":true,"printing_merge_request_link_enabled":true,"merge_method":"merge","merge_request_title_regex":null,"merge_request_title_regex_description":null,"squash_option":"default_off","enforce_auth_checks_on_uploads":true,"suggestion_commit_message":null,"merge_commit_template":null,"squash_commit_template":null,"issue_branch_template":null,"warn_about_potentially_unwanted_characters":true,"autoclose_referenced_issues":true,"max_artifacts_size":null,"external_authorization_classification_label":"","requirements_enabled":false,"requirements_access_level":"enabled","security_and_compliance_enabled":true,"compliance_frameworks":[],"duo_remote_flows_enabled":true,"duo_foundational_flows_enabled":false,"web_based_commit_signing_enabled":false,"permissions":{"project_access":{"access_level":40,"notification_level":3},"group_access":null}} \ No newline at end of file diff --git a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fversion b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fversion index 8b3dd5b8e3..312161fafc 100644 --- a/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fversion +++ b/services/migrations/testdata/gitlab/full_download/GET_%2Fapi%2Fv4%2Fversion @@ -1,17 +1,23 @@ -Content-Type: application/json +Gitlab-Sv: api-gke-us-east1-c +Ratelimit-Name: throttle_authenticated_api +X-Content-Type-Options: nosniff Cache-Control: max-age=0, private, must-revalidate -Etag: W/"a27b6b3c661f4ee7a68e5b905f5291fb" +Etag: W/"07cf63ed6ca527a8440305b235c1dbe6" Vary: Origin, Accept-Encoding -X-Gitlab-Meta: {"correlation_id":"10488cc696aabdc48229039f2c9e4ebd","version":"1"} -Gitlab-Sv: api-gke-us-east1-d +Gitlab-Lb: haproxy-main-02-lb-gprd +X-Gitlab-Meta: {"correlation_id":"9a40876657b0e0d9-ATL","version":"1"} +Set-Cookie: __cf_bm=6UrvvT.eVACA2RNxuo3JgYQGOf87viAkfYl9Zk_E3A4-1764067237-1.0.1.1-Eq.xOoKXTaA91xlfvuNCFFzkpGifBiA41K8r8QGdw0f_sTr66SIHXtulqNIs7.A6aF8RcfB6owiKiV_rect7ubdVVRrKTWwxfHtaWvykTrI; path=/; expires=Tue, 25-Nov-25 11:10:37 GMT; domain=.gitlab.com; HttpOnly; Secure; SameSite=None +Set-Cookie: _cfuvid=NMsff2_I6aWniAT9LeJhCwEeMAfr8Wkjg5mYqJ06haU-1764067237046-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None Cf-Cache-Status: MISS Strict-Transport-Security: max-age=31536000 -X-Frame-Options: SAMEORIGIN -X-Runtime: 0.034189 +Ratelimit-Limit: 2000 +Ratelimit-Remaining: 1999 Referrer-Policy: strict-origin-when-cross-origin -Set-Cookie: _cfuvid=hbFjaLVJudhzz6Sqg5QnViD.eikToNruD.b1oEG5xrc-1725394792940-0.0.1.1-604800000; path=/; domain=.gitlab.com; HttpOnly; Secure; SameSite=None Content-Security-Policy: default-src 'none' -Gitlab-Lb: haproxy-main-56-lb-gprd -X-Content-Type-Options: nosniff +Ratelimit-Observed: 1 +Ratelimit-Reset: 1764067260 +X-Frame-Options: SAMEORIGIN +X-Runtime: 0.051513 +Content-Type: application/json -{"version":"17.4.0-pre","revision":"8c6dcc9e627","kas":{"enabled":true,"externalUrl":"wss://kas.gitlab.com","version":"17.4.0+a2ca345cd681ef39094623d8f4b6ed65996de57d"},"enterprise":true} \ No newline at end of file +{"version":"18.7.0-pre","revision":"6f8cf4c6c2b","kas":{"enabled":true,"externalUrl":"wss://kas.gitlab.com","externalK8sProxyUrl":"https://kas.gitlab.com/k8s-proxy","version":"18.7.0-rc1+5ca8be73a8685a5a9ab2baeb0d3ab7c455f9f819"},"enterprise":true} \ No newline at end of file