mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 02:46:04 +01:00 
			
		
		
		
	* Migrate reactions when migrating repository from github * fix missed sleep * fix tests * update reactions when external user binding * Fix test * fix tests * change the copy head * fix test * fix migrator add/delete reaction
		
			
				
	
	
		
			360 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			360 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // 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/modules/migrations/base"
 | |
| 
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| )
 | |
| 
 | |
| func assertMilestoneEqual(t *testing.T, description, title, dueOn, created, updated, closed, state string, ms *base.Milestone) {
 | |
| 	var tmPtr *time.Time
 | |
| 	if dueOn != "" {
 | |
| 		tm, err := time.Parse("2006-01-02 15:04:05 -0700 MST", dueOn)
 | |
| 		assert.NoError(t, err)
 | |
| 		tmPtr = &tm
 | |
| 	}
 | |
| 	var (
 | |
| 		createdTM time.Time
 | |
| 		updatedTM *time.Time
 | |
| 		closedTM  *time.Time
 | |
| 	)
 | |
| 	if created != "" {
 | |
| 		var err error
 | |
| 		createdTM, err = time.Parse("2006-01-02 15:04:05 -0700 MST", created)
 | |
| 		assert.NoError(t, err)
 | |
| 	}
 | |
| 	if updated != "" {
 | |
| 		updatedTemp, err := time.Parse("2006-01-02 15:04:05 -0700 MST", updated)
 | |
| 		assert.NoError(t, err)
 | |
| 		updatedTM = &updatedTemp
 | |
| 	}
 | |
| 	if closed != "" {
 | |
| 		closedTemp, err := time.Parse("2006-01-02 15:04:05 -0700 MST", closed)
 | |
| 		assert.NoError(t, err)
 | |
| 		closedTM = &closedTemp
 | |
| 	}
 | |
| 
 | |
| 	assert.EqualValues(t, &base.Milestone{
 | |
| 		Description: description,
 | |
| 		Title:       title,
 | |
| 		Deadline:    tmPtr,
 | |
| 		State:       state,
 | |
| 		Created:     createdTM,
 | |
| 		Updated:     updatedTM,
 | |
| 		Closed:      closedTM,
 | |
| 	}, ms)
 | |
| }
 | |
| 
 | |
| func assertLabelEqual(t *testing.T, name, color, description string, label *base.Label) {
 | |
| 	assert.EqualValues(t, &base.Label{
 | |
| 		Name:        name,
 | |
| 		Color:       color,
 | |
| 		Description: description,
 | |
| 	}, label)
 | |
| }
 | |
| 
 | |
