mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-06-21 16:40:52 +00:00
Add package registry quota limits (#21584)
Related #20471 This PR adds global quota limits for the package registry. Settings for individual users/orgs can be added in a seperate PR using the settings table. Co-authored-by: Lauris BH <lauris@nix.lv> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
parent
cb83288530
commit
20674dd05d
20 changed files with 378 additions and 61 deletions
|
@ -16,6 +16,7 @@ import (
|
|||
container_model "code.gitea.io/gitea/models/packages/container"
|
||||
"code.gitea.io/gitea/models/unittest"
|
||||
user_model "code.gitea.io/gitea/models/user"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
api "code.gitea.io/gitea/modules/structs"
|
||||
packages_service "code.gitea.io/gitea/services/packages"
|
||||
"code.gitea.io/gitea/tests"
|
||||
|
@ -166,6 +167,39 @@ func TestPackageAccess(t *testing.T) {
|
|||
uploadPackage(admin, user, http.StatusCreated)
|
||||
}
|
||||
|
||||
func TestPackageQuota(t *testing.T) {
|
||||
defer tests.PrepareTestEnv(t)()
|
||||
|
||||
limitTotalOwnerCount, limitTotalOwnerSize, limitSizeGeneric := setting.Packages.LimitTotalOwnerCount, setting.Packages.LimitTotalOwnerSize, setting.Packages.LimitSizeGeneric
|
||||
|
||||
admin := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1})
|
||||
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 10})
|
||||
|
||||
uploadPackage := func(doer *user_model.User, version string, expectedStatus int) {
|
||||
url := fmt.Sprintf("/api/packages/%s/generic/test-package/%s/file.bin", user.Name, version)
|
||||
req := NewRequestWithBody(t, "PUT", url, bytes.NewReader([]byte{1}))
|
||||
AddBasicAuthHeader(req, doer.Name)
|
||||
MakeRequest(t, req, expectedStatus)
|
||||
}
|
||||
|
||||
// Exceeded quota result in StatusForbidden for normal users but admins are always allowed to upload.
|
||||
|
||||
setting.Packages.LimitTotalOwnerCount = 0
|
||||
uploadPackage(user, "1.0", http.StatusForbidden)
|
||||
uploadPackage(admin, "1.0", http.StatusCreated)
|
||||
setting.Packages.LimitTotalOwnerCount = limitTotalOwnerCount
|
||||
|
||||
setting.Packages.LimitTotalOwnerSize = 0
|
||||
uploadPackage(user, "1.1", http.StatusForbidden)
|
||||
uploadPackage(admin, "1.1", http.StatusCreated)
|
||||
setting.Packages.LimitTotalOwnerSize = limitTotalOwnerSize
|
||||
|
||||
setting.Packages.LimitSizeGeneric = 0
|
||||
uploadPackage(user, "1.2", http.StatusForbidden)
|
||||
uploadPackage(admin, "1.2", http.StatusCreated)
|
||||
setting.Packages.LimitSizeGeneric = limitSizeGeneric
|
||||
}
|
||||
|
||||
func TestPackageCleanup(t *testing.T) {
|
||||
defer tests.PrepareTestEnv(t)()
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue