mirror of
https://github.com/go-gitea/gitea.git
synced 2026-05-23 12:52:03 +02:00
Add cross repo package access test
This commit is contained in:
parent
9bd8b8109d
commit
9ada493d72
@ -4,6 +4,7 @@
|
|||||||
package integration
|
package integration
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
@ -362,5 +363,32 @@ func TestActionsCrossRepoAccess(t *testing.T) {
|
|||||||
t.Run("Cross-Repo Access Allowed", doAPIGetRepository(testCtx, func(t *testing.T, r structs.Repository) {
|
t.Run("Cross-Repo Access Allowed", doAPIGetRepository(testCtx, func(t *testing.T, r structs.Repository) {
|
||||||
assert.Equal(t, "repo-B", r.Name)
|
assert.Equal(t, "repo-B", r.Name)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
// 6. Test Cross-Repo Package Access
|
||||||
|
t.Run("Cross-Repo Package Access", func(t *testing.T) {
|
||||||
|
packageName := "cross-test-pkg"
|
||||||
|
packageVersion := "1.0.0"
|
||||||
|
fileName := "test-file.bin"
|
||||||
|
content := []byte{1, 2, 3, 4, 5}
|
||||||
|
|
||||||
|
// First, upload a package to repo-B using the org owner's token
|
||||||
|
packageURL := fmt.Sprintf("/api/packages/%s/generic/%s/%s/%s", orgName, packageName, packageVersion, fileName)
|
||||||
|
uploadReq := NewRequestWithBody(t, "PUT", packageURL, bytes.NewReader(content)).AddTokenAuth(token)
|
||||||
|
MakeRequest(t, uploadReq, http.StatusCreated)
|
||||||
|
|
||||||
|
// Try to download the package with task token from repo-A (cross-repo read)
|
||||||
|
// Cross-repo access should allow read
|
||||||
|
downloadReq := NewRequest(t, "GET", packageURL)
|
||||||
|
downloadReq.Header.Set("Authorization", "Bearer "+task.Token)
|
||||||
|
resp := MakeRequest(t, downloadReq, http.StatusOK)
|
||||||
|
assert.Equal(t, content, resp.Body.Bytes(), "Should be able to read package from other repo in same org")
|
||||||
|
|
||||||
|
// Try to upload a package to org with task token from repo-A (cross-repo write)
|
||||||
|
// Cross-repo access should be read-only, so this should fail
|
||||||
|
writePackageURL := fmt.Sprintf("/api/packages/%s/generic/%s/%s/write-test.bin", orgName, packageName, packageVersion)
|
||||||
|
writeReq := NewRequestWithBody(t, "PUT", writePackageURL, bytes.NewReader(content))
|
||||||
|
writeReq.Header.Set("Authorization", "Bearer "+task.Token)
|
||||||
|
MakeRequest(t, writeReq, http.StatusForbidden)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user