You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

codebase_test.go 4.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. // Copyright 2021 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package migrations
  4. import (
  5. "context"
  6. "net/url"
  7. "os"
  8. "testing"
  9. "time"
  10. base "code.gitea.io/gitea/modules/migration"
  11. "github.com/stretchr/testify/assert"
  12. )
  13. func TestCodebaseDownloadRepo(t *testing.T) {
  14. // Skip tests if Codebase token is not found
  15. cloneUser := os.Getenv("CODEBASE_CLONE_USER")
  16. clonePassword := os.Getenv("CODEBASE_CLONE_PASSWORD")
  17. apiUser := os.Getenv("CODEBASE_API_USER")
  18. apiPassword := os.Getenv("CODEBASE_API_TOKEN")
  19. if apiUser == "" || apiPassword == "" {
  20. t.Skip("skipped test because a CODEBASE_ variable was not in the environment")
  21. }
  22. cloneAddr := "https://gitea-test.codebasehq.com/gitea-test/test.git"
  23. u, _ := url.Parse(cloneAddr)
  24. if cloneUser != "" {
  25. u.User = url.UserPassword(cloneUser, clonePassword)
  26. }
  27. factory := &CodebaseDownloaderFactory{}
  28. downloader, err := factory.New(context.Background(), base.MigrateOptions{
  29. CloneAddr: u.String(),
  30. AuthUsername: apiUser,
  31. AuthPassword: apiPassword,
  32. })
  33. if err != nil {
  34. t.Fatalf("Error creating Codebase downloader: %v", err)
  35. }
  36. repo, err := downloader.GetRepoInfo()
  37. assert.NoError(t, err)
  38. assertRepositoryEqual(t, &base.Repository{
  39. Name: "test",
  40. Owner: "",
  41. Description: "Repository Description",
  42. CloneURL: "git@codebasehq.com:gitea-test/gitea-test/test.git",
  43. OriginalURL: cloneAddr,
  44. }, repo)
  45. milestones, err := downloader.GetMilestones()
  46. assert.NoError(t, err)
  47. assertMilestonesEqual(t, []*base.Milestone{
  48. {
  49. Title: "Milestone1",
  50. Deadline: timePtr(time.Date(2021, time.September, 16, 0, 0, 0, 0, time.UTC)),
  51. },
  52. {
  53. Title: "Milestone2",
  54. Deadline: timePtr(time.Date(2021, time.September, 17, 0, 0, 0, 0, time.UTC)),
  55. Closed: timePtr(time.Date(2021, time.September, 17, 0, 0, 0, 0, time.UTC)),
  56. State: "closed",
  57. },
  58. }, milestones)
  59. labels, err := downloader.GetLabels()
  60. assert.NoError(t, err)
  61. assert.Len(t, labels, 4)
  62. issues, isEnd, err := downloader.GetIssues(1, 2)
  63. assert.NoError(t, err)
  64. assert.True(t, isEnd)
  65. assertIssuesEqual(t, []*base.Issue{
  66. {
  67. Number: 2,
  68. Title: "Open Ticket",
  69. Content: "Open Ticket Message",
  70. PosterName: "gitea-test-43",
  71. PosterEmail: "gitea-codebase@smack.email",
  72. State: "open",
  73. Created: time.Date(2021, time.September, 26, 19, 19, 14, 0, time.UTC),
  74. Updated: time.Date(2021, time.September, 26, 19, 19, 34, 0, time.UTC),
  75. Labels: []*base.Label{
  76. {
  77. Name: "Feature",
  78. },
  79. },
  80. },
  81. {
  82. Number: 1,
  83. Title: "Closed Ticket",
  84. Content: "Closed Ticket Message",
  85. PosterName: "gitea-test-43",
  86. PosterEmail: "gitea-codebase@smack.email",
  87. State: "closed",
  88. Milestone: "Milestone1",
  89. Created: time.Date(2021, time.September, 26, 19, 18, 33, 0, time.UTC),
  90. Updated: time.Date(2021, time.September, 26, 19, 18, 55, 0, time.UTC),
  91. Labels: []*base.Label{
  92. {
  93. Name: "Bug",
  94. },
  95. },
  96. },
  97. }, issues)
  98. comments, _, err := downloader.GetComments(issues[0])
  99. assert.NoError(t, err)
  100. assertCommentsEqual(t, []*base.Comment{
  101. {
  102. IssueIndex: 2,
  103. PosterName: "gitea-test-43",
  104. PosterEmail: "gitea-codebase@smack.email",
  105. Created: time.Date(2021, time.September, 26, 19, 19, 34, 0, time.UTC),
  106. Updated: time.Date(2021, time.September, 26, 19, 19, 34, 0, time.UTC),
  107. Content: "open comment",
  108. },
  109. }, comments)
  110. prs, _, err := downloader.GetPullRequests(1, 1)
  111. assert.NoError(t, err)
  112. assertPullRequestsEqual(t, []*base.PullRequest{
  113. {
  114. Number: 3,
  115. Title: "Readme Change",
  116. Content: "Merge Request comment",
  117. PosterName: "gitea-test-43",
  118. PosterEmail: "gitea-codebase@smack.email",
  119. State: "open",
  120. Created: time.Date(2021, time.September, 26, 20, 25, 47, 0, time.UTC),
  121. Updated: time.Date(2021, time.September, 26, 20, 25, 47, 0, time.UTC),
  122. Head: base.PullRequestBranch{
  123. Ref: "readme-mr",
  124. SHA: "1287f206b888d4d13540e0a8e1c07458f5420059",
  125. RepoName: "test",
  126. },
  127. Base: base.PullRequestBranch{
  128. Ref: "master",
  129. SHA: "f32b0a9dfd09a60f616f29158f772cedd89942d2",
  130. RepoName: "test",
  131. },
  132. },
  133. }, prs)
  134. rvs, err := downloader.GetReviews(prs[0])
  135. assert.NoError(t, err)
  136. assert.Empty(t, rvs)
  137. }