diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2020-01-25 10:48:22 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-25 10:48:22 +0800 |
commit | f2d12f7b034e32d0e7cc7b60e7ad015af122db3f (patch) | |
tree | 5009bac317f4dbed07c459aa5361583a4f3fc2b7 /integrations/pull_create_test.go | |
parent | ee26f042c421d90cbd3f852427de8b98f1cc71a7 (diff) | |
download | gitea-f2d12f7b034e32d0e7cc7b60e7ad015af122db3f.tar.gz gitea-f2d12f7b034e32d0e7cc7b60e7ad015af122db3f.zip |
Fix pull view when head repository or head branch missed and close related pull requests when delete head repository or head branch (#9927)
* fix pull view when head repository or head branch missed and close related pull requests when delete branch
* fix pull view broken when head repository deleted
* close pull requests when head repositories deleted
* Add tests for broken pull request head repository or branch
* fix typo
* ignore special error when close pull request
Co-authored-by: Lauris BH <lauris@nix.lv>
Diffstat (limited to 'integrations/pull_create_test.go')
-rw-r--r-- | integrations/pull_create_test.go | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/integrations/pull_create_test.go b/integrations/pull_create_test.go index 84bcbff0dc..d0c78a046c 100644 --- a/integrations/pull_create_test.go +++ b/integrations/pull_create_test.go @@ -106,3 +106,57 @@ func TestPullCreate_TitleEscape(t *testing.T) { assert.Equal(t, "<u>XSS PR</u>", titleHTML) }) } + +func testUIDeleteBranch(t *testing.T, session *TestSession, ownerName, repoName, branchName string) { + relURL := "/" + path.Join(ownerName, repoName, "branches") + req := NewRequest(t, "GET", relURL) + resp := session.MakeRequest(t, req, http.StatusOK) + htmlDoc := NewHTMLParser(t, resp.Body) + + req = NewRequestWithValues(t, "POST", relURL+"/delete", map[string]string{ + "_csrf": getCsrf(t, htmlDoc.doc), + "name": branchName, + }) + session.MakeRequest(t, req, http.StatusOK) +} + +func testDeleteRepository(t *testing.T, session *TestSession, ownerName, repoName string) { + relURL := "/" + path.Join(ownerName, repoName, "settings") + req := NewRequest(t, "GET", relURL) + resp := session.MakeRequest(t, req, http.StatusOK) + htmlDoc := NewHTMLParser(t, resp.Body) + + req = NewRequestWithValues(t, "POST", relURL+"?action=delete", map[string]string{ + "_csrf": getCsrf(t, htmlDoc.doc), + "repo_name": repoName, + }) + session.MakeRequest(t, req, http.StatusFound) +} + +func TestPullBranchDelete(t *testing.T) { + onGiteaRun(t, func(t *testing.T, u *url.URL) { + defer prepareTestEnv(t)() + + session := loginUser(t, "user1") + testRepoFork(t, session, "user2", "repo1", "user1", "repo1") + testCreateBranch(t, session, "user1", "repo1", "branch/master", "master1", http.StatusFound) + testEditFile(t, session, "user1", "repo1", "master1", "README.md", "Hello, World (Edited)\n") + resp := testPullCreate(t, session, "user1", "repo1", "master1", "This is a pull title") + + // check the redirected URL + url := resp.HeaderMap.Get("Location") + assert.Regexp(t, "^/user2/repo1/pulls/[0-9]*$", url) + req := NewRequest(t, "GET", url) + session.MakeRequest(t, req, http.StatusOK) + + // delete head branch and confirm pull page is ok + testUIDeleteBranch(t, session, "user1", "repo1", "master1") + req = NewRequest(t, "GET", url) + session.MakeRequest(t, req, http.StatusOK) + + // delete head repository and confirm pull page is ok + testDeleteRepository(t, session, "user1", "repo1") + req = NewRequest(t, "GET", url) + session.MakeRequest(t, req, http.StatusOK) + }) +} |