aboutsummaryrefslogtreecommitdiffstats
path: root/services/repository/create_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'services/repository/create_test.go')
-rw-r--r--services/repository/create_test.go57
1 files changed, 57 insertions, 0 deletions
diff --git a/services/repository/create_test.go b/services/repository/create_test.go
new file mode 100644
index 0000000000..fe464c1441
--- /dev/null
+++ b/services/repository/create_test.go
@@ -0,0 +1,57 @@
+// Copyright 2025 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package repository
+
+import (
+ "os"
+ "testing"
+
+ "code.gitea.io/gitea/models/db"
+ repo_model "code.gitea.io/gitea/models/repo"
+ "code.gitea.io/gitea/models/unittest"
+ user_model "code.gitea.io/gitea/models/user"
+ "code.gitea.io/gitea/modules/git"
+ "code.gitea.io/gitea/modules/util"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestCreateRepositoryDirectly(t *testing.T) {
+ assert.NoError(t, unittest.PrepareTestDatabase())
+
+ // a successful creating repository
+ user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
+
+ createdRepo, err := CreateRepositoryDirectly(git.DefaultContext, user2, user2, CreateRepoOptions{
+ Name: "created-repo",
+ }, true)
+ assert.NoError(t, err)
+ assert.NotNil(t, createdRepo)
+
+ exist, err := util.IsExist(repo_model.RepoPath(user2.Name, createdRepo.Name))
+ assert.NoError(t, err)
+ assert.True(t, exist)
+
+ unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{OwnerName: user2.Name, Name: createdRepo.Name})
+
+ err = DeleteRepositoryDirectly(db.DefaultContext, createdRepo.ID)
+ assert.NoError(t, err)
+
+ // a failed creating because some mock data
+ // create the repository directory so that the creation will fail after database record created.
+ assert.NoError(t, os.MkdirAll(repo_model.RepoPath(user2.Name, createdRepo.Name), os.ModePerm))
+
+ createdRepo2, err := CreateRepositoryDirectly(db.DefaultContext, user2, user2, CreateRepoOptions{
+ Name: "created-repo",
+ }, true)
+ assert.Nil(t, createdRepo2)
+ assert.Error(t, err)
+
+ // assert the cleanup is successful
+ unittest.AssertNotExistsBean(t, &repo_model.Repository{OwnerName: user2.Name, Name: createdRepo.Name})
+
+ exist, err = util.IsExist(repo_model.RepoPath(user2.Name, createdRepo.Name))
+ assert.NoError(t, err)
+ assert.False(t, exist)
+}