@@ -90,29 +90,33 @@ func TestPackageNuGet(t *testing.T) {
90
90
symbolFilename := "test.pdb"
91
91
symbolID := "d910bb6948bd4c6cb40155bcf52c3c94"
92
92
93
- createPackage := func (id , version string ) io.Reader {
93
+ createNuspec := func (id , version string ) string {
94
+ return `<?xml version="1.0" encoding="utf-8"?>
95
+ <package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
96
+ <metadata>
97
+ <id>` + id + `</id>
98
+ <version>` + version + `</version>
99
+ <authors>` + packageAuthors + `</authors>
100
+ <description>` + packageDescription + `</description>
101
+ <dependencies>
102
+ <group targetFramework=".NETStandard2.0">
103
+ <dependency id="Microsoft.CSharp" version="4.5.0" />
104
+ </group>
105
+ </dependencies>
106
+ </metadata>
107
+ </package>`
108
+ }
109
+
110
+ createPackage := func (id , version string ) * bytes.Buffer {
94
111
var buf bytes.Buffer
95
112
archive := zip .NewWriter (& buf )
96
113
w , _ := archive .Create ("package.nuspec" )
97
- w .Write ([]byte (`<?xml version="1.0" encoding="utf-8"?>
98
- <package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
99
- <metadata>
100
- <id>` + id + `</id>
101
- <version>` + version + `</version>
102
- <authors>` + packageAuthors + `</authors>
103
- <description>` + packageDescription + `</description>
104
- <dependencies>
105
- <group targetFramework=".NETStandard2.0">
106
- <dependency id="Microsoft.CSharp" version="4.5.0" />
107
- </group>
108
- </dependencies>
109
- </metadata>
110
- </package>` ))
114
+ w .Write ([]byte (createNuspec (id , version )))
111
115
archive .Close ()
112
116
return & buf
113
117
}
114
118
115
- content , _ := io . ReadAll ( createPackage (packageName , packageVersion ))
119
+ content := createPackage (packageName , packageVersion ). Bytes ( )
116
120
117
121
url := fmt .Sprintf ("/api/packages/%s/nuget" , user .Name )
118
122
@@ -224,7 +228,7 @@ func TestPackageNuGet(t *testing.T) {
224
228
225
229
pvs , err := packages .GetVersionsByPackageType (db .DefaultContext , user .ID , packages .TypeNuGet )
226
230
assert .NoError (t , err )
227
- assert .Len (t , pvs , 1 )
231
+ assert .Len (t , pvs , 1 , "Should have one version" )
228
232
229
233
pd , err := packages .GetPackageDescriptor (db .DefaultContext , pvs [0 ])
230
234
assert .NoError (t , err )
@@ -235,13 +239,21 @@ func TestPackageNuGet(t *testing.T) {
235
239
236
240
pfs , err := packages .GetFilesByVersionID (db .DefaultContext , pvs [0 ].ID )
237
241
assert .NoError (t , err )
238
- assert .Len (t , pfs , 1 )
239
- assert .Equal (t , fmt .Sprintf ("%s.%s.nupkg" , packageName , packageVersion ), pfs [0 ].Name )
240
- assert .True (t , pfs [0 ].IsLead )
242
+ assert .Len (t , pfs , 2 , "Should have 2 files: nuget and nuspec" )
243
+ for _ , pf := range pfs {
244
+ switch pf .Name {
245
+ case fmt .Sprintf ("%s.%s.nupkg" , packageName , packageVersion ):
246
+ assert .True (t , pf .IsLead )
241
247
242
- pb , err := packages .GetBlobByID (db .DefaultContext , pfs [0 ].BlobID )
243
- assert .NoError (t , err )
244
- assert .Equal (t , int64 (len (content )), pb .Size )
248
+ pb , err := packages .GetBlobByID (db .DefaultContext , pf .BlobID )
249
+ assert .NoError (t , err )
250
+ assert .Equal (t , int64 (len (content )), pb .Size )
251
+ case fmt .Sprintf ("%s.nuspec" , packageName ):
252
+ assert .False (t , pf .IsLead )
253
+ default :
254
+ assert .Fail (t , "unexpected filename: %v" , pf .Name )
255
+ }
256
+ }
245
257
246
258
req = NewRequestWithBody (t , "PUT" , url , bytes .NewReader (content )).
247
259
AddBasicAuth (user .Name )
@@ -302,16 +314,27 @@ AAAjQmxvYgAAAGm7ENm9SGxMtAFVvPUsPJTF6PbtAAAAAFcVogEJAAAAAQAAAA==`)
302
314
303
315
pfs , err := packages .GetFilesByVersionID (db .DefaultContext , pvs [0 ].ID )
304
316
assert .NoError (t , err )
305
- assert .Len (t , pfs , 3 )
317
+ assert .Len (t , pfs , 4 , "Should have 4 files: nupkg, snupkg, nuspec and pdb" )
306
318
for _ , pf := range pfs {
307
319
switch pf .Name {
308
320
case fmt .Sprintf ("%s.%s.nupkg" , packageName , packageVersion ):
321
+ assert .True (t , pf .IsLead )
322
+
323
+ pb , err := packages .GetBlobByID (db .DefaultContext , pf .BlobID )
324
+ assert .NoError (t , err )
325
+ assert .Equal (t , int64 (412 ), pb .Size )
309
326
case fmt .Sprintf ("%s.%s.snupkg" , packageName , packageVersion ):
310
327
assert .False (t , pf .IsLead )
311
328
312
329
pb , err := packages .GetBlobByID (db .DefaultContext , pf .BlobID )
313
330
assert .NoError (t , err )
314
331
assert .Equal (t , int64 (616 ), pb .Size )
332
+ case fmt .Sprintf ("%s.nuspec" , packageName ):
333
+ assert .False (t , pf .IsLead )
334
+
335
+ pb , err := packages .GetBlobByID (db .DefaultContext , pf .BlobID )
336
+ assert .NoError (t , err )
337
+ assert .Equal (t , int64 (427 ), pb .Size )
315
338
case symbolFilename :
316
339
assert .False (t , pf .IsLead )
317
340
@@ -353,6 +376,12 @@ AAAjQmxvYgAAAGm7ENm9SGxMtAFVvPUsPJTF6PbtAAAAAFcVogEJAAAAAQAAAA==`)
353
376
354
377
assert .Equal (t , content , resp .Body .Bytes ())
355
378
379
+ req = NewRequest (t , "GET" , fmt .Sprintf ("%s/package/%s/%s/%s.nuspec" , url , packageName , packageVersion , packageName )).
380
+ AddBasicAuth (user .Name )
381
+ resp = MakeRequest (t , req , http .StatusOK )
382
+
383
+ assert .Equal (t , createNuspec (packageName , packageVersion ), resp .Body .String ())
384
+
356
385
checkDownloadCount (1 )
357
386
358
387
req = NewRequest (t , "GET" , fmt .Sprintf ("%s/package/%s/%s/%s.%s.snupkg" , url , packageName , packageVersion , packageName , packageVersion )).
0 commit comments