mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 11:41:32 +01:00 
			
		
		
		
	Return 409 when creating repo if it already exists. (#6330)
This commit is contained in:
		
							parent
							
								
									7780ea8890
								
							
						
					
					
						commit
						583968f274
					
				| @ -6,7 +6,10 @@ package integrations | ||||
| 
 | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"io/ioutil" | ||||
| 	"net/http" | ||||
| 	"net/url" | ||||
| 	"os" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"code.gitea.io/gitea/models" | ||||
| @ -291,6 +294,44 @@ func TestAPIRepoMigrate(t *testing.T) { | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func TestAPIRepoMigrateConflict(t *testing.T) { | ||||
| 	onGiteaRun(t, testAPIRepoMigrateConflict) | ||||
| } | ||||
| 
 | ||||
| func testAPIRepoMigrateConflict(t *testing.T, u *url.URL) { | ||||
| 	username := "user2" | ||||
| 	baseAPITestContext := NewAPITestContext(t, username, "repo1") | ||||
| 
 | ||||
| 	u.Path = baseAPITestContext.GitPath() | ||||
| 
 | ||||
| 	t.Run("Existing", func(t *testing.T) { | ||||
| 		httpContext := baseAPITestContext | ||||
| 
 | ||||
| 		httpContext.Reponame = "repo-tmp-17" | ||||
| 		dstPath, err := ioutil.TempDir("", httpContext.Reponame) | ||||
| 		assert.NoError(t, err) | ||||
| 		defer os.RemoveAll(dstPath) | ||||
| 		t.Run("CreateRepo", doAPICreateRepository(httpContext, false)) | ||||
| 
 | ||||
| 		user, err := models.GetUserByName(httpContext.Username) | ||||
| 		assert.NoError(t, err) | ||||
| 		userID := user.ID | ||||
| 
 | ||||
| 		cloneURL := "https://github.com/go-gitea/git.git" | ||||
| 
 | ||||
| 		req := NewRequestWithJSON(t, "POST", "/api/v1/repos/migrate?token="+httpContext.Token, | ||||
| 			&api.MigrateRepoOption{ | ||||
| 				CloneAddr: cloneURL, | ||||
| 				UID:       int(userID), | ||||
| 				RepoName:  httpContext.Reponame, | ||||
| 			}) | ||||
| 		resp := httpContext.Session.MakeRequest(t, req, http.StatusConflict) | ||||
| 		respJSON := map[string]string{} | ||||
| 		DecodeJSON(t, resp, &respJSON) | ||||
| 		assert.Equal(t, respJSON["message"], "The repository with the same name already exists.") | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
| func TestAPIOrgRepoCreate(t *testing.T) { | ||||
| 	testCases := []struct { | ||||
| 		ctxUserID         int64 | ||||
| @ -313,3 +354,33 @@ func TestAPIOrgRepoCreate(t *testing.T) { | ||||
| 		session.MakeRequest(t, req, testCase.expectedStatus) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func TestAPIRepoCreateConflict(t *testing.T) { | ||||
| 	onGiteaRun(t, testAPIRepoCreateConflict) | ||||
| } | ||||
| 
 | ||||
| func testAPIRepoCreateConflict(t *testing.T, u *url.URL) { | ||||
| 	username := "user2" | ||||
| 	baseAPITestContext := NewAPITestContext(t, username, "repo1") | ||||
| 
 | ||||
| 	u.Path = baseAPITestContext.GitPath() | ||||
| 
 | ||||
| 	t.Run("Existing", func(t *testing.T) { | ||||
| 		httpContext := baseAPITestContext | ||||
| 
 | ||||
| 		httpContext.Reponame = "repo-tmp-17" | ||||
| 		dstPath, err := ioutil.TempDir("", httpContext.Reponame) | ||||
| 		assert.NoError(t, err) | ||||
| 		defer os.RemoveAll(dstPath) | ||||
| 		t.Run("CreateRepo", doAPICreateRepository(httpContext, false)) | ||||
| 
 | ||||
| 		req := NewRequestWithJSON(t, "POST", "/api/v1/user/repos?token="+httpContext.Token, | ||||
| 			&api.CreateRepoOption{ | ||||
| 				Name: httpContext.Reponame, | ||||
| 			}) | ||||
| 		resp := httpContext.Session.MakeRequest(t, req, http.StatusConflict) | ||||
| 		respJSON := map[string]string{} | ||||
| 		DecodeJSON(t, resp, &respJSON) | ||||
| 		assert.Equal(t, respJSON["message"], "The repository with the same name already exists.") | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| @ -226,8 +226,9 @@ func CreateUserRepo(ctx *context.APIContext, owner *models.User, opt api.CreateR | ||||
| 		AutoInit:    opt.AutoInit, | ||||
| 	}) | ||||
| 	if err != nil { | ||||
| 		if models.IsErrRepoAlreadyExist(err) || | ||||
| 			models.IsErrNameReserved(err) || | ||||
| 		if models.IsErrRepoAlreadyExist(err) { | ||||
| 			ctx.Error(409, "", "The repository with the same name already exists.") | ||||
| 		} else if models.IsErrNameReserved(err) || | ||||
| 			models.IsErrNamePatternNotAllowed(err) { | ||||
| 			ctx.Error(422, "", err) | ||||
| 		} else { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user