@@ -5,8 +5,10 @@ package integration
5
5
6
6
import (
7
7
"bytes"
8
+ "crypto/sha256"
8
9
"fmt"
9
10
"net/http"
11
+ "strings"
10
12
"testing"
11
13
"time"
12
14
@@ -171,34 +173,62 @@ func TestPackageAccess(t *testing.T) {
171
173
func TestPackageQuota (t * testing.T ) {
172
174
defer tests .PrepareTestEnv (t )()
173
175
174
- limitTotalOwnerCount , limitTotalOwnerSize , limitSizeGeneric := setting .Packages .LimitTotalOwnerCount , setting .Packages .LimitTotalOwnerSize , setting . Packages . LimitSizeGeneric
176
+ limitTotalOwnerCount , limitTotalOwnerSize := setting .Packages .LimitTotalOwnerCount , setting .Packages .LimitTotalOwnerSize
175
177
178
+ // Exceeded quota result in StatusForbidden for normal users but admins are always allowed to upload.
176
179
admin := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 1 })
177
180
user := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 10 })
178
181
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 )()
185
184
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
+ }
187
193
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
192
198
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
197
203
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
+ })
202
232
}
203
233
204
234
func TestPackageCleanup (t * testing.T ) {
0 commit comments