@@ -14,10 +14,16 @@ public class ApiIntegrationTests : IClassFixture<BaGetWebApplicationFactory>
14
14
private readonly WebApplicationFactory < Startup > _factory ;
15
15
private readonly HttpClient _client ;
16
16
17
+ private readonly Stream _packageStream ;
18
+ private readonly Stream _symbolPackageStream ;
19
+
17
20
public ApiIntegrationTests ( BaGetWebApplicationFactory factory , ITestOutputHelper output )
18
21
{
19
22
_factory = factory . WithOutput ( output ) ;
20
23
_client = _factory . CreateClient ( ) ;
24
+
25
+ _packageStream = TestResources . GetResourceStream ( TestResources . Package ) ;
26
+ _symbolPackageStream = TestResources . GetResourceStream ( TestResources . SymbolPackage ) ;
21
27
}
22
28
23
29
[ Fact ]
@@ -33,7 +39,7 @@ public async Task IndexReturnsOk()
33
39
[ Fact ]
34
40
public async Task SearchReturnsOk ( )
35
41
{
36
- await _factory . AddPackageAsync ( PackageData . Default ) ;
42
+ await _factory . AddPackageAsync ( _packageStream ) ;
37
43
38
44
using var response = await _client . GetAsync ( "v3/search" ) ;
39
45
var content = await response . Content . ReadAsStreamAsync ( ) ;
@@ -48,23 +54,23 @@ public async Task SearchReturnsOk()
48
54
""totalHits"": 1,
49
55
""data"": [
50
56
{
51
- ""id"": ""DefaultPackage "",
57
+ ""id"": ""TestData "",
52
58
""version"": ""1.2.3"",
53
- ""description"": ""Default package description"",
59
+ ""description"": ""Test description"",
54
60
""authors"": [
55
- ""Default package author""
61
+ ""Test author""
56
62
],
57
63
""iconUrl"": """",
58
64
""licenseUrl"": """",
59
65
""projectUrl"": """",
60
- ""registration"": ""http://localhost/v3/registration/defaultpackage /index.json"",
66
+ ""registration"": ""http://localhost/v3/registration/testdata /index.json"",
61
67
""summary"": """",
62
68
""tags"": [],
63
69
""title"": """",
64
70
""totalDownloads"": 0,
65
71
""versions"": [
66
72
{
67
- ""@id"": ""http://localhost/v3/registration/defaultpackage /1.2.3.json"",
73
+ ""@id"": ""http://localhost/v3/registration/testdata /1.2.3.json"",
68
74
""version"": ""1.2.3"",
69
75
""downloads"": 0
70
76
}
@@ -95,7 +101,7 @@ public async Task SearchReturnsEmpty()
95
101
[ Fact ]
96
102
public async Task AutocompleteReturnsOk ( )
97
103
{
98
- await _factory . AddPackageAsync ( PackageData . Default ) ;
104
+ await _factory . AddPackageAsync ( _packageStream ) ;
99
105
100
106
using var response = await _client . GetAsync ( "v3/autocomplete" ) ;
101
107
var content = await response . Content . ReadAsStreamAsync ( ) ;
@@ -108,7 +114,7 @@ public async Task AutocompleteReturnsOk()
108
114
},
109
115
""totalHits"": 1,
110
116
""data"": [
111
- ""DefaultPackage ""
117
+ ""TestData ""
112
118
]
113
119
}" , json ) ;
114
120
}
@@ -133,9 +139,9 @@ public async Task AutocompleteReturnsEmpty()
133
139
[ Fact ]
134
140
public async Task AutocompleteVersionsReturnsOk ( )
135
141
{
136
- await _factory . AddPackageAsync ( PackageData . Default ) ;
142
+ await _factory . AddPackageAsync ( _packageStream ) ;
137
143
138
- using var response = await _client . GetAsync ( "v3/autocomplete?id=DefaultPackage " ) ;
144
+ using var response = await _client . GetAsync ( "v3/autocomplete?id=TestData " ) ;
139
145
var content = await response . Content . ReadAsStreamAsync ( ) ;
140
146
var json = PrettifyJson ( content ) ;
141
147
@@ -171,9 +177,9 @@ public async Task AutocompleteVersionsReturnsEmpty()
171
177
[ Fact ]
172
178
public async Task VersionListReturnsOk ( )
173
179
{
174
- await _factory . AddPackageAsync ( PackageData . Default ) ;
180
+ await _factory . AddPackageAsync ( _packageStream ) ;
175
181
176
- var response = await _client . GetAsync ( "v3/package/DefaultPackage /index.json" ) ;
182
+ var response = await _client . GetAsync ( "v3/package/TestData /index.json" ) ;
177
183
var content = await response . Content . ReadAsStringAsync ( ) ;
178
184
179
185
Assert . Equal ( HttpStatusCode . OK , response . StatusCode ) ;
@@ -191,9 +197,9 @@ public async Task VersionListReturnsNotFound()
191
197
[ Fact ]
192
198
public async Task PackageDownloadReturnsOk ( )
193
199
{
194
- await _factory . AddPackageAsync ( PackageData . Default ) ;
200
+ await _factory . AddPackageAsync ( _packageStream ) ;
195
201
196
- using var response = await _client . GetAsync ( "v3/package/DefaultPackage /1.2.3/DefaultPackage .1.2.3.nupkg" ) ;
202
+ using var response = await _client . GetAsync ( "v3/package/TestData /1.2.3/TestData .1.2.3.nupkg" ) ;
197
203
198
204
Assert . Equal ( HttpStatusCode . OK , response . StatusCode ) ;
199
205
}
@@ -210,10 +216,10 @@ public async Task PackageDownloadReturnsNotFound()
210
216
[ Fact ]
211
217
public async Task NuspecDownloadReturnsOk ( )
212
218
{
213
- await _factory . AddPackageAsync ( PackageData . Default ) ;
219
+ await _factory . AddPackageAsync ( _packageStream ) ;
214
220
215
221
using var response = await _client . GetAsync (
216
- "v3/package/DefaultPackage /1.2.3/DefaultPackage .1.2.3.nuspec" ) ;
222
+ "v3/package/TestData /1.2.3/TestData .1.2.3.nuspec" ) ;
217
223
218
224
Assert . Equal ( HttpStatusCode . OK , response . StatusCode ) ;
219
225
}
@@ -230,15 +236,15 @@ public async Task NuspecDownloadReturnsNotFound()
230
236
[ Fact ]
231
237
public async Task PackageMetadataReturnsOk ( )
232
238
{
233
- await _factory . AddPackageAsync ( PackageData . Default ) ;
239
+ await _factory . AddPackageAsync ( _packageStream ) ;
234
240
235
- using var response = await _client . GetAsync ( "v3/registration/DefaultPackage /index.json" ) ;
241
+ using var response = await _client . GetAsync ( "v3/registration/TestData /index.json" ) ;
236
242
var content = await response . Content . ReadAsStreamAsync ( ) ;
237
243
var json = PrettifyJson ( content ) ;
238
244
239
245
Assert . Equal ( HttpStatusCode . OK , response . StatusCode ) ;
240
246
Assert . Equal ( @"{
241
- ""@id"": ""http://localhost/v3/registration/defaultpackage /index.json"",
247
+ ""@id"": ""http://localhost/v3/registration/testdata /index.json"",
242
248
""@type"": [
243
249
""catalog:CatalogRoot"",
244
250
""PackageRegistration"",
@@ -247,14 +253,14 @@ public async Task PackageMetadataReturnsOk()
247
253
""count"": 1,
248
254
""items"": [
249
255
{
250
- ""@id"": ""http://localhost/v3/registration/defaultpackage /index.json"",
256
+ ""@id"": ""http://localhost/v3/registration/testdata /index.json"",
251
257
""count"": 1,
252
258
""lower"": ""1.2.3"",
253
259
""upper"": ""1.2.3"",
254
260
""items"": [
255
261
{
256
- ""@id"": ""http://localhost/v3/registration/defaultpackage /1.2.3.json"",
257
- ""packageContent"": ""http://localhost/v3/package/defaultpackage /1.2.3/defaultpackage .1.2.3.nupkg"",
262
+ ""@id"": ""http://localhost/v3/registration/testdata /1.2.3.json"",
263
+ ""packageContent"": ""http://localhost/v3/package/testdata /1.2.3/testdata .1.2.3.nupkg"",
258
264
""catalogEntry"": {
259
265
""downloads"": 0,
260
266
""hasReadme"": false,
@@ -263,17 +269,22 @@ public async Task PackageMetadataReturnsOk()
263
269
],
264
270
""releaseNotes"": """",
265
271
""repositoryUrl"": """",
266
- ""id"": ""DefaultPackage "",
272
+ ""id"": ""TestData "",
267
273
""version"": ""1.2.3"",
268
- ""authors"": ""Default package author"",
269
- ""dependencyGroups"": [],
270
- ""description"": ""Default package description"",
274
+ ""authors"": ""Test author"",
275
+ ""dependencyGroups"": [
276
+ {
277
+ ""targetFramework"": ""net50"",
278
+ ""dependencies"": []
279
+ }
280
+ ],
281
+ ""description"": ""Test description"",
271
282
""iconUrl"": """",
272
283
""language"": """",
273
284
""licenseUrl"": """",
274
285
""listed"": true,
275
286
""minClientVersion"": """",
276
- ""packageContent"": ""http://localhost/v3/package/defaultpackage /1.2.3/defaultpackage .1.2.3.nupkg"",
287
+ ""packageContent"": ""http://localhost/v3/package/testdata /1.2.3/testdata .1.2.3.nupkg"",
277
288
""projectUrl"": """",
278
289
""published"": ""2020-01-01T00:00:00Z"",
279
290
""requireLicenseAcceptance"": false,
@@ -300,23 +311,23 @@ public async Task PackageMetadataReturnsNotFound()
300
311
[ Fact ]
301
312
public async Task PackageMetadataLeafReturnsOk ( )
302
313
{
303
- await _factory . AddPackageAsync ( PackageData . Default ) ;
314
+ await _factory . AddPackageAsync ( _packageStream ) ;
304
315
305
- using var response = await _client . GetAsync ( "v3/registration/DefaultPackage /1.2.3.json" ) ;
316
+ using var response = await _client . GetAsync ( "v3/registration/TestData /1.2.3.json" ) ;
306
317
var content = await response . Content . ReadAsStreamAsync ( ) ;
307
318
var json = PrettifyJson ( content ) ;
308
319
309
320
Assert . Equal ( HttpStatusCode . OK , response . StatusCode ) ;
310
321
Assert . Equal ( @"{
311
- ""@id"": ""http://localhost/v3/registration/defaultpackage /1.2.3.json"",
322
+ ""@id"": ""http://localhost/v3/registration/testdata /1.2.3.json"",
312
323
""@type"": [
313
324
""Package"",
314
325
""http://schema.nuget.org/catalog#Permalink""
315
326
],
316
327
""listed"": true,
317
- ""packageContent"": ""http://localhost/v3/package/defaultpackage /1.2.3/defaultpackage .1.2.3.nupkg"",
328
+ ""packageContent"": ""http://localhost/v3/package/testdata /1.2.3/testdata .1.2.3.nupkg"",
318
329
""published"": ""2020-01-01T00:00:00Z"",
319
- ""registration"": ""http://localhost/v3/registration/defaultpackage /index.json""
330
+ ""registration"": ""http://localhost/v3/registration/testdata /index.json""
320
331
}" , json ) ;
321
332
}
322
333
@@ -331,7 +342,7 @@ public async Task PackageMetadataLeafReturnsNotFound()
331
342
[ Fact ]
332
343
public async Task PackageDependentsReturnsOk ( )
333
344
{
334
- using var response = await _client . GetAsync ( "v3/dependents?packageId=DefaultPackage " ) ;
345
+ using var response = await _client . GetAsync ( "v3/dependents?packageId=TestData " ) ;
335
346
336
347
var content = await response . Content . ReadAsStreamAsync ( ) ;
337
348
var json = PrettifyJson ( content ) ;
@@ -351,6 +362,39 @@ public async Task PackageDependentsReturnsBadRequest()
351
362
Assert . Equal ( HttpStatusCode . BadRequest , response . StatusCode ) ;
352
363
}
353
364
365
+ [ Fact ]
366
+ public async Task SymbolDownloadReturnsOk ( )
367
+ {
368
+ await _factory . AddPackageAsync ( _packageStream ) ;
369
+ await _factory . AddSymbolPackageAsync ( _symbolPackageStream ) ;
370
+
371
+ using var response = await _client . GetAsync (
372
+ "api/download/symbols/testdata.pdb/16F71ED8DD574AA2AD4A22D29E9C981Bffffffff/testdata.pdb" ) ;
373
+
374
+ Assert . Equal ( HttpStatusCode . OK , response . StatusCode ) ;
375
+ }
376
+
377
+ [ Fact ]
378
+ public async Task PrefixedSymbolDownloadReturnsOk ( )
379
+ {
380
+ await _factory . AddPackageAsync ( _packageStream ) ;
381
+ await _factory . AddSymbolPackageAsync ( _symbolPackageStream ) ;
382
+
383
+ using var response = await _client . GetAsync (
384
+ "api/download/symbols/testprefix/testdata.pdb/16F71ED8DD574AA2AD4A22D29E9C981Bffffffff/testdata.pdb" ) ;
385
+
386
+ Assert . Equal ( HttpStatusCode . OK , response . StatusCode ) ;
387
+ }
388
+
389
+ [ Fact ]
390
+ public async Task SymbolDownloadReturnsNotFound ( )
391
+ {
392
+ using var response = await _client . GetAsync (
393
+ "api/download/symbols/doesnotexist.pdb/16F71ED8DD574AA2AD4A22D29E9C981Bffffffff/doesnotexist.pdb" ) ;
394
+
395
+ Assert . Equal ( HttpStatusCode . NotFound , response . StatusCode ) ;
396
+ }
397
+
354
398
private string PrettifyJson ( Stream jsonStream )
355
399
{
356
400
using var writer = new StringWriter ( ) ;
0 commit comments