@@ -9,11 +9,17 @@ import (
99 "net/url"
1010 "testing"
1111
12+ "code.gitea.io/gitea/modules/setting"
13+ "code.gitea.io/gitea/modules/test"
14+
1215 "github.com/stretchr/testify/assert"
1316)
1417
1518func TestGitSmartHTTP (t * testing.T ) {
16- onGiteaRun (t , testGitSmartHTTP )
19+ onGiteaRun (t , func (t * testing.T , u * url.URL ) {
20+ testGitSmartHTTP (t , u )
21+ testRenamedRepoRedirect (t )
22+ })
1723}
1824
1925func testGitSmartHTTP (t * testing.T , u * url.URL ) {
@@ -66,3 +72,21 @@ func testGitSmartHTTP(t *testing.T, u *url.URL) {
6672 })
6773 }
6874}
75+
76+ func testRenamedRepoRedirect (t * testing.T ) {
77+ defer test .MockVariableValue (& setting .Service .RequireSignInView , true )()
78+
79+ // git client requires to get a 301 redirect response before 401 unauthorized response
80+ req := NewRequest (t , "GET" , "/user2/oldrepo1/info/refs" )
81+ resp := MakeRequest (t , req , http .StatusMovedPermanently )
82+ redirect := resp .Header ().Get ("Location" )
83+ assert .Equal (t , "/user2/repo1/info/refs" , redirect )
84+
85+ req = NewRequest (t , "GET" , redirect )
86+ resp = MakeRequest (t , req , http .StatusUnauthorized )
87+ assert .Equal (t , "Unauthorized\n " , resp .Body .String ())
88+
89+ req = NewRequest (t , "GET" , redirect ).AddBasicAuth ("user2" )
90+ resp = MakeRequest (t , req , http .StatusOK )
91+ assert .Contains (t , resp .Body .String (), "65f1bf27bc3bf70f64657658635e66094edbcb4d\t refs/tags/v1.1" )
92+ }
0 commit comments