diff options
author | singuliere <35190819+singuliere@users.noreply.github.com> | 2022-02-01 19:20:28 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-01 13:20:28 -0500 |
commit | 367894adc820964135095e50c1ae6d6a0b2b0310 (patch) | |
tree | 6b773809f2c3c722251e902b244a074bdf8ec1a5 /services/migrations/gitea_uploader_test.go | |
parent | 6f6b8491da0d98121c8cab5c48f95425efa9606d (diff) | |
download | gitea-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.go | 48 |
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) +} |