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.

github_test.go 9.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330
  1. // Copyright 2019 The Gitea Authors. All rights reserved.
  2. // Copyright 2018 Jonas Franz. All rights reserved.
  3. // Use of this source code is governed by a MIT-style
  4. // license that can be found in the LICENSE file.
  5. package migrations
  6. import (
  7. "testing"
  8. "time"
  9. "code.gitea.io/gitea/modules/migrations/base"
  10. "github.com/stretchr/testify/assert"
  11. )
  12. func assertMilestoneEqual(t *testing.T, description, title, dueOn, created, updated, closed, state string, ms *base.Milestone) {
  13. var tmPtr *time.Time
  14. if dueOn != "" {
  15. tm, err := time.Parse("2006-01-02 15:04:05 -0700 MST", dueOn)
  16. assert.NoError(t, err)
  17. tmPtr = &tm
  18. }
  19. var (
  20. createdTM time.Time
  21. updatedTM *time.Time
  22. closedTM *time.Time
  23. )
  24. if created != "" {
  25. var err error
  26. createdTM, err = time.Parse("2006-01-02 15:04:05 -0700 MST", created)
  27. assert.NoError(t, err)
  28. }
  29. if updated != "" {
  30. updatedTemp, err := time.Parse("2006-01-02 15:04:05 -0700 MST", updated)
  31. assert.NoError(t, err)
  32. updatedTM = &updatedTemp
  33. }
  34. if closed != "" {
  35. closedTemp, err := time.Parse("2006-01-02 15:04:05 -0700 MST", closed)
  36. assert.NoError(t, err)
  37. closedTM = &closedTemp
  38. }
  39. assert.EqualValues(t, &base.Milestone{
  40. Description: description,
  41. Title: title,
  42. Deadline: tmPtr,
  43. State: state,
  44. Created: createdTM,
  45. Updated: updatedTM,
  46. Closed: closedTM,
  47. }, ms)
  48. }
  49. func assertLabelEqual(t *testing.T, name, color, description string, label *base.Label) {
  50. assert.EqualValues(t, &base.Label{
  51. Name: name,
  52. Color: color,
  53. Description: description,
  54. }, label)
  55. }
  56. func TestGitHubDownloadRepo(t *testing.T) {
  57. downloader := NewGithubDownloaderV3("", "", "go-gitea", "test_repo")
  58. repo, err := downloader.GetRepoInfo()
  59. assert.NoError(t, err)
  60. assert.EqualValues(t, &base.Repository{
  61. Name: "test_repo",
  62. Owner: "go-gitea",
  63. Description: "Test repository for testing migration from github to gitea",
  64. CloneURL: "https://github.com/go-gitea/test_repo.git",
  65. OriginalURL: "https://github.com/go-gitea/test_repo",
  66. }, repo)
  67. topics, err := downloader.GetTopics()
  68. assert.NoError(t, err)
  69. assert.Contains(t, topics, "gitea")
  70. milestones, err := downloader.GetMilestones()
  71. assert.NoError(t, err)
  72. assert.True(t, len(milestones) >= 2)
  73. for _, milestone := range milestones {
  74. switch milestone.Title {
  75. case "1.0.0":
  76. assertMilestoneEqual(t, "Milestone 1.0.0", "1.0.0", "2019-11-11 08:00:00 +0000 UTC",
  77. "2019-11-12 19:37:08 +0000 UTC",
  78. "2019-11-12 21:56:17 +0000 UTC",
  79. "2019-11-12 19:45:49 +0000 UTC",
  80. "closed", milestone)
  81. case "1.1.0":
  82. assertMilestoneEqual(t, "Milestone 1.1.0", "1.1.0", "2019-11-12 08:00:00 +0000 UTC",
  83. "2019-11-12 19:37:25 +0000 UTC",
  84. "2019-11-12 21:39:27 +0000 UTC",
  85. "2019-11-12 19:45:46 +0000 UTC",
  86. "closed", milestone)
  87. }
  88. }
  89. labels, err := downloader.GetLabels()
  90. assert.NoError(t, err)
  91. assert.True(t, len(labels) >= 8)
  92. for _, l := range labels {
  93. switch l.Name {
  94. case "bug":
  95. assertLabelEqual(t, "bug", "d73a4a", "Something isn't working", l)
  96. case "documentation":
  97. assertLabelEqual(t, "documentation", "0075ca", "Improvements or additions to documentation", l)
  98. case "duplicate":
  99. assertLabelEqual(t, "duplicate", "cfd3d7", "This issue or pull request already exists", l)
  100. case "enhancement":
  101. assertLabelEqual(t, "enhancement", "a2eeef", "New feature or request", l)
  102. case "good first issue":
  103. assertLabelEqual(t, "good first issue", "7057ff", "Good for newcomers", l)
  104. case "help wanted":
  105. assertLabelEqual(t, "help wanted", "008672", "Extra attention is needed", l)
  106. case "invalid":
  107. assertLabelEqual(t, "invalid", "e4e669", "This doesn't seem right", l)
  108. case "question":
  109. assertLabelEqual(t, "question", "d876e3", "Further information is requested", l)
  110. }
  111. }
  112. releases, err := downloader.GetReleases()
  113. assert.NoError(t, err)
  114. assert.EqualValues(t, []*base.Release{
  115. {
  116. TagName: "v0.9.99",
  117. TargetCommitish: "master",
  118. Name: "First Release",
  119. Body: "A test release",
  120. Created: time.Date(2019, 11, 9, 16, 49, 21, 0, time.UTC),
  121. Published: time.Date(2019, 11, 12, 20, 12, 10, 0, time.UTC),
  122. PublisherID: 1669571,
  123. PublisherName: "mrsdizzie",
  124. },
  125. }, releases[len(releases)-1:])
  126. // downloader.GetIssues()
  127. issues, isEnd, err := downloader.GetIssues(1, 2)
  128. assert.NoError(t, err)
  129. assert.EqualValues(t, 2, len(issues))
  130. assert.False(t, isEnd)
  131. var (
  132. closed1 = time.Date(2019, 11, 12, 20, 22, 22, 0, time.UTC)
  133. closed2 = time.Date(2019, 11, 12, 21, 1, 31, 0, time.UTC)
  134. )
  135. assert.EqualValues(t, []*base.Issue{
  136. {
  137. Number: 1,
  138. Title: "Please add an animated gif icon to the merge button",
  139. Content: "I just want the merge button to hurt my eyes a little. \xF0\x9F\x98\x9D ",
  140. Milestone: "1.0.0",
  141. PosterID: 18600385,
  142. PosterName: "guillep2k",
  143. State: "closed",
  144. Created: time.Date(2019, 11, 9, 17, 0, 29, 0, time.UTC),
  145. Labels: []*base.Label{
  146. {
  147. Name: "bug",
  148. Color: "d73a4a",
  149. Description: "Something isn't working",
  150. },
  151. {
  152. Name: "good first issue",
  153. Color: "7057ff",
  154. Description: "Good for newcomers",
  155. },
  156. },
  157. Reactions: &base.Reactions{
  158. TotalCount: 1,
  159. PlusOne: 1,
  160. MinusOne: 0,
  161. Laugh: 0,
  162. Confused: 0,
  163. Heart: 0,
  164. Hooray: 0,
  165. },
  166. Closed: &closed1,
  167. },
  168. {
  169. Number: 2,
  170. Title: "Test issue",
  171. Content: "This is test issue 2, do not touch!",
  172. Milestone: "1.1.0",
  173. PosterID: 1669571,
  174. PosterName: "mrsdizzie",
  175. State: "closed",
  176. Created: time.Date(2019, 11, 12, 21, 0, 6, 0, time.UTC),
  177. Labels: []*base.Label{
  178. {
  179. Name: "duplicate",
  180. Color: "cfd3d7",
  181. Description: "This issue or pull request already exists",
  182. },
  183. },
  184. Reactions: &base.Reactions{
  185. TotalCount: 6,
  186. PlusOne: 1,
  187. MinusOne: 1,
  188. Laugh: 1,
  189. Confused: 1,
  190. Heart: 1,
  191. Hooray: 1,
  192. },
  193. Closed: &closed2,
  194. },
  195. }, issues)
  196. // downloader.GetComments()
  197. comments, err := downloader.GetComments(2)
  198. assert.NoError(t, err)
  199. assert.EqualValues(t, 2, len(comments))
  200. assert.EqualValues(t, []*base.Comment{
  201. {
  202. IssueIndex: 2,
  203. PosterID: 1669571,
  204. PosterName: "mrsdizzie",
  205. Created: time.Date(2019, 11, 12, 21, 0, 13, 0, time.UTC),
  206. Content: "This is a comment",
  207. Reactions: &base.Reactions{
  208. TotalCount: 1,
  209. PlusOne: 1,
  210. MinusOne: 0,
  211. Laugh: 0,
  212. Confused: 0,
  213. Heart: 0,
  214. Hooray: 0,
  215. },
  216. },
  217. {
  218. IssueIndex: 2,
  219. PosterID: 1669571,
  220. PosterName: "mrsdizzie",
  221. Created: time.Date(2019, 11, 12, 22, 7, 14, 0, time.UTC),
  222. Content: "A second comment",
  223. Reactions: &base.Reactions{
  224. TotalCount: 0,
  225. PlusOne: 0,
  226. MinusOne: 0,
  227. Laugh: 0,
  228. Confused: 0,
  229. Heart: 0,
  230. Hooray: 0,
  231. },
  232. },
  233. }, comments[:2])
  234. // downloader.GetPullRequests()
  235. prs, err := downloader.GetPullRequests(1, 2)
  236. assert.NoError(t, err)
  237. assert.EqualValues(t, 2, len(prs))
  238. closed1 = time.Date(2019, 11, 12, 21, 39, 27, 0, time.UTC)
  239. var merged1 = time.Date(2019, 11, 12, 21, 39, 27, 0, time.UTC)
  240. assert.EqualValues(t, []*base.PullRequest{
  241. {
  242. Number: 3,
  243. Title: "Update README.md",
  244. Content: "add warning to readme",
  245. Milestone: "1.1.0",
  246. PosterID: 1669571,
  247. PosterName: "mrsdizzie",
  248. State: "closed",
  249. Created: time.Date(2019, 11, 12, 21, 21, 43, 0, time.UTC),
  250. Labels: []*base.Label{
  251. {
  252. Name: "documentation",
  253. Color: "0075ca",
  254. Description: "Improvements or additions to documentation",
  255. },
  256. },
  257. PatchURL: "https://github.com/go-gitea/test_repo/pull/3.patch",
  258. Head: base.PullRequestBranch{
  259. Ref: "master",
  260. CloneURL: "https://github.com/mrsdizzie/test_repo.git",
  261. SHA: "076160cf0b039f13e5eff19619932d181269414b",
  262. RepoName: "test_repo",
  263. OwnerName: "mrsdizzie",
  264. },
  265. Base: base.PullRequestBranch{
  266. Ref: "master",
  267. SHA: "72866af952e98d02a73003501836074b286a78f6",
  268. OwnerName: "go-gitea",
  269. RepoName: "test_repo",
  270. },
  271. Closed: &closed1,
  272. Merged: true,
  273. MergedTime: &merged1,
  274. MergeCommitSHA: "f32b0a9dfd09a60f616f29158f772cedd89942d2",
  275. },
  276. {
  277. Number: 4,
  278. Title: "Test branch",
  279. Content: "do not merge this PR",
  280. Milestone: "1.0.0",
  281. PosterID: 1669571,
  282. PosterName: "mrsdizzie",
  283. State: "open",
  284. Created: time.Date(2019, 11, 12, 21, 54, 18, 0, time.UTC),
  285. Labels: []*base.Label{
  286. {
  287. Name: "bug",
  288. Color: "d73a4a",
  289. Description: "Something isn't working",
  290. },
  291. },
  292. PatchURL: "https://github.com/go-gitea/test_repo/pull/4.patch",
  293. Head: base.PullRequestBranch{
  294. Ref: "test-branch",
  295. SHA: "2be9101c543658591222acbee3eb799edfc3853d",
  296. RepoName: "test_repo",
  297. OwnerName: "mrsdizzie",
  298. CloneURL: "https://github.com/mrsdizzie/test_repo.git",
  299. },
  300. Base: base.PullRequestBranch{
  301. Ref: "master",
  302. SHA: "f32b0a9dfd09a60f616f29158f772cedd89942d2",
  303. OwnerName: "go-gitea",
  304. RepoName: "test_repo",
  305. },
  306. Merged: false,
  307. MergeCommitSHA: "565d1208f5fffdc1c5ae1a2436491eb9a5e4ebae",
  308. },
  309. }, prs)
  310. }