2019-05-07 09:12:51 +08:00
// Copyright 2019 The Gitea Authors. All rights reserved.
// Copyright 2018 Jonas Franz. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package migrations
import (
2020-09-03 01:49:25 +08:00
"context"
2020-01-16 23:15:44 +08:00
"os"
2019-05-07 09:12:51 +08:00
"testing"
"time"
2021-11-16 23:25:33 +08:00
base "code.gitea.io/gitea/modules/migration"
2019-05-07 09:12:51 +08:00
"github.com/stretchr/testify/assert"
)
func TestGitHubDownloadRepo ( t * testing . T ) {
2022-01-05 14:27:53 +08:00
GithubLimitRateRemaining = 3 // Wait at 3 remaining since we could have 3 CI in //
2020-09-21 22:36:51 +08:00
downloader := NewGithubDownloaderV3 ( context . Background ( ) , "https://github.com" , "" , "" , os . Getenv ( "GITHUB_READ_TOKEN" ) , "go-gitea" , "test_repo" )
2020-01-16 23:15:44 +08:00
err := downloader . RefreshRate ( )
assert . NoError ( t , err )
2019-05-07 09:12:51 +08:00
repo , err := downloader . GetRepoInfo ( )
assert . NoError ( t , err )
2021-08-18 08:47:18 +08:00
assertRepositoryEqual ( t , & base . Repository {
2020-09-15 22:37:44 +08:00
Name : "test_repo" ,
Owner : "go-gitea" ,
Description : "Test repository for testing migration from github to gitea" ,
CloneURL : "https://github.com/go-gitea/test_repo.git" ,
OriginalURL : "https://github.com/go-gitea/test_repo" ,
DefaultBranch : "master" ,
2019-05-07 09:12:51 +08:00
} , repo )
2019-08-14 14:16:12 +08:00
topics , err := downloader . GetTopics ( )
assert . NoError ( t , err )
assert . Contains ( t , topics , "gitea" )
2019-05-07 09:12:51 +08:00
milestones , err := downloader . GetMilestones ( )
assert . NoError ( t , err )
2021-08-18 08:47:18 +08:00
assertMilestonesEqual ( t , [ ] * base . Milestone {
{
Title : "1.0.0" ,
Description : "Milestone 1.0.0" ,
Deadline : timePtr ( time . Date ( 2019 , 11 , 11 , 8 , 0 , 0 , 0 , time . UTC ) ) ,
Created : time . Date ( 2019 , 11 , 12 , 19 , 37 , 8 , 0 , time . UTC ) ,
Updated : timePtr ( time . Date ( 2019 , 11 , 12 , 21 , 56 , 17 , 0 , time . UTC ) ) ,
Closed : timePtr ( time . Date ( 2019 , 11 , 12 , 19 , 45 , 49 , 0 , time . UTC ) ) ,
State : "closed" ,
} ,
{
Title : "1.1.0" ,
Description : "Milestone 1.1.0" ,
Deadline : timePtr ( time . Date ( 2019 , 11 , 12 , 8 , 0 , 0 , 0 , time . UTC ) ) ,
Created : time . Date ( 2019 , 11 , 12 , 19 , 37 , 25 , 0 , time . UTC ) ,
Updated : timePtr ( time . Date ( 2019 , 11 , 12 , 21 , 39 , 27 , 0 , time . UTC ) ) ,
Closed : timePtr ( time . Date ( 2019 , 11 , 12 , 19 , 45 , 46 , 0 , time . UTC ) ) ,
State : "closed" ,
} ,
} , milestones )
2019-05-07 09:12:51 +08:00
labels , err := downloader . GetLabels ( )
assert . NoError ( t , err )
2021-08-18 08:47:18 +08:00
assertLabelsEqual ( t , [ ] * base . Label {
{
Name : "bug" ,
Color : "d73a4a" ,
Description : "Something isn't working" ,
} ,
{
Name : "documentation" ,
Color : "0075ca" ,
Description : "Improvements or additions to documentation" ,
} ,
{
Name : "duplicate" ,
Color : "cfd3d7" ,
Description : "This issue or pull request already exists" ,
} ,
{
Name : "enhancement" ,
Color : "a2eeef" ,
Description : "New feature or request" ,
} ,
{
Name : "good first issue" ,
Color : "7057ff" ,
Description : "Good for newcomers" ,
} ,
{
Name : "help wanted" ,
Color : "008672" ,
Description : "Extra attention is needed" ,
} ,
{
Name : "invalid" ,
Color : "e4e669" ,
Description : "This doesn't seem right" ,
} ,
{
Name : "question" ,
Color : "d876e3" ,
Description : "Further information is requested" ,
} ,
{
Name : "wontfix" ,
Color : "ffffff" ,
Description : "This will not be worked on" ,
} ,
} , labels )
2019-05-07 09:12:51 +08:00
releases , err := downloader . GetReleases ( )
assert . NoError ( t , err )
2021-08-18 08:47:18 +08:00
assertReleasesEqual ( t , [ ] * base . Release {
2019-05-07 09:12:51 +08:00
{
TagName : "v0.9.99" ,
TargetCommitish : "master" ,
2019-11-13 06:48:21 +08:00
Name : "First Release" ,
Body : "A test release" ,
Created : time . Date ( 2019 , 11 , 9 , 16 , 49 , 21 , 0 , time . UTC ) ,
Published : time . Date ( 2019 , 11 , 12 , 20 , 12 , 10 , 0 , time . UTC ) ,
PublisherID : 1669571 ,
PublisherName : "mrsdizzie" ,
2019-05-07 09:12:51 +08:00
} ,
2021-08-18 08:47:18 +08:00
} , releases )
2019-05-07 09:12:51 +08:00
// downloader.GetIssues()
2019-11-13 06:48:21 +08:00
issues , isEnd , err := downloader . GetIssues ( 1 , 2 )
2019-05-07 09:12:51 +08:00
assert . NoError ( t , err )
2019-05-31 04:26:57 +08:00
assert . False ( t , isEnd )
2021-08-18 08:47:18 +08:00
assertIssuesEqual ( t , [ ] * base . Issue {
2019-05-07 09:12:51 +08:00
{
2019-11-13 06:48:21 +08:00
Number : 1 ,
Title : "Please add an animated gif icon to the merge button" ,
Content : "I just want the merge button to hurt my eyes a little. \xF0\x9F\x98\x9D " ,
Milestone : "1.0.0" ,
PosterID : 18600385 ,
PosterName : "guillep2k" ,
2019-05-07 09:12:51 +08:00
State : "closed" ,
2019-11-13 06:48:21 +08:00
Created : time . Date ( 2019 , 11 , 9 , 17 , 0 , 29 , 0 , time . UTC ) ,
2020-01-14 18:29:22 +08:00
Updated : time . Date ( 2019 , 11 , 12 , 20 , 29 , 53 , 0 , time . UTC ) ,
2019-05-07 09:12:51 +08:00
Labels : [ ] * base . Label {
{
2019-11-13 06:48:21 +08:00
Name : "bug" ,
Color : "d73a4a" ,
Description : "Something isn't working" ,
2019-05-07 09:12:51 +08:00
} ,
{
2019-11-13 06:48:21 +08:00
Name : "good first issue" ,
Color : "7057ff" ,
Description : "Good for newcomers" ,
2019-05-07 09:12:51 +08:00
} ,
} ,
2020-01-15 19:14:07 +08:00
Reactions : [ ] * base . Reaction {
{
UserID : 1669571 ,
UserName : "mrsdizzie" ,
Content : "+1" ,
} ,
2019-05-07 09:12:51 +08:00
} ,
2021-08-18 08:47:18 +08:00
Closed : timePtr ( time . Date ( 2019 , 11 , 12 , 20 , 22 , 22 , 0 , time . UTC ) ) ,
2019-05-07 09:12:51 +08:00
} ,
{
2019-11-13 06:48:21 +08:00
Number : 2 ,
Title : "Test issue" ,
Content : "This is test issue 2, do not touch!" ,
Milestone : "1.1.0" ,
PosterID : 1669571 ,
PosterName : "mrsdizzie" ,
2019-07-08 18:10:56 +08:00
State : "closed" ,
2019-11-13 06:48:21 +08:00
Created : time . Date ( 2019 , 11 , 12 , 21 , 0 , 6 , 0 , time . UTC ) ,
2020-01-14 18:29:22 +08:00
Updated : time . Date ( 2019 , 11 , 12 , 22 , 7 , 14 , 0 , time . UTC ) ,
2019-05-07 09:12:51 +08:00
Labels : [ ] * base . Label {
{
2019-11-13 06:48:21 +08:00
Name : "duplicate" ,
Color : "cfd3d7" ,
Description : "This issue or pull request already exists" ,
2019-05-07 09:12:51 +08:00
} ,
} ,
2020-01-15 19:14:07 +08:00
Reactions : [ ] * base . Reaction {
{
UserID : 1669571 ,
UserName : "mrsdizzie" ,
Content : "heart" ,
} ,
{
UserID : 1669571 ,
UserName : "mrsdizzie" ,
Content : "laugh" ,
} ,
{
UserID : 1669571 ,
UserName : "mrsdizzie" ,
Content : "-1" ,
} ,
{
UserID : 1669571 ,
UserName : "mrsdizzie" ,
Content : "confused" ,
} ,
{
UserID : 1669571 ,
UserName : "mrsdizzie" ,
Content : "hooray" ,
} ,
{
UserID : 1669571 ,
UserName : "mrsdizzie" ,
Content : "+1" ,
} ,
2019-05-07 09:12:51 +08:00
} ,
2021-08-18 08:47:18 +08:00
Closed : timePtr ( time . Date ( 2019 , 11 , 12 , 21 , 1 , 31 , 0 , time . UTC ) ) ,
2019-05-07 09:12:51 +08:00
} ,
} , issues )
// downloader.GetComments()
2021-06-30 15:23:49 +08:00
comments , _ , err := downloader . GetComments ( base . GetCommentOptions {
2021-08-22 06:47:45 +08:00
Context : base . BasicIssueContext ( 2 ) ,
2021-06-30 15:23:49 +08:00
} )
2019-05-07 09:12:51 +08:00
assert . NoError ( t , err )
2021-08-18 08:47:18 +08:00
assertCommentsEqual ( t , [ ] * base . Comment {
2019-05-07 09:12:51 +08:00
{
2019-11-13 06:48:21 +08:00
IssueIndex : 2 ,
PosterID : 1669571 ,
PosterName : "mrsdizzie" ,
Created : time . Date ( 2019 , 11 , 12 , 21 , 0 , 13 , 0 , time . UTC ) ,
2020-01-14 18:29:22 +08:00
Updated : time . Date ( 2019 , 11 , 12 , 21 , 0 , 13 , 0 , time . UTC ) ,
2019-11-13 06:48:21 +08:00
Content : "This is a comment" ,
2020-01-15 19:14:07 +08:00
Reactions : [ ] * base . Reaction {
{
UserID : 1669571 ,
UserName : "mrsdizzie" ,
Content : "+1" ,
} ,
2019-05-07 09:12:51 +08:00
} ,
} ,
{
2019-11-13 06:48:21 +08:00
IssueIndex : 2 ,
PosterID : 1669571 ,
PosterName : "mrsdizzie" ,
Created : time . Date ( 2019 , 11 , 12 , 22 , 7 , 14 , 0 , time . UTC ) ,
2020-01-14 18:29:22 +08:00
Updated : time . Date ( 2019 , 11 , 12 , 22 , 7 , 14 , 0 , time . UTC ) ,
2019-11-13 06:48:21 +08:00
Content : "A second comment" ,
2020-01-15 19:14:07 +08:00
Reactions : nil ,
2019-05-07 09:12:51 +08:00
} ,
2021-08-18 08:47:18 +08:00
} , comments )
2019-05-07 09:12:51 +08:00
// downloader.GetPullRequests()
2020-10-14 12:06:00 +08:00
prs , _ , err := downloader . GetPullRequests ( 1 , 2 )
2019-05-07 09:12:51 +08:00
assert . NoError ( t , err )
2021-08-18 08:47:18 +08:00
assertPullRequestsEqual ( t , [ ] * base . PullRequest {
2019-05-07 09:12:51 +08:00
{
2019-11-13 06:48:21 +08:00
Number : 3 ,
Title : "Update README.md" ,
Content : "add warning to readme" ,
Milestone : "1.1.0" ,
PosterID : 1669571 ,
PosterName : "mrsdizzie" ,
2019-05-07 09:12:51 +08:00
State : "closed" ,
2019-11-13 06:48:21 +08:00
Created : time . Date ( 2019 , 11 , 12 , 21 , 21 , 43 , 0 , time . UTC ) ,
2020-01-14 18:29:22 +08:00
Updated : time . Date ( 2019 , 11 , 12 , 21 , 39 , 28 , 0 , time . UTC ) ,
2019-05-07 09:12:51 +08:00
Labels : [ ] * base . Label {
{
2019-11-13 06:48:21 +08:00
Name : "documentation" ,
Color : "0075ca" ,
Description : "Improvements or additions to documentation" ,
2019-05-07 09:12:51 +08:00
} ,
} ,
2019-11-13 06:48:21 +08:00
PatchURL : "https://github.com/go-gitea/test_repo/pull/3.patch" ,
2019-05-07 09:12:51 +08:00
Head : base . PullRequestBranch {
2019-11-13 06:48:21 +08:00
Ref : "master" ,
CloneURL : "https://github.com/mrsdizzie/test_repo.git" ,
SHA : "076160cf0b039f13e5eff19619932d181269414b" ,
RepoName : "test_repo" ,
OwnerName : "mrsdizzie" ,
2019-05-07 09:12:51 +08:00
} ,
Base : base . PullRequestBranch {
Ref : "master" ,
2019-11-13 06:48:21 +08:00
SHA : "72866af952e98d02a73003501836074b286a78f6" ,
2019-05-07 09:12:51 +08:00
OwnerName : "go-gitea" ,
2019-11-13 06:48:21 +08:00
RepoName : "test_repo" ,
2019-05-07 09:12:51 +08:00
} ,
2021-08-18 08:47:18 +08:00
Closed : timePtr ( time . Date ( 2019 , 11 , 12 , 21 , 39 , 27 , 0 , time . UTC ) ) ,
2019-05-07 09:12:51 +08:00
Merged : true ,
2021-08-18 08:47:18 +08:00
MergedTime : timePtr ( time . Date ( 2019 , 11 , 12 , 21 , 39 , 27 , 0 , time . UTC ) ) ,
2019-11-13 06:48:21 +08:00
MergeCommitSHA : "f32b0a9dfd09a60f616f29158f772cedd89942d2" ,
2021-08-22 06:47:45 +08:00
Context : base . BasicIssueContext ( 3 ) ,
2019-05-07 09:12:51 +08:00
} ,
{
2019-11-13 06:48:21 +08:00
Number : 4 ,
Title : "Test branch" ,
Content : "do not merge this PR" ,
2019-05-07 09:12:51 +08:00
Milestone : "1.0.0" ,
2019-11-13 06:48:21 +08:00
PosterID : 1669571 ,
PosterName : "mrsdizzie" ,
State : "open" ,
Created : time . Date ( 2019 , 11 , 12 , 21 , 54 , 18 , 0 , time . UTC ) ,
2020-01-14 18:29:22 +08:00
Updated : time . Date ( 2020 , 1 , 4 , 11 , 30 , 1 , 0 , time . UTC ) ,
2019-05-07 09:12:51 +08:00
Labels : [ ] * base . Label {
{
2019-11-13 06:48:21 +08:00
Name : "bug" ,
Color : "d73a4a" ,
Description : "Something isn't working" ,
2019-05-07 09:12:51 +08:00
} ,
} ,
2019-11-13 06:48:21 +08:00
PatchURL : "https://github.com/go-gitea/test_repo/pull/4.patch" ,
2019-05-07 09:12:51 +08:00
Head : base . PullRequestBranch {
2019-11-13 06:48:21 +08:00
Ref : "test-branch" ,
SHA : "2be9101c543658591222acbee3eb799edfc3853d" ,
RepoName : "test_repo" ,
OwnerName : "mrsdizzie" ,
CloneURL : "https://github.com/mrsdizzie/test_repo.git" ,
2019-05-07 09:12:51 +08:00
} ,
Base : base . PullRequestBranch {
2019-11-13 06:48:21 +08:00
Ref : "master" ,
SHA : "f32b0a9dfd09a60f616f29158f772cedd89942d2" ,
2019-05-07 09:12:51 +08:00
OwnerName : "go-gitea" ,
2019-11-13 06:48:21 +08:00
RepoName : "test_repo" ,
2019-05-07 09:12:51 +08:00
} ,
2019-11-13 06:48:21 +08:00
Merged : false ,
MergeCommitSHA : "565d1208f5fffdc1c5ae1a2436491eb9a5e4ebae" ,
2020-01-15 19:14:07 +08:00
Reactions : [ ] * base . Reaction {
{
UserID : 81045 ,
UserName : "lunny" ,
Content : "heart" ,
} ,
{
UserID : 81045 ,
UserName : "lunny" ,
Content : "+1" ,
} ,
} ,
2021-08-22 06:47:45 +08:00
Context : base . BasicIssueContext ( 4 ) ,
2019-05-07 09:12:51 +08:00
} ,
} , prs )
2020-01-24 01:28:15 +08:00
2021-08-22 06:47:45 +08:00
reviews , err := downloader . GetReviews ( base . BasicIssueContext ( 3 ) )
2020-01-24 01:28:15 +08:00
assert . NoError ( t , err )
2021-08-18 08:47:18 +08:00
assertReviewsEqual ( t , [ ] * base . Review {
2020-01-24 01:28:15 +08:00
{
ID : 315859956 ,
IssueIndex : 3 ,
ReviewerID : 42128690 ,
ReviewerName : "jolheiser" ,
CommitID : "076160cf0b039f13e5eff19619932d181269414b" ,
CreatedAt : time . Date ( 2019 , 11 , 12 , 21 , 35 , 24 , 0 , time . UTC ) ,
State : base . ReviewStateApproved ,
} ,
{
ID : 315860062 ,
IssueIndex : 3 ,
ReviewerID : 1824502 ,
ReviewerName : "zeripath" ,
CommitID : "076160cf0b039f13e5eff19619932d181269414b" ,
CreatedAt : time . Date ( 2019 , 11 , 12 , 21 , 35 , 36 , 0 , time . UTC ) ,
State : base . ReviewStateApproved ,
} ,
{
ID : 315861440 ,
IssueIndex : 3 ,
ReviewerID : 165205 ,
ReviewerName : "lafriks" ,
CommitID : "076160cf0b039f13e5eff19619932d181269414b" ,
2022-01-05 14:27:53 +08:00
CreatedAt : time . Date ( 2019 , 11 , 12 , 21 , 38 , 0 , 0 , time . UTC ) ,
2020-01-24 01:28:15 +08:00
State : base . ReviewStateApproved ,
} ,
} , reviews )
2021-08-22 06:47:45 +08:00
reviews , err = downloader . GetReviews ( base . BasicIssueContext ( 4 ) )
2020-01-24 01:28:15 +08:00
assert . NoError ( t , err )
2021-08-18 08:47:18 +08:00
assertReviewsEqual ( t , [ ] * base . Review {
2020-01-24 01:28:15 +08:00
{
ID : 338338740 ,
IssueIndex : 4 ,
ReviewerID : 81045 ,
ReviewerName : "lunny" ,
CommitID : "2be9101c543658591222acbee3eb799edfc3853d" ,
2022-01-05 14:27:53 +08:00
CreatedAt : time . Date ( 2020 , 1 , 4 , 5 , 33 , 18 , 0 , time . UTC ) ,
2020-01-24 01:28:15 +08:00
State : base . ReviewStateApproved ,
Comments : [ ] * base . ReviewComment {
{
ID : 363017488 ,
Content : "This is a good pull request." ,
TreePath : "README.md" ,
DiffHunk : "@@ -1,2 +1,4 @@\n # test_repo\n Test repository for testing migration from github to gitea\n+" ,
Position : 3 ,
CommitID : "2be9101c543658591222acbee3eb799edfc3853d" ,
PosterID : 81045 ,
2022-01-05 14:27:53 +08:00
CreatedAt : time . Date ( 2020 , 1 , 4 , 5 , 33 , 6 , 0 , time . UTC ) ,
UpdatedAt : time . Date ( 2020 , 1 , 4 , 5 , 33 , 18 , 0 , time . UTC ) ,
2020-01-24 01:28:15 +08:00
} ,
} ,
} ,
{
ID : 338339651 ,
IssueIndex : 4 ,
ReviewerID : 81045 ,
ReviewerName : "lunny" ,
CommitID : "2be9101c543658591222acbee3eb799edfc3853d" ,
2022-01-05 14:27:53 +08:00
CreatedAt : time . Date ( 2020 , 1 , 4 , 6 , 7 , 6 , 0 , time . UTC ) ,
2020-01-24 01:28:15 +08:00
State : base . ReviewStateChangesRequested ,
Content : "Don't add more reviews" ,
} ,
{
ID : 338349019 ,
IssueIndex : 4 ,
ReviewerID : 81045 ,
ReviewerName : "lunny" ,
CommitID : "2be9101c543658591222acbee3eb799edfc3853d" ,
2022-01-05 14:27:53 +08:00
CreatedAt : time . Date ( 2020 , 1 , 4 , 11 , 21 , 41 , 0 , time . UTC ) ,
2020-01-24 01:28:15 +08:00
State : base . ReviewStateCommented ,
Comments : [ ] * base . ReviewComment {
{
ID : 363029944 ,
Content : "test a single comment." ,
TreePath : "LICENSE" ,
DiffHunk : "@@ -19,3 +19,5 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n+" ,
Position : 4 ,
CommitID : "2be9101c543658591222acbee3eb799edfc3853d" ,
PosterID : 81045 ,
2022-01-05 14:27:53 +08:00
CreatedAt : time . Date ( 2020 , 1 , 4 , 11 , 21 , 41 , 0 , time . UTC ) ,
UpdatedAt : time . Date ( 2020 , 1 , 4 , 11 , 21 , 41 , 0 , time . UTC ) ,
2020-01-24 01:28:15 +08:00
} ,
} ,
} ,
} , reviews )
2019-05-07 09:12:51 +08:00
}