@@ -5,8 +5,10 @@ package integration
55
66import (
77 "bytes"
8+ "crypto/sha256"
89 "fmt"
910 "net/http"
11+ "strings"
1012 "testing"
1113 "time"
1214
@@ -171,34 +173,62 @@ func TestPackageAccess(t *testing.T) {
171173func TestPackageQuota (t * testing.T ) {
172174 defer tests .PrepareTestEnv (t )()
173175
174- limitTotalOwnerCount , limitTotalOwnerSize , limitSizeGeneric := setting .Packages .LimitTotalOwnerCount , setting .Packages .LimitTotalOwnerSize , setting . Packages . LimitSizeGeneric
176+ limitTotalOwnerCount , limitTotalOwnerSize := setting .Packages .LimitTotalOwnerCount , setting .Packages .LimitTotalOwnerSize
175177
178+ // Exceeded quota result in StatusForbidden for normal users but admins are always allowed to upload.
176179 admin := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 1 })
177180 user := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 10 })
178181
179- uploadPackage := func (doer * user_model.User , version string , expectedStatus int ) {
180- url := fmt .Sprintf ("/api/packages/%s/generic/test-package/%s/file.bin" , user .Name , version )
181- req := NewRequestWithBody (t , "PUT" , url , bytes .NewReader ([]byte {1 }))
182- AddBasicAuthHeader (req , doer .Name )
183- MakeRequest (t , req , expectedStatus )
184- }
182+ t .Run ("Common" , func (t * testing.T ) {
183+ defer tests .PrintCurrentTest (t )()
185184
186- // Exceeded quota result in StatusForbidden for normal users but admins are always allowed to upload.
185+ limitSizeGeneric := setting .Packages .LimitSizeGeneric
186+
187+ uploadPackage := func (doer * user_model.User , version string , expectedStatus int ) {
188+ url := fmt .Sprintf ("/api/packages/%s/generic/test-package/%s/file.bin" , user .Name , version )
189+ req := NewRequestWithBody (t , "PUT" , url , bytes .NewReader ([]byte {1 }))
190+ AddBasicAuthHeader (req , doer .Name )
191+ MakeRequest (t , req , expectedStatus )
192+ }
187193
188- setting .Packages .LimitTotalOwnerCount = 0
189- uploadPackage (user , "1.0" , http .StatusForbidden )
190- uploadPackage (admin , "1.0" , http .StatusCreated )
191- setting .Packages .LimitTotalOwnerCount = limitTotalOwnerCount
194+ setting .Packages .LimitTotalOwnerCount = 0
195+ uploadPackage (user , "1.0" , http .StatusForbidden )
196+ uploadPackage (admin , "1.0" , http .StatusCreated )
197+ setting .Packages .LimitTotalOwnerCount = limitTotalOwnerCount
192198
193- setting .Packages .LimitTotalOwnerSize = 0
194- uploadPackage (user , "1.1" , http .StatusForbidden )
195- uploadPackage (admin , "1.1" , http .StatusCreated )
196- setting .Packages .LimitTotalOwnerSize = limitTotalOwnerSize
199+ setting .Packages .LimitTotalOwnerSize = 0
200+ uploadPackage (user , "1.1" , http .StatusForbidden )
201+ uploadPackage (admin , "1.1" , http .StatusCreated )
202+ setting .Packages .LimitTotalOwnerSize = limitTotalOwnerSize
197203
198- setting .Packages .LimitSizeGeneric = 0
199- uploadPackage (user , "1.2" , http .StatusForbidden )
200- uploadPackage (admin , "1.2" , http .StatusCreated )
201- setting .Packages .LimitSizeGeneric = limitSizeGeneric
204+ setting .Packages .LimitSizeGeneric = 0
205+ uploadPackage (user , "1.2" , http .StatusForbidden )
206+ uploadPackage (admin , "1.2" , http .StatusCreated )
207+ setting .Packages .LimitSizeGeneric = limitSizeGeneric
208+ })
209+
210+ t .Run ("Container" , func (t * testing.T ) {
211+ defer tests .PrintCurrentTest (t )()
212+
213+ limitSizeContainer := setting .Packages .LimitSizeContainer
214+
215+ uploadBlob := func (doer * user_model.User , data string , expectedStatus int ) {
216+ url := fmt .Sprintf ("/v2/%s/quota-test/blobs/uploads?digest=sha256:%x" , user .Name , sha256 .Sum256 ([]byte (data )))
217+ req := NewRequestWithBody (t , "POST" , url , strings .NewReader (data ))
218+ AddBasicAuthHeader (req , doer .Name )
219+ MakeRequest (t , req , expectedStatus )
220+ }
221+
222+ setting .Packages .LimitTotalOwnerSize = 0
223+ uploadBlob (user , "2" , http .StatusForbidden )
224+ uploadBlob (admin , "2" , http .StatusCreated )
225+ setting .Packages .LimitTotalOwnerSize = limitTotalOwnerSize
226+
227+ setting .Packages .LimitSizeContainer = 0
228+ uploadBlob (user , "3" , http .StatusForbidden )
229+ uploadBlob (admin , "3" , http .StatusCreated )
230+ setting .Packages .LimitSizeContainer = limitSizeContainer
231+ })
202232}
203233
204234func TestPackageCleanup (t * testing.T ) {
0 commit comments