mirror of
https://github.com/go-gitea/gitea.git
synced 2025-12-16 05:20:14 +01:00
Fix the bug when ssh clone with redirect user or repository (#36039)
Fix #36026 The redirect should be checked when original user/repo doesn't exist.
This commit is contained in:
@@ -6,9 +6,13 @@ package integration
|
||||
import (
|
||||
"fmt"
|
||||
"net/url"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
auth_model "code.gitea.io/gitea/models/auth"
|
||||
"code.gitea.io/gitea/modules/structs"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestGitSSHRedirect(t *testing.T) {
|
||||
@@ -16,7 +20,8 @@ func TestGitSSHRedirect(t *testing.T) {
|
||||
}
|
||||
|
||||
func testGitSSHRedirect(t *testing.T, u *url.URL) {
|
||||
apiTestContext := NewAPITestContext(t, "user2", "repo1", auth_model.AccessTokenScopeWriteRepository, auth_model.AccessTokenScopeWriteUser)
|
||||
apiTestContext := NewAPITestContext(t, "user2", "repo1", auth_model.AccessTokenScopeWriteRepository, auth_model.AccessTokenScopeWriteUser, auth_model.AccessTokenScopeWriteOrganization)
|
||||
session := loginUser(t, "user2")
|
||||
|
||||
withKeyFile(t, "my-testing-key", func(keyFile string) {
|
||||
t.Run("CreateUserKey", doAPICreateUserKey(apiTestContext, "test-key", keyFile))
|
||||
@@ -38,5 +43,39 @@ func testGitSSHRedirect(t *testing.T, u *url.URL) {
|
||||
t.Run("Clone", doGitClone(t.TempDir(), cloneURL))
|
||||
})
|
||||
}
|
||||
|
||||
doAPICreateOrganization(apiTestContext, &structs.CreateOrgOption{
|
||||
UserName: "olduser2",
|
||||
FullName: "Old User2",
|
||||
})(t)
|
||||
|
||||
cloneURL := createSSHUrl("olduser2/repo1.git", u)
|
||||
t.Run("Clone Should Fail", doGitCloneFail(cloneURL))
|
||||
|
||||
doAPICreateOrganizationRepository(apiTestContext, "olduser2", &structs.CreateRepoOption{
|
||||
Name: "repo1",
|
||||
AutoInit: true,
|
||||
})(t)
|
||||
testEditFile(t, session, "olduser2", "repo1", "master", "README.md", "This is olduser2's repo1\n")
|
||||
|
||||
dstDir := t.TempDir()
|
||||
t.Run("Clone", doGitClone(dstDir, cloneURL))
|
||||
readMEContent, err := os.ReadFile(dstDir + "/README.md")
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "This is olduser2's repo1\n", string(readMEContent))
|
||||
|
||||
apiTestContext2 := NewAPITestContext(t, "user2", "oldrepo1", auth_model.AccessTokenScopeWriteRepository, auth_model.AccessTokenScopeWriteUser, auth_model.AccessTokenScopeWriteOrganization)
|
||||
doAPICreateRepository(apiTestContext2, false)(t)
|
||||
testEditFile(t, session, "user2", "oldrepo1", "master", "README.md", "This is user2's oldrepo1\n")
|
||||
|
||||
dstDir = t.TempDir()
|
||||
cloneURL = createSSHUrl("user2/oldrepo1.git", u)
|
||||
t.Run("Clone", doGitClone(dstDir, cloneURL))
|
||||
readMEContent, err = os.ReadFile(dstDir + "/README.md")
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "This is user2's oldrepo1\n", string(readMEContent))
|
||||
|
||||
cloneURL = createSSHUrl("olduser2/oldrepo1.git", u)
|
||||
t.Run("Clone Should Fail", doGitCloneFail(cloneURL))
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user