Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

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