2019-05-07 04:12:51 +03: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 (
"testing"
"time"
"code.gitea.io/gitea/models"
2019-12-17 07:16:54 +03:00
"code.gitea.io/gitea/modules/graceful"
2019-10-13 16:23:14 +03:00
"code.gitea.io/gitea/modules/structs"
2019-05-07 04:12:51 +03:00
"code.gitea.io/gitea/modules/util"
"github.com/stretchr/testify/assert"
)
func TestGiteaUploadRepo ( t * testing . T ) {
// FIXME: Since no accesskey or user/password will trigger rate limit of github, just skip
t . Skip ( )
models . PrepareTestEnv ( t )
user := models . AssertExistsAndLoadBean ( t , & models . User { ID : 1 } ) . ( * models . User )
var (
downloader = NewGithubDownloaderV3 ( "" , "" , "go-xorm" , "builder" )
repoName = "builder-" + time . Now ( ) . Format ( "2006-01-02-15-04-05" )
2019-12-17 07:16:54 +03:00
uploader = NewGiteaLocalUploader ( graceful . GetManager ( ) . HammerContext ( ) , user , user . Name , repoName )
2019-05-07 04:12:51 +03:00
)
2019-10-13 16:23:14 +03:00
err := migrateRepository ( downloader , uploader , structs . MigrateRepoOption {
CloneAddr : "https://github.com/go-xorm/builder" ,
RepoName : repoName ,
2019-05-07 04:12:51 +03:00
AuthUsername : "" ,
2019-07-08 05:14:12 +03:00
Wiki : true ,
Issues : true ,
Milestones : true ,
Labels : true ,
Releases : true ,
Comments : true ,
PullRequests : true ,
Private : true ,
Mirror : false ,
2019-05-07 04:12:51 +03:00
} )
assert . NoError ( t , err )
repo := models . AssertExistsAndLoadBean ( t , & models . Repository { OwnerID : user . ID , Name : repoName } ) . ( * models . Repository )
assert . True ( t , repo . HasWiki ( ) )
2020-07-28 14:30:40 +03:00
milestones , err := models . GetMilestones ( models . GetMilestonesOption {
RepoID : repo . ID ,
State : structs . StateOpen ,
} )
2019-05-07 04:12:51 +03:00
assert . NoError ( t , err )
assert . EqualValues ( t , 1 , len ( milestones ) )
2020-07-28 14:30:40 +03:00
milestones , err = models . GetMilestones ( models . GetMilestonesOption {
RepoID : repo . ID ,
State : structs . StateClosed ,
} )
2019-05-07 04:12:51 +03:00
assert . NoError ( t , err )
assert . EqualValues ( t , 0 , len ( milestones ) )
2020-01-24 22:00:29 +03:00
labels , err := models . GetLabelsByRepoID ( repo . ID , "" , models . ListOptions { } )
2019-05-07 04:12:51 +03:00
assert . NoError ( t , err )
assert . EqualValues ( t , 11 , len ( labels ) )
releases , err := models . GetReleasesByRepoID ( repo . ID , models . FindReleasesOptions {
2020-01-24 22:00:29 +03:00
ListOptions : models . ListOptions {
PageSize : 10 ,
Page : 0 ,
} ,
2019-05-07 04:12:51 +03:00
IncludeTags : true ,
2020-01-24 22:00:29 +03:00
} )
2019-05-07 04:12:51 +03:00
assert . NoError ( t , err )
assert . EqualValues ( t , 8 , len ( releases ) )
releases , err = models . GetReleasesByRepoID ( repo . ID , models . FindReleasesOptions {
2020-01-24 22:00:29 +03:00
ListOptions : models . ListOptions {
PageSize : 10 ,
Page : 0 ,
} ,
2019-05-07 04:12:51 +03:00
IncludeTags : false ,
2020-01-24 22:00:29 +03:00
} )
2019-05-07 04:12:51 +03:00
assert . NoError ( t , err )
assert . EqualValues ( t , 1 , len ( releases ) )
issues , err := models . Issues ( & models . IssuesOptions {
RepoIDs : [ ] int64 { repo . ID } ,
IsPull : util . OptionalBoolFalse ,
SortType : "oldest" ,
} )
assert . NoError ( t , err )
assert . EqualValues ( t , 14 , len ( issues ) )
assert . NoError ( t , issues [ 0 ] . LoadDiscussComments ( ) )
assert . EqualValues ( t , 0 , len ( issues [ 0 ] . Comments ) )
pulls , _ , err := models . PullRequests ( repo . ID , & models . PullRequestsOptions {
SortType : "oldest" ,
} )
assert . NoError ( t , err )
assert . EqualValues ( t , 34 , len ( pulls ) )
assert . NoError ( t , pulls [ 0 ] . LoadIssue ( ) )
assert . NoError ( t , pulls [ 0 ] . Issue . LoadDiscussComments ( ) )
assert . EqualValues ( t , 2 , len ( pulls [ 0 ] . Issue . Comments ) )
}