aboutsummaryrefslogtreecommitdiffstats
path: root/services/migrations/gitea_uploader_test.go
diff options
context:
space:
mode:
authorsinguliere <35190819+singuliere@users.noreply.github.com>2022-02-01 19:20:28 +0100
committerGitHub <noreply@github.com>2022-02-01 13:20:28 -0500
commit367894adc820964135095e50c1ae6d6a0b2b0310 (patch)
tree6b773809f2c3c722251e902b244a074bdf8ec1a5 /services/migrations/gitea_uploader_test.go
parent6f6b8491da0d98121c8cab5c48f95425efa9606d (diff)
downloadgitea-367894adc820964135095e50c1ae6d6a0b2b0310.tar.gz
gitea-367894adc820964135095e50c1ae6d6a0b2b0310.zip
add test coverage for original author conversion during migrations (#18506)
* add test coverage for original author conversion during migrations And create a function to factorize a code snippet that is repeated five times and would otherwise be more difficult to test and maintain consistently. Signed-off-by: Loïc Dachary <loic@dachary.org> * fix variable scope and int64 formatting * add missing calls to remapExternalUser and fix misplaced %d Co-authored-by: Loïc Dachary <loic@dachary.org> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com> Co-authored-by: techknowlogick <techknowlogick@gitea.io>
Diffstat (limited to 'services/migrations/gitea_uploader_test.go')
-rw-r--r--services/migrations/gitea_uploader_test.go48
1 files changed, 48 insertions, 0 deletions
diff --git a/services/migrations/gitea_uploader_test.go b/services/migrations/gitea_uploader_test.go
index 7d4f77eac8..7552245d74 100644
--- a/services/migrations/gitea_uploader_test.go
+++ b/services/migrations/gitea_uploader_test.go
@@ -7,6 +7,7 @@ package migrations
import (
"context"
+ "strconv"
"testing"
"time"
@@ -115,3 +116,50 @@ func TestGiteaUploadRepo(t *testing.T) {
assert.NoError(t, pulls[0].Issue.LoadDiscussComments())
assert.Len(t, pulls[0].Issue.Comments, 2)
}
+
+func TestGiteaUploadRemapExternalUser(t *testing.T) {
+ unittest.PrepareTestEnv(t)
+ doer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}).(*user_model.User)
+
+ repoName := "migrated"
+ uploader := NewGiteaLocalUploader(context.Background(), doer, doer.Name, repoName)
+ uploader.gitServiceType = structs.GiteaService
+
+ externalID := int64(1234567)
+ externalName := "url.or.something"
+ source := base.Release{
+ PublisherID: externalID,
+ PublisherName: externalName,
+ }
+
+ //
+ // When there is no user linked to the external ID, the migrated data is authored
+ // by the doer
+ //
+ target := models.Release{}
+ err := uploader.remapExternalUser(&source, &target)
+ assert.NoError(t, err)
+ assert.EqualValues(t, doer.ID, target.GetUserID())
+
+ //
+ // Link the external ID to an existing user
+ //
+ linkedUser := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}).(*user_model.User)
+ externalLoginUser := &user_model.ExternalLoginUser{
+ ExternalID: strconv.FormatInt(externalID, 10),
+ UserID: linkedUser.ID,
+ LoginSourceID: 0,
+ Provider: structs.GiteaService.Name(),
+ }
+ err = user_model.LinkExternalToUser(linkedUser, externalLoginUser)
+ assert.NoError(t, err)
+
+ //
+ // When a user is linked to the external ID, it becomes the author of
+ // the migrated data
+ //
+ target = models.Release{}
+ err = uploader.remapExternalUser(&source, &target)
+ assert.NoError(t, err)
+ assert.EqualValues(t, target.GetUserID(), linkedUser.ID)
+}