@ -6,7 +6,6 @@ package migrations
import (
import (
"context"
"context"
"fmt"
"net/http"
"net/http"
"os"
"os"
"sort"
"sort"
@ -18,29 +17,6 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/assert"
)
)
func assertEqualIssue ( t * testing . T , issueExp , issueGet * base . Issue ) {
assert . EqualValues ( t , issueExp . Number , issueGet . Number )
assert . EqualValues ( t , issueExp . Title , issueGet . Title )
assert . EqualValues ( t , issueExp . Content , issueGet . Content )
assert . EqualValues ( t , issueExp . Milestone , issueGet . Milestone )
assert . EqualValues ( t , issueExp . PosterID , issueGet . PosterID )
assert . EqualValues ( t , issueExp . PosterName , issueGet . PosterName )
assert . EqualValues ( t , issueExp . PosterEmail , issueGet . PosterEmail )
assert . EqualValues ( t , issueExp . IsLocked , issueGet . IsLocked )
assert . EqualValues ( t , issueExp . Created . Unix ( ) , issueGet . Created . Unix ( ) )
assert . EqualValues ( t , issueExp . Updated . Unix ( ) , issueGet . Updated . Unix ( ) )
if issueExp . Closed != nil {
assert . EqualValues ( t , issueExp . Closed . Unix ( ) , issueGet . Closed . Unix ( ) )
} else {
assert . True ( t , issueGet . Closed == nil )
}
sort . Strings ( issueExp . Assignees )
sort . Strings ( issueGet . Assignees )
assert . EqualValues ( t , issueExp . Assignees , issueGet . Assignees )
assert . EqualValues ( t , issueExp . Labels , issueGet . Labels )
assert . EqualValues ( t , issueExp . Reactions , issueGet . Reactions )
}
func TestGiteaDownloadRepo ( t * testing . T ) {
func TestGiteaDownloadRepo ( t * testing . T ) {
// Skip tests if Gitea token is not found
// Skip tests if Gitea token is not found
giteaToken := os . Getenv ( "GITEA_TOKEN" )
giteaToken := os . Getenv ( "GITEA_TOKEN" )
@ -63,7 +39,7 @@ func TestGiteaDownloadRepo(t *testing.T) {
repo , err := downloader . GetRepoInfo ( )
repo , err := downloader . GetRepoInfo ( )
assert . NoError ( t , err )
assert . NoError ( t , err )
assert . EqualValues ( t , & base . Repository {
assertRepositoryEqual ( t , & base . Repository {
Name : "test_repo" ,
Name : "test_repo" ,
Owner : "gitea" ,
Owner : "gitea" ,
IsPrivate : false ,
IsPrivate : false ,
@ -80,54 +56,57 @@ func TestGiteaDownloadRepo(t *testing.T) {
labels , err := downloader . GetLabels ( )
labels , err := downloader . GetLabels ( )
assert . NoError ( t , err )
assert . NoError ( t , err )
assert . Len ( t , labels , 6 )
assertLabelsEqual ( t , [ ] * base . Label {
for _ , l := range labels {
{
switch l . Name {
Name : "Bug" ,
case "Bug" :
Color : "e11d21" ,
assertLabelEqual ( t , "Bug" , "e11d21" , "" , l )
} ,
case "documentation" :
{
assertLabelEqual ( t , "Enhancement" , "207de5" , "" , l )
Name : "Enhancement" ,
case "confirmed" :
Color : "207de5" ,
assertLabelEqual ( t , "Feature" , "0052cc" , "a feature request" , l )
} ,
case "enhancement" :
{
assertLabelEqual ( t , "Invalid" , "d4c5f9" , "" , l )
Name : "Feature" ,
case "critical" :
Color : "0052cc" ,
assertLabelEqual ( t , "Question" , "fbca04" , "" , l )
Description : "a feature request" ,
case "discussion" :
} ,
assertLabelEqual ( t , "Valid" , "53e917" , "" , l )
{
default :
Name : "Invalid" ,
assert . Error ( t , fmt . Errorf ( "unexpected label: %s" , l . Name ) )
Color : "d4c5f9" ,
}
} ,
}
{
Name : "Question" ,
Color : "fbca04" ,
} ,
{
Name : "Valid" ,
Color : "53e917" ,
} ,
} , labels )
milestones , err := downloader . GetMilestones ( )
milestones , err := downloader . GetMilestones ( )
assert . NoError ( t , err )
assert . NoError ( t , err )
assert . Len ( t , milestones , 2 )
assertMilestonesEqual ( t , [ ] * base . Milestone {
{
for _ , milestone := range milestones {
Title : "V2 Finalize" ,
switch milestone . Title {
Created : time . Unix ( 0 , 0 ) ,
case "V1" :
Deadline : timePtr ( time . Unix ( 1599263999 , 0 ) ) ,
assert . EqualValues ( t , "Generate Content" , milestone . Description )
Updated : timePtr ( time . Unix ( 0 , 0 ) ) ,
// assert.EqualValues(t, "ToDo", milestone.Created)
State : "open" ,
// assert.EqualValues(t, "ToDo", milestone.Updated)
} ,
assert . EqualValues ( t , 1598985406 , milestone . Closed . Unix ( ) )
{
assert . True ( t , milestone . Deadline == nil )
Title : "V1" ,
assert . EqualValues ( t , "closed" , milestone . State )
Description : "Generate Content" ,
case "V2 Finalize" :
Created : time . Unix ( 0 , 0 ) ,
assert . EqualValues ( t , "" , milestone . Description )
Updated : timePtr ( time . Unix ( 0 , 0 ) ) ,
// assert.EqualValues(t, "ToDo", milestone.Created)
Closed : timePtr ( time . Unix ( 1598985406 , 0 ) ) ,
// assert.EqualValues(t, "ToDo", milestone.Updated)
State : "closed" ,
assert . True ( t , milestone . Closed == nil )
} ,
assert . EqualValues ( t , 1599263999 , milestone . Deadline . Unix ( ) )
} , milestones )
assert . EqualValues ( t , "open" , milestone . State )
default :
assert . Error ( t , fmt . Errorf ( "unexpected milestone: %s" , milestone . Title ) )
}
}
releases , err := downloader . GetReleases ( )
releases , err := downloader . GetReleases ( )
assert . NoError ( t , err )
assert . NoError ( t , err )
assert . EqualValues ( t , [ ] * base . Release {
assertReleasesEqual ( t , [ ] * base . Release {
{
{
Name : "Second Release" ,
Name : "Second Release" ,
TagName : "v2-rc1" ,
TagName : "v2-rc1" ,
@ -139,7 +118,7 @@ func TestGiteaDownloadRepo(t *testing.T) {
Published : time . Date ( 2020 , 9 , 1 , 18 , 2 , 43 , 0 , time . UTC ) ,
Published : time . Date ( 2020 , 9 , 1 , 18 , 2 , 43 , 0 , time . UTC ) ,
PublisherID : 689 ,
PublisherID : 689 ,
PublisherName : "6543" ,
PublisherName : "6543" ,
PublisherEmail : "6543@noreply.gitea.io " ,
PublisherEmail : "6543@obermui.de " ,
} ,
} ,
{
{
Name : "First Release" ,
Name : "First Release" ,
@ -152,95 +131,85 @@ func TestGiteaDownloadRepo(t *testing.T) {
Published : time . Date ( 2020 , 9 , 1 , 17 , 30 , 32 , 0 , time . UTC ) ,
Published : time . Date ( 2020 , 9 , 1 , 17 , 30 , 32 , 0 , time . UTC ) ,
PublisherID : 689 ,
PublisherID : 689 ,
PublisherName : "6543" ,
PublisherName : "6543" ,
PublisherEmail : "6543@noreply.gitea.io " ,
PublisherEmail : "6543@obermui.de " ,
} ,
} ,
} , releases )
} , releases )
issues , isEnd , err := downloader . GetIssues ( 1 , 50 )
issues , isEnd , err := downloader . GetIssues ( 1 , 50 )
assert . NoError ( t , err )
assert . NoError ( t , err )
assert . Len ( t , issues , 7 )
assert . True ( t , isEnd )
assert . True ( t , isEnd )
assert . Len ( t , issues , 7 )
assert . EqualValues ( t , "open" , issues [ 0 ] . State )
assert . EqualValues ( t , "open" , issues [ 0 ] . State )
issues , isEnd , err = downloader . GetIssues ( 3 , 2 )
issues , isEnd , err = downloader . GetIssues ( 3 , 2 )
assert . NoError ( t , err )
assert . NoError ( t , err )
assert . Len ( t , issues , 2 )
assert . False ( t , isEnd )
assert . False ( t , isEnd )
var (
assertIssuesEqual ( t , [ ] * base . Issue {
closed4 = time . Date ( 2020 , 9 , 1 , 15 , 49 , 34 , 0 , time . UTC )
{
closed2 = time . Unix ( 1598969497 , 0 )
Number : 4 ,
)
Title : "what is this repo about?" ,
Content : "" ,
assertEqualIssue ( t , & base . Issue {
Milestone : "V1" ,
Number : 4 ,
PosterID : - 1 ,
Title : "what is this repo about?" ,
PosterName : "Ghost" ,
Content : "" ,
PosterEmail : "" ,
Milestone : "V1" ,
State : "closed" ,
PosterID : - 1 ,
IsLocked : true ,
PosterName : "Ghost" ,
Created : time . Unix ( 1598975321 , 0 ) ,
PosterEmail : "" ,
Updated : time . Unix ( 1598975400 , 0 ) ,
State : "closed" ,
Labels : [ ] * base . Label { {
IsLocked : true ,
Name : "Question" ,
Created : time . Unix ( 1598975321 , 0 ) ,
Color : "fbca04" ,
Updated : time . Unix ( 1598975400 , 0 ) ,
Description : "" ,
Labels : [ ] * base . Label { {
} } ,
Name : "Question" ,
Reactions : [ ] * base . Reaction {
Color : "fbca04" ,
{
Description : "" ,
UserID : 689 ,
} } ,
UserName : "6543" ,
Reactions : [ ] * base . Reaction {
Content : "gitea" ,
{
} ,
UserID : 689 ,
{
UserName : "6543" ,
UserID : 689 ,
Content : "gitea" ,
UserName : "6543" ,
} ,
Content : "laugh" ,
{
} ,
UserID : 689 ,
UserName : "6543" ,
Content : "laugh" ,
} ,
} ,
Closed : timePtr ( time . Date ( 2020 , 9 , 1 , 15 , 49 , 34 , 0 , time . UTC ) ) ,
} ,
} ,
Closed : & closed4 ,
{
} , issues [ 0 ] )
Number : 2 ,
assertEqualIssue ( t , & base . Issue {
Title : "Spam" ,
Number : 2 ,
Content : ":(" ,
Title : "Spam" ,
Milestone : "" ,
Content : ":(" ,
PosterID : 689 ,
Milestone : "" ,
PosterName : "6543" ,
PosterID : 689 ,
PosterEmail : "6543@obermui.de" ,
PosterName : "6543" ,
State : "closed" ,
PosterEmail : "6543@noreply.gitea.io" ,
IsLocked : false ,
State : "closed" ,
Created : time . Unix ( 1598919780 , 0 ) ,
IsLocked : false ,
Updated : time . Unix ( 1598969497 , 0 ) ,
Created : time . Unix ( 1598919780 , 0 ) ,
Labels : [ ] * base . Label { {
Updated : closed2 ,
Name : "Invalid" ,
Labels : [ ] * base . Label { {
Color : "d4c5f9" ,
Name : "Invalid" ,
Description : "" ,
Color : "d4c5f9" ,
} } ,
Description : "" ,
Closed : timePtr ( time . Unix ( 1598969497 , 0 ) ) ,
} } ,
} ,
Reactions : nil ,
} , issues )
Closed : & closed2 ,
} , issues [ 1 ] )
comments , _ , err := downloader . GetComments ( base . GetCommentOptions {
comments , _ , err := downloader . GetComments ( base . GetCommentOptions {
IssueNumber : 4 ,
IssueNumber : 4 ,
} )
} )
assert . NoError ( t , err )
assert . NoError ( t , err )
assert . Len ( t , comments , 2 )
assertCommentsEqual ( t , [ ] * base . Comment {
assert . EqualValues ( t , 1598975370 , comments [ 0 ] . Created . Unix ( ) )
assert . EqualValues ( t , 1599070865 , comments [ 0 ] . Updated . Unix ( ) )
assert . EqualValues ( t , 1598975393 , comments [ 1 ] . Created . Unix ( ) )
assert . EqualValues ( t , 1598975393 , comments [ 1 ] . Updated . Unix ( ) )
assert . EqualValues ( t , [ ] * base . Comment {
{
{
IssueIndex : 4 ,
IssueIndex : 4 ,
PosterID : 689 ,
PosterID : 689 ,
PosterName : "6543" ,
PosterName : "6543" ,
PosterEmail : "6543@noreply.gitea.io " ,
PosterEmail : "6543@obermui.de" ,
Created : comments [ 0 ] . Created ,
Created : time . Unix ( 1598975370 , 0 ) ,
Updated : comments [ 0 ] . Updated ,
Updated : time . Unix ( 1599070865 , 0 ) ,
Content : "a really good question!\n\nIt is the used as TESTSET for gitea2gitea repo migration function" ,
Content : "a really good question!\n\nIt is the used as TESTSET for gitea2gitea repo migration function" ,
} ,
} ,
{
{
@ -248,8 +217,8 @@ func TestGiteaDownloadRepo(t *testing.T) {
PosterID : - 1 ,
PosterID : - 1 ,
PosterName : "Ghost" ,
PosterName : "Ghost" ,
PosterEmail : "" ,
PosterEmail : "" ,
Created : comments [ 1 ] . Created ,
Created : time . Unix ( 1598975393 , 0 ) ,
Updated : comments [ 1 ] . Updated ,
Updated : time . Unix ( 1598975393 , 0 ) ,
Content : "Oh!" ,
Content : "Oh!" ,
} ,
} ,
} , comments )
} , comments )
@ -262,12 +231,11 @@ func TestGiteaDownloadRepo(t *testing.T) {
assert . NoError ( t , err )
assert . NoError ( t , err )
assert . False ( t , isEnd )
assert . False ( t , isEnd )
assert . Len ( t , prs , 3 )
assert . Len ( t , prs , 3 )
merged12 := time . Unix ( 1598982934 , 0 )
assertPullRequestEqual ( t , & base . PullRequest {
assertEqualPulls ( t , & base . PullRequest {
Number : 12 ,
Number : 12 ,
PosterID : 689 ,
PosterID : 689 ,
PosterName : "6543" ,
PosterName : "6543" ,
PosterEmail : "6543@noreply.gitea.io " ,
PosterEmail : "6543@obermui.de " ,
Title : "Dont Touch" ,
Title : "Dont Touch" ,
Content : "\r\nadd dont touch note" ,
Content : "\r\nadd dont touch note" ,
Milestone : "V2 Finalize" ,
Milestone : "V2 Finalize" ,
@ -275,10 +243,8 @@ func TestGiteaDownloadRepo(t *testing.T) {
IsLocked : false ,
IsLocked : false ,
Created : time . Unix ( 1598982759 , 0 ) ,
Created : time . Unix ( 1598982759 , 0 ) ,
Updated : time . Unix ( 1599023425 , 0 ) ,
Updated : time . Unix ( 1599023425 , 0 ) ,
Closed : & merged12 ,
Closed : timePtr ( time . Unix ( 1598982934 , 0 ) ) ,
Assignees : [ ] string { "techknowlogick" } ,
Assignees : [ ] string { "techknowlogick" } ,
Labels : [ ] * base . Label { } ,
Base : base . PullRequestBranch {
Base : base . PullRequestBranch {
CloneURL : "" ,
CloneURL : "" ,
Ref : "master" ,
Ref : "master" ,
@ -294,74 +260,59 @@ func TestGiteaDownloadRepo(t *testing.T) {
OwnerName : "6543-forks" ,
OwnerName : "6543-forks" ,
} ,
} ,
Merged : true ,
Merged : true ,
MergedTime : & merged12 ,
MergedTime : timePtr ( time . Unix ( 1598982934 , 0 ) ) ,
MergeCommitSHA : "827aa28a907853e5ddfa40c8f9bc52471a2685fd" ,
MergeCommitSHA : "827aa28a907853e5ddfa40c8f9bc52471a2685fd" ,
PatchURL : "https://gitea.com/gitea/test_repo/pulls/12.patch" ,
PatchURL : "https://gitea.com/gitea/test_repo/pulls/12.patch" ,
} , prs [ 1 ] )
} , prs [ 1 ] )
reviews , err := downloader . GetReviews ( 7 )
reviews , err := downloader . GetReviews ( 7 )
assert . NoError ( t , err )
assert . NoError ( t , err )
if assert . Len ( t , reviews , 3 ) {
assertReviewsEqual ( t , [ ] * base . Review {
assert . EqualValues ( t , 689 , reviews [ 0 ] . ReviewerID )
{
assert . EqualValues ( t , "6543" , reviews [ 0 ] . ReviewerName )
ID : 1770 ,
assert . EqualValues ( t , "techknowlogick" , reviews [ 1 ] . ReviewerName )
IssueIndex : 7 ,
assert . EqualValues ( t , "techknowlogick" , reviews [ 2 ] . ReviewerName )
ReviewerID : 689 ,
assert . False ( t , reviews [ 1 ] . Official )
ReviewerName : "6543" ,
assert . EqualValues ( t , "I think this needs some changes" , reviews [ 1 ] . Content )
CommitID : "187ece0cb6631e2858a6872e5733433bb3ca3b03" ,
assert . EqualValues ( t , "REQUEST_CHANGES" , reviews [ 1 ] . State )
CreatedAt : time . Date ( 2020 , 9 , 1 , 16 , 12 , 58 , 0 , time . UTC ) ,
assert . True ( t , reviews [ 2 ] . Official )
State : "COMMENT" , // TODO
assert . EqualValues ( t , "looks good" , reviews [ 2 ] . Content )
Comments : [ ] * base . ReviewComment {
assert . EqualValues ( t , "APPROVED" , reviews [ 2 ] . State )
{
ID : 116561 ,
// TODO: https://github.com/go-gitea/gitea/issues/12846
InReplyTo : 0 ,
// assert.EqualValues(t, 9, reviews[1].ReviewerID)
Content : "is one `\\newline` to less?" ,
// assert.EqualValues(t, 9, reviews[2].ReviewerID)
TreePath : "README.md" ,
DiffHunk : "@@ -2,3 +2,3 @@\n \n-Test repository for testing migration from gitea 2 gitea\n\\ No newline at end of file\n+Test repository for testing migration from gitea 2 gitea" ,
assert . Len ( t , reviews [ 0 ] . Comments , 1 )
Position : 0 ,
assert . EqualValues ( t , & base . ReviewComment {
Line : 4 ,
ID : 116561 ,
CommitID : "187ece0cb6631e2858a6872e5733433bb3ca3b03" ,
InReplyTo : 0 ,
PosterID : 689 ,
Content : "is one `\\newline` to less?" ,
Reactions : nil ,
TreePath : "README.md" ,
CreatedAt : time . Date ( 2020 , 9 , 1 , 16 , 12 , 58 , 0 , time . UTC ) ,
DiffHunk : "@@ -2,3 +2,3 @@\n \n-Test repository for testing migration from gitea 2 gitea\n\\ No newline at end of file\n+Test repository for testing migration from gitea 2 gitea" ,
UpdatedAt : time . Date ( 2020 , 9 , 1 , 16 , 12 , 58 , 0 , time . UTC ) ,
Position : 0 ,
} ,
Line : 4 ,
} ,
CommitID : "187ece0cb6631e2858a6872e5733433bb3ca3b03" ,
} ,
PosterID : 689 ,
{
Reactions : nil ,
ID : 1771 ,
CreatedAt : time . Date ( 2020 , 9 , 1 , 16 , 12 , 58 , 0 , time . UTC ) ,
IssueIndex : 7 ,
UpdatedAt : time . Date ( 2020 , 9 , 1 , 16 , 12 , 58 , 0 , time . UTC ) ,
ReviewerID : 9 ,
} , reviews [ 0 ] . Comments [ 0 ] )
ReviewerName : "techknowlogick" ,
}
CommitID : "187ece0cb6631e2858a6872e5733433bb3ca3b03" ,
}
CreatedAt : time . Date ( 2020 , 9 , 1 , 17 , 6 , 47 , 0 , time . UTC ) ,
State : "REQUEST_CHANGES" , // TODO
func assertEqualPulls ( t * testing . T , pullExp , pullGet * base . PullRequest ) {
Content : "I think this needs some changes" ,
assertEqualIssue ( t , pull2issue ( pullExp ) , pull2issue ( pullGet ) )
} ,
assert . EqualValues ( t , 0 , pullGet . OriginalNumber )
{
assert . EqualValues ( t , pullExp . PatchURL , pullGet . PatchURL )
ID : 1772 ,
assert . EqualValues ( t , pullExp . Merged , pullGet . Merged )
IssueIndex : 7 ,
assert . EqualValues ( t , pullExp . MergedTime . Unix ( ) , pullGet . MergedTime . Unix ( ) )
ReviewerID : 9 ,
assert . EqualValues ( t , pullExp . MergeCommitSHA , pullGet . MergeCommitSHA )
ReviewerName : "techknowlogick" ,
assert . EqualValues ( t , pullExp . Base , pullGet . Base )
CommitID : "187ece0cb6631e2858a6872e5733433bb3ca3b03" ,
assert . EqualValues ( t , pullExp . Head , pullGet . Head )
CreatedAt : time . Date ( 2020 , 9 , 1 , 17 , 19 , 51 , 0 , time . UTC ) ,
}
State : base . ReviewStateApproved ,
Official : true ,
func pull2issue ( pull * base . PullRequest ) * base . Issue {
Content : "looks good" ,
return & base . Issue {
} ,
Number : pull . Number ,
} , reviews )
PosterID : pull . PosterID ,
PosterName : pull . PosterName ,
PosterEmail : pull . PosterEmail ,
Title : pull . Title ,
Content : pull . Content ,
Milestone : pull . Milestone ,
State : pull . State ,
IsLocked : pull . IsLocked ,
Created : pull . Created ,
Updated : pull . Updated ,
Closed : pull . Closed ,
Labels : pull . Labels ,
Reactions : pull . Reactions ,
Assignees : pull . Assignees ,
}
}
}