@@ -5,17 +5,23 @@ package integration
55
66import (
77 "net/http"
8+ "net/url"
89 "testing"
910
1011 git_model "code.gitea.io/gitea/models/git"
1112 repo_model "code.gitea.io/gitea/models/repo"
1213 "code.gitea.io/gitea/models/unittest"
14+ gitea_context "code.gitea.io/gitea/services/context"
1315 "code.gitea.io/gitea/tests"
1416
1517 "github.com/stretchr/testify/assert"
1618)
1719
1820func TestRenameBranch (t * testing.T ) {
21+ onGiteaRun (t , testRenameBranch )
22+ }
23+
24+ func testRenameBranch (t * testing.T , u * url.URL ) {
1925 defer tests .PrepareTestEnv (t )()
2026
2127 unittest .AssertExistsAndLoadBean (t , & git_model.Branch {RepoID : 1 , Name : "master" })
@@ -26,25 +32,89 @@ func TestRenameBranch(t *testing.T) {
2632 resp := session .MakeRequest (t , req , http .StatusOK )
2733 htmlDoc := NewHTMLParser (t , resp .Body )
2834
29- postData := map [string ]string {
35+ req = NewRequestWithValues ( t , "POST" , "/user2/repo1/settings/rename_branch" , map [string ]string {
3036 "_csrf" : htmlDoc .GetCSRF (),
3137 "from" : "master" ,
3238 "to" : "main" ,
33- }
34- req = NewRequestWithValues (t , "POST" , "/user2/repo1/settings/rename_branch" , postData )
39+ })
3540 session .MakeRequest (t , req , http .StatusSeeOther )
3641
3742 // check new branch link
38- req = NewRequestWithValues (t , "GET" , "/user2/repo1/src/branch/main/README.md" , postData )
43+ req = NewRequestWithValues (t , "GET" , "/user2/repo1/src/branch/main/README.md" , nil )
3944 session .MakeRequest (t , req , http .StatusOK )
4045
4146 // check old branch link
42- req = NewRequestWithValues (t , "GET" , "/user2/repo1/src/branch/master/README.md" , postData )
47+ req = NewRequestWithValues (t , "GET" , "/user2/repo1/src/branch/master/README.md" , nil )
4348 resp = session .MakeRequest (t , req , http .StatusSeeOther )
4449 location := resp .Header ().Get ("Location" )
4550 assert .Equal (t , "/user2/repo1/src/branch/main/README.md" , location )
4651
4752 // check db
4853 repo1 := unittest .AssertExistsAndLoadBean (t , & repo_model.Repository {ID : 1 })
4954 assert .Equal (t , "main" , repo1 .DefaultBranch )
55+
56+ // create branch1
57+ csrf := GetCSRF (t , session , "/user2/repo1/src/branch/main" )
58+
59+ req = NewRequestWithValues (t , "POST" , "/user2/repo1/branches/_new/branch/main" , map [string ]string {
60+ "_csrf" : csrf ,
61+ "new_branch_name" : "branch1" ,
62+ })
63+ session .MakeRequest (t , req , http .StatusSeeOther )
64+
65+ branch1 := unittest .AssertExistsAndLoadBean (t , & git_model.Branch {RepoID : repo1 .ID , Name : "branch1" })
66+ assert .Equal (t , "branch1" , branch1 .Name )
67+
68+ // create branch2
69+ req = NewRequestWithValues (t , "POST" , "/user2/repo1/branches/_new/branch/main" , map [string ]string {
70+ "_csrf" : csrf ,
71+ "new_branch_name" : "branch2" ,
72+ })
73+ session .MakeRequest (t , req , http .StatusSeeOther )
74+
75+ branch2 := unittest .AssertExistsAndLoadBean (t , & git_model.Branch {RepoID : repo1 .ID , Name : "branch2" })
76+ assert .Equal (t , "branch2" , branch2 .Name )
77+
78+ // rename branch2 to branch1
79+ req = NewRequestWithValues (t , "POST" , "/user2/repo1/settings/rename_branch" , map [string ]string {
80+ "_csrf" : htmlDoc .GetCSRF (),
81+ "from" : "branch2" ,
82+ "to" : "branch1" ,
83+ })
84+ session .MakeRequest (t , req , http .StatusSeeOther )
85+ flashCookie := session .GetCookie (gitea_context .CookieNameFlash )
86+ assert .NotNil (t , flashCookie )
87+ assert .Contains (t , flashCookie .Value , "error" )
88+
89+ branch2 = unittest .AssertExistsAndLoadBean (t , & git_model.Branch {RepoID : repo1 .ID , Name : "branch2" })
90+ assert .Equal (t , "branch2" , branch2 .Name )
91+ branch1 = unittest .AssertExistsAndLoadBean (t , & git_model.Branch {RepoID : repo1 .ID , Name : "branch1" })
92+ assert .Equal (t , "branch1" , branch1 .Name )
93+
94+ // delete branch1
95+ req = NewRequestWithValues (t , "POST" , "/user2/repo1/branches/delete" , map [string ]string {
96+ "_csrf" : htmlDoc .GetCSRF (),
97+ "name" : "branch1" ,
98+ })
99+ session .MakeRequest (t , req , http .StatusOK )
100+ branch2 = unittest .AssertExistsAndLoadBean (t , & git_model.Branch {RepoID : repo1 .ID , Name : "branch2" })
101+ assert .Equal (t , "branch2" , branch2 .Name )
102+ branch1 = unittest .AssertExistsAndLoadBean (t , & git_model.Branch {RepoID : repo1 .ID , Name : "branch1" })
103+ assert .True (t , branch1 .IsDeleted ) // virtual deletion
104+
105+ // rename branch2 to branch1 again
106+ req = NewRequestWithValues (t , "POST" , "/user2/repo1/settings/rename_branch" , map [string ]string {
107+ "_csrf" : htmlDoc .GetCSRF (),
108+ "from" : "branch2" ,
109+ "to" : "branch1" ,
110+ })
111+ session .MakeRequest (t , req , http .StatusSeeOther )
112+
113+ flashCookie = session .GetCookie (gitea_context .CookieNameFlash )
114+ assert .NotNil (t , flashCookie )
115+ assert .Contains (t , flashCookie .Value , "success" )
116+
117+ unittest .AssertNotExistsBean (t , & git_model.Branch {RepoID : repo1 .ID , Name : "branch2" })
118+ branch1 = unittest .AssertExistsAndLoadBean (t , & git_model.Branch {RepoID : repo1 .ID , Name : "branch1" })
119+ assert .Equal (t , "branch1" , branch1 .Name )
50120}
0 commit comments