aboutsummaryrefslogtreecommitdiffstats
path: root/services/repository/transfer_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'services/repository/transfer_test.go')
-rw-r--r--services/repository/transfer_test.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/services/repository/transfer_test.go b/services/repository/transfer_test.go
index d55c76ea47..c3f03d6638 100644
--- a/services/repository/transfer_test.go
+++ b/services/repository/transfer_test.go
@@ -7,6 +7,7 @@ import (
"sync"
"testing"
+ "code.gitea.io/gitea/models"
activities_model "code.gitea.io/gitea/models/activities"
"code.gitea.io/gitea/models/db"
"code.gitea.io/gitea/models/organization"
@@ -78,3 +79,45 @@ func TestStartRepositoryTransferSetPermission(t *testing.T) {
unittest.CheckConsistencyFor(t, &repo_model.Repository{}, &user_model.User{}, &organization.Team{})
}
+
+func TestRepositoryTransfer(t *testing.T) {
+ assert.NoError(t, unittest.PrepareTestDatabase())
+
+ doer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 3})
+ repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 3})
+
+ transfer, err := models.GetPendingRepositoryTransfer(db.DefaultContext, repo)
+ assert.NoError(t, err)
+ assert.NotNil(t, transfer)
+
+ // Cancel transfer
+ assert.NoError(t, CancelRepositoryTransfer(db.DefaultContext, repo))
+
+ transfer, err = models.GetPendingRepositoryTransfer(db.DefaultContext, repo)
+ assert.Error(t, err)
+ assert.Nil(t, transfer)
+ assert.True(t, models.IsErrNoPendingTransfer(err))
+
+ user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
+
+ assert.NoError(t, models.CreatePendingRepositoryTransfer(db.DefaultContext, doer, user2, repo.ID, nil))
+
+ transfer, err = models.GetPendingRepositoryTransfer(db.DefaultContext, repo)
+ assert.Nil(t, err)
+ assert.NoError(t, transfer.LoadAttributes(db.DefaultContext))
+ assert.Equal(t, "user2", transfer.Recipient.Name)
+
+ org6 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
+
+ // Only transfer can be started at any given time
+ err = models.CreatePendingRepositoryTransfer(db.DefaultContext, doer, org6, repo.ID, nil)
+ assert.Error(t, err)
+ assert.True(t, models.IsErrRepoTransferInProgress(err))
+
+ // Unknown user
+ err = models.CreatePendingRepositoryTransfer(db.DefaultContext, doer, &user_model.User{ID: 1000, LowerName: "user1000"}, repo.ID, nil)
+ assert.Error(t, err)
+
+ // Cancel transfer
+ assert.NoError(t, CancelRepositoryTransfer(db.DefaultContext, repo))
+}