diff options
author | Bogdan Petrea <bogdan@presslabs.com> | 2019-03-15 14:19:09 +0000 |
---|---|---|
committer | techknowlogick <matti@mdranta.net> | 2019-03-15 10:19:09 -0400 |
commit | 583968f274b85d1c9184c614cbdae763899f7827 (patch) | |
tree | ce8b6dbb8af569f777e3c8fd66159666e40a0d7b /integrations | |
parent | 7780ea88907197abf6166bedc8b3021489444ea3 (diff) | |
download | gitea-583968f274b85d1c9184c614cbdae763899f7827.tar.gz gitea-583968f274b85d1c9184c614cbdae763899f7827.zip |
Return 409 when creating repo if it already exists. (#6330)
Diffstat (limited to 'integrations')
-rw-r--r-- | integrations/api_repo_test.go | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/integrations/api_repo_test.go b/integrations/api_repo_test.go index 237c4eea9a..a919a8370b 100644 --- a/integrations/api_repo_test.go +++ b/integrations/api_repo_test.go @@ -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.") + }) +} |