@@ -36,33 +36,36 @@ func TestPackageNpm(t *testing.T) {
3636 packageDescription := "Test Description"
3737
3838 data := "H4sIAAAAAAAA/ytITM5OTE/VL4DQelnF+XkMVAYGBgZmJiYK2MRBwNDcSIHB2NTMwNDQzMwAqA7IMDUxA9LUdgg2UFpcklgEdAql5kD8ogCnhwio5lJQUMpLzE1VslJQcihOzi9I1S9JLS7RhSYIJR2QgrLUouLM/DyQGkM9Az1D3YIiqExKanFyUWZBCVQ2BKhVwQVJDKwosbQkI78IJO/tZ+LsbRykxFXLNdA+HwWjYBSMgpENACgAbtAACAAA"
39- upload := `{
40- "_id": "` + packageName + `",
41- "name": "` + packageName + `",
42- "description": "` + packageDescription + `",
43- "dist-tags": {
44- "` + packageTag + `": "` + packageVersion + `"
45- },
46- "versions": {
47- "` + packageVersion + `": {
39+
40+ buildUpload := func (version string ) string {
41+ return `{
42+ "_id": "` + packageName + `",
4843 "name": "` + packageName + `",
49- "version": "` + packageVersion + `",
5044 "description": "` + packageDescription + `",
51- "author": {
52- "name": "` + packageAuthor + `"
45+ "dist-tags": {
46+ "` + packageTag + `": "` + version + `"
47+ },
48+ "versions": {
49+ "` + version + `": {
50+ "name": "` + packageName + `",
51+ "version": "` + version + `",
52+ "description": "` + packageDescription + `",
53+ "author": {
54+ "name": "` + packageAuthor + `"
55+ },
56+ "dist": {
57+ "integrity": "sha512-yA4FJsVhetynGfOC1jFf79BuS+jrHbm0fhh+aHzCQkOaOBXKf9oBnC4a6DnLLnEsHQDRLYd00cwj8sCXpC+wIg==",
58+ "shasum": "aaa7eaf852a948b0aa05afeda35b1badca155d90"
59+ }
60+ }
5361 },
54- "dist": {
55- "integrity": "sha512-yA4FJsVhetynGfOC1jFf79BuS+jrHbm0fhh+aHzCQkOaOBXKf9oBnC4a6DnLLnEsHQDRLYd00cwj8sCXpC+wIg==",
56- "shasum": "aaa7eaf852a948b0aa05afeda35b1badca155d90"
62+ "_attachments": {
63+ "` + packageName + `-` + version + `.tgz": {
64+ "data": "` + data + `"
65+ }
5766 }
58- }
59- },
60- "_attachments": {
61- "` + packageName + `-` + packageVersion + `.tgz": {
62- "data": "` + data + `"
63- }
64- }
65- }`
67+ }`
68+ }
6669
6770 root := fmt .Sprintf ("/api/packages/%s/npm/%s" , user .Name , url .QueryEscape (packageName ))
6871 tagsRoot := fmt .Sprintf ("/api/packages/%s/npm/-/package/%s/dist-tags" , user .Name , url .QueryEscape (packageName ))
@@ -71,7 +74,7 @@ func TestPackageNpm(t *testing.T) {
7174 t .Run ("Upload" , func (t * testing.T ) {
7275 defer PrintCurrentTest (t )()
7376
74- req := NewRequestWithBody (t , "PUT" , root , strings .NewReader (upload ))
77+ req := NewRequestWithBody (t , "PUT" , root , strings .NewReader (buildUpload ( packageVersion ) ))
7578 req = addTokenAuthHeader (req , token )
7679 MakeRequest (t , req , http .StatusCreated )
7780
@@ -103,7 +106,7 @@ func TestPackageNpm(t *testing.T) {
103106 t .Run ("UploadExists" , func (t * testing.T ) {
104107 defer PrintCurrentTest (t )()
105108
106- req := NewRequestWithBody (t , "PUT" , root , strings .NewReader (upload ))
109+ req := NewRequestWithBody (t , "PUT" , root , strings .NewReader (buildUpload ( packageVersion ) ))
107110 req = addTokenAuthHeader (req , token )
108111 MakeRequest (t , req , http .StatusBadRequest )
109112 })
@@ -219,4 +222,57 @@ func TestPackageNpm(t *testing.T) {
219222 test (t , http .StatusOK , "dummy" )
220223 test (t , http .StatusOK , packageTag2 )
221224 })
225+
226+ t .Run ("Delete" , func (t * testing.T ) {
227+ defer PrintCurrentTest (t )()
228+
229+ req := NewRequestWithBody (t , "PUT" , root , strings .NewReader (buildUpload (packageVersion + "-dummy" )))
230+ req = addTokenAuthHeader (req , token )
231+ MakeRequest (t , req , http .StatusCreated )
232+
233+ req = NewRequest (t , "PUT" , root + "/-rev/dummy" )
234+ MakeRequest (t , req , http .StatusUnauthorized )
235+
236+ req = NewRequest (t , "PUT" , root + "/-rev/dummy" )
237+ req = addTokenAuthHeader (req , token )
238+ MakeRequest (t , req , http .StatusOK )
239+
240+ t .Run ("Version" , func (t * testing.T ) {
241+ defer PrintCurrentTest (t )()
242+
243+ pvs , err := packages .GetVersionsByPackageType (db .DefaultContext , user .ID , packages .TypeNpm )
244+ assert .NoError (t , err )
245+ assert .Len (t , pvs , 2 )
246+
247+ req := NewRequest (t , "DELETE" , fmt .Sprintf ("%s/-/%s/%s/-rev/dummy" , root , packageVersion , filename ))
248+ MakeRequest (t , req , http .StatusUnauthorized )
249+
250+ req = NewRequest (t , "DELETE" , fmt .Sprintf ("%s/-/%s/%s/-rev/dummy" , root , packageVersion , filename ))
251+ req = addTokenAuthHeader (req , token )
252+ MakeRequest (t , req , http .StatusOK )
253+
254+ pvs , err = packages .GetVersionsByPackageType (db .DefaultContext , user .ID , packages .TypeNpm )
255+ assert .NoError (t , err )
256+ assert .Len (t , pvs , 1 )
257+ })
258+
259+ t .Run ("Full" , func (t * testing.T ) {
260+ defer PrintCurrentTest (t )()
261+
262+ pvs , err := packages .GetVersionsByPackageType (db .DefaultContext , user .ID , packages .TypeNpm )
263+ assert .NoError (t , err )
264+ assert .Len (t , pvs , 1 )
265+
266+ req := NewRequest (t , "DELETE" , root + "/-rev/dummy" )
267+ MakeRequest (t , req , http .StatusUnauthorized )
268+
269+ req = NewRequest (t , "DELETE" , root + "/-rev/dummy" )
270+ req = addTokenAuthHeader (req , token )
271+ MakeRequest (t , req , http .StatusOK )
272+
273+ pvs , err = packages .GetVersionsByPackageType (db .DefaultContext , user .ID , packages .TypeNpm )
274+ assert .NoError (t , err )
275+ assert .Len (t , pvs , 0 )
276+ })
277+ })
222278}
0 commit comments