| func TestGitHubDownloadRepo(t *testing.T) {
 | |
| 	downloader := NewGithubDownloaderV3("", "", "go-gitea", "test_repo")
 | |
| 	repo, err := downloader.GetRepoInfo()
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.EqualValues(t, &base.Repository{
 | |
| 		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",
 | |
| 	}, repo)
 | |
| 
 | |
| 	topics, err := downloader.GetTopics()
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.Contains(t, topics, "gitea")
 | |
| 
 | |
| 	milestones, err := downloader.GetMilestones()
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.True(t, len(milestones) >= 2)
 | |
| 
 | |
| 	for _, milestone := range milestones {
 | |
| 		switch milestone.Title {
 | |
| 		case "1.0.0":
 | |
| 			assertMilestoneEqual(t, "Milestone 1.0.0", "1.0.0", "2019-11-11 08:00:00 +0000 UTC",
 | |
| 				"2019-11-12 19:37:08 +0000 UTC",
 | |
| 				"2019-11-12 21:56:17 +0000 UTC",
 | |
| 				"2019-11-12 19:45:49 +0000 UTC",
 | |
| 				"closed", milestone)
 | |
| 		case "1.1.0":
 | |
| 			assertMilestoneEqual(t, "Milestone 1.1.0", "1.1.0", "2019-11-12 08:00:00 +0000 UTC",
 | |
| 				"2019-11-12 19:37:25 +0000 UTC",
 | |
| 				"2019-11-12 21:39:27 +0000 UTC",
 | |
| 				"2019-11-12 19:45:46 +0000 UTC",
 | |
| 				"closed", milestone)
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	labels, err := downloader.GetLabels()
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.True(t, len(labels) >= 8)
 | |
| 	for _, l := range labels {
 | |
| 		switch l.Name {
 | |
| 		case "bug":
 | |
| 			assertLabelEqual(t, "bug", "d73a4a", "Something isn't working", l)
 | |
| 		case "documentation":
 | |
| 			assertLabelEqual(t, "documentation", "0075ca", "Improvements or additions to documentation", l)
 | |
| 		case "duplicate":
 | |
| 			assertLabelEqual(t, "duplicate", "cfd3d7", "This issue or pull request already exists", l)
 | |
| 		case "enhancement":
 | |
| 			assertLabelEqual(t, "enhancement", "a2eeef", "New feature or request", l)
 | |
| 		case "good first issue":
 | |
| 			assertLabelEqual(t, "good first issue", "7057ff", "Good for newcomers", l)
 | |
| 		case "help wanted":
 | |
| 			assertLabelEqual(t, "help wanted", "008672", "Extra attention is needed", l)
 | |
| 		case "invalid":
 | |
| 			assertLabelEqual(t, "invalid", "e4e669", "This doesn't seem right", l)
 | |
| 		case "question":
 | |
| 			assertLabelEqual(t, "question", "d876e3", "Further information is requested", l)
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	releases, err := downloader.GetReleases()
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.EqualValues(t, []*base.Release{
 | |
| 		{
 | |
| 			TagName:         "v0.9.99",
 | |
| 			TargetCommitish: "master",
 | |
| 			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",
 | |
| 		},
 | |
| 	}, releases[len(releases)-1:])
 | |
| 
 | |
| 	// downloader.GetIssues()
 | |
| 	issues, isEnd, err := downloader.GetIssues(1, 2)
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.EqualValues(t, 2, len(issues))
 | |
| 	assert.False(t, isEnd)
 | |
| 
 | |
| 	var (
 | |
| 		closed1 = time.Date(2019, 11, 12, 20, 22, 22, 0, time.UTC)
 | |
| 		closed2 = time.Date(2019, 11, 12, 21, 1, 31, 0, time.UTC)
 | |
| 	)
 | |
| 	assert.EqualValues(t, []*base.Issue{
 | |
| 		{
 | |
| 			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",
 | |
| 			State:      "closed",
 | |
| 			Created:    time.Date(2019, 11, 9, 17, 0, 29, 0, time.UTC),
 | |
| 			Updated:    time.Date(2019, 11, 12, 20, 29, 53, 0, time.UTC),
 | |
| 			Labels: []*base.Label{
 | |
| 				{
 | |
| 					Name:        "bug",
 | |
| 					Color:       "d73a4a",
 | |
| 					Description: "Something isn't working",
 | |
| 				},
 | |
| 				{
 | |
| 					Name:        "good first issue",
 | |
| 					Color:       "7057ff",
 | |
| 					Description: "Good for newcomers",
 | |
| 				},
 | |
| 			},
 | |
| 			Reactions: []*base.Reaction{
 | |
| 				{
 | |
| 					UserID:   1669571,
 | |
| 					UserName: "mrsdizzie",
 | |
| 					Content:  "+1",
 | |
| 				},
 | |
| 			},
 | |
| 			Closed: &closed1,
 | |
| 		},
 | |
| 		{
 | |
| 			Number:     2,
 | |
| 			Title:      "Test issue",
 | |
| 			Content:    "This is test issue 2, do not touch!",
 | |
| 			Milestone:  "1.1.0",
 | |
| 			PosterID:   1669571,
 | |
| 			PosterName: "mrsdizzie",
 | |
| 			State:      "closed",
 | |
| 			Created:    time.Date(2019, 11, 12, 21, 0, 6, 0, time.UTC),
 | |
| 			Updated:    time.Date(2019, 11, 12, 22, 7, 14, 0, time.UTC),
 | |
| 			Labels: []*base.Label{
 | |
| 				{
 | |
| 					Name:        "duplicate",
 | |
| 					Color:       "cfd3d7",
 | |
| 					Description: "This issue or pull request already exists",
 | |
| 				},
 | |
| 			},
 | |
| 			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",
 | |
| 				},
 | |
| 			},
 | |
| 			Closed: &closed2,
 | |
| 		},
 | |
| 	}, issues)
 | |
| 
 | |
| 	// downloader.GetComments()
 | |
| 	comments, err := downloader.GetComments(2)
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.EqualValues(t, 2, len(comments))
 | |
| 	assert.EqualValues(t, []*base.Comment{
 | |
| 		{
 | |
| 			IssueIndex: 2,
 | |
| 			PosterID:   1669571,
 | |
| 			PosterName: "mrsdizzie",
 | |
| 			Created:    time.Date(2019, 11, 12, 21, 0, 13, 0, time.UTC),
 | |
| 			Updated:    time.Date(2019, 11, 12, 21, 0, 13, 0, time.UTC),
 | |
| 			Content:    "This is a comment",
 | |
| 			Reactions: []*base.Reaction{
 | |
| 				{
 | |
| 					UserID:   1669571,
 | |
| 					UserName: "mrsdizzie",
 | |
| 					Content:  "+1",
 | |
| 				},
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			IssueIndex: 2,
 | |
| 			PosterID:   1669571,
 | |
| 			PosterName: "mrsdizzie",
 | |
| 			Created:    time.Date(2019, 11, 12, 22, 7, 14, 0, time.UTC),
 | |
| 			Updated:    time.Date(2019, 11, 12, 22, 7, 14, 0, time.UTC),
 | |
| 			Content:    "A second comment",
 | |
| 			Reactions:  nil,
 | |
| 		},
 | |
| 	}, comments[:2])
 | |
| 
 | |
| 	// downloader.GetPullRequests()
 | |
| 	prs, err := downloader.GetPullRequests(1, 2)
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.EqualValues(t, 2, len(prs))
 | |
| 
 | |
| 	closed1 = time.Date(2019, 11, 12, 21, 39, 27, 0, time.UTC)
 | |
| 	var merged1 = time.Date(2019, 11, 12, 21, 39, 27, 0, time.UTC)
 | |
| 
 | |
| 	assert.EqualValues(t, []*base.PullRequest{
 | |
| 		{
 | |
| 			Number:     3,
 | |
| 			Title:      "Update README.md",
 | |
| 			Content:    "add warning to readme",
 | |
| 			Milestone:  "1.1.0",
 | |
| 			PosterID:   1669571,
 | |
| 			PosterName: "mrsdizzie",
 | |
| 			State:      "closed",
 | |
| 			Created:    time.Date(2019, 11, 12, 21, 21, 43, 0, time.UTC),
 | |
| 			Updated:    time.Date(2019, 11, 12, 21, 39, 28, 0, time.UTC),
 | |
| 			Labels: []*base.Label{
 | |
| 				{
 | |
| 					Name:        "documentation",
 | |
| 					Color:       "0075ca",
 | |
| 					Description: "Improvements or additions to documentation",
 | |
| 				},
 | |
| 			},
 | |
| 			PatchURL: "https://github.com/go-gitea/test_repo/pull/3.patch",
 | |
| 			Head: base.PullRequestBranch{
 | |
| 				Ref:      "master",
 | |
| 				CloneURL: "https://github.com/mrsdizzie/test_repo.git",
 | |
| 				SHA:      "076160cf0b039f13e5eff19619932d181269414b",
 | |
| 				RepoName: "test_repo",
 | |
| 
 | |
| 				OwnerName: "mrsdizzie",
 | |
| 			},
 | |
| 			Base: base.PullRequestBranch{
 | |
| 				Ref:       "master",
 | |
| 				SHA:       "72866af952e98d02a73003501836074b286a78f6",
 | |
| 				OwnerName: "go-gitea",
 | |
| 				RepoName:  "test_repo",
 | |
| 			},
 | |
| 			Closed:         &closed1,
 | |
| 			Merged:         true,
 | |
| 			MergedTime:     &merged1,
 | |
| 			MergeCommitSHA: "f32b0a9dfd09a60f616f29158f772cedd89942d2",
 | |
| 		},
 | |
| 		{
 | |
| 			Number:     4,
 | |
| 			Title:      "Test branch",
 | |
| 			Content:    "do not merge this PR",
 | |
| 			Milestone:  "1.0.0",
 | |
| 			PosterID:   1669571,
 | |
| 			PosterName: "mrsdizzie",
 | |
| 			State:      "open",
 | |
| 			Created:    time.Date(2019, 11, 12, 21, 54, 18, 0, time.UTC),
 | |
| 			Updated:    time.Date(2020, 1, 4, 11, 30, 1, 0, time.UTC),
 | |
| 			Labels: []*base.Label{
 | |
| 				{
 | |
| 					Name:        "bug",
 | |
| 					Color:       "d73a4a",
 | |
| 					Description: "Something isn't working",
 | |
| 				},
 | |
| 			},
 | |
| 			PatchURL: "https://github.com/go-gitea/test_repo/pull/4.patch",
 | |
| 			Head: base.PullRequestBranch{
 | |
| 				Ref:       "test-branch",
 | |
| 				SHA:       "2be9101c543658591222acbee3eb799edfc3853d",
 | |
| 				RepoName:  "test_repo",
 | |
| 				OwnerName: "mrsdizzie",
 | |
| 				CloneURL:  "https://github.com/mrsdizzie/test_repo.git",
 | |
| 			},
 | |
| 			Base: base.PullRequestBranch{
 | |
| 				Ref:       "master",
 | |
| 				SHA:       "f32b0a9dfd09a60f616f29158f772cedd89942d2",
 | |
| 				OwnerName: "go-gitea",
 | |
| 				RepoName:  "test_repo",
 | |
| 			},
 | |
| 			Merged:         false,
 | |
| 			MergeCommitSHA: "565d1208f5fffdc1c5ae1a2436491eb9a5e4ebae",
 | |
| 			Reactions: []*base.Reaction{
 | |
| 				{
 | |
| 					UserID:   81045,
 | |
| 					UserName: "lunny",
 | |
| 					Content:  "heart",
 | |
| 				},
 | |
| 				{
 | |
| 					UserID:   81045,
 | |
| 					UserName: "lunny",
 | |
| 					Content:  "+1",
 | |
| 				},
 | |
| 			},
 | |
| 		},
 | |
| 	}, prs)
 | |
| }
 |