@@ -127,10 +127,66 @@ func TestRepositoriesService_GetReadme(t *testing.T) {
127
127
})
128
128
}
129
129
130
- func TestRepositoriesService_DownloadContents_Success (t * testing.T ) {
130
+ func TestRepositoriesService_DownloadContents_SuccessForFile (t * testing.T ) {
131
131
t .Parallel ()
132
132
client , mux , serverURL := setup (t )
133
133
134
+ mux .HandleFunc ("/repos/o/r/contents/d/f" , func (w http.ResponseWriter , r * http.Request ) {
135
+ testMethod (t , r , "GET" )
136
+ fmt .Fprint (w , `{
137
+ "type": "file",
138
+ "name": "f",
139
+ "content": "foo",
140
+ "download_url": "` + serverURL + baseURLPath + `/download/f"
141
+ }` )
142
+ })
143
+
144
+ ctx := context .Background ()
145
+ r , resp , err := client .Repositories .DownloadContents (ctx , "o" , "r" , "d/f" , nil )
146
+ if err != nil {
147
+ t .Errorf ("Repositories.DownloadContents returned error: %v" , err )
148
+ }
149
+
150
+ if got , want := resp .Response .StatusCode , http .StatusOK ; got != want {
151
+ t .Errorf ("Repositories.DownloadContents returned status code %v, want %v" , got , want )
152
+ }
153
+
154
+ bytes , err := io .ReadAll (r )
155
+ if err != nil {
156
+ t .Errorf ("Error reading response body: %v" , err )
157
+ }
158
+ r .Close ()
159
+
160
+ if got , want := string (bytes ), "foo" ; got != want {
161
+ t .Errorf ("Repositories.DownloadContents returned %v, want %v" , got , want )
162
+ }
163
+
164
+ const methodName = "DownloadContents"
165
+ testBadOptions (t , methodName , func () (err error ) {
166
+ _ , _ , err = client .Repositories .DownloadContents (ctx , "\n " , "\n " , "\n " , nil )
167
+ return err
168
+ })
169
+
170
+ testNewRequestAndDoFailure (t , methodName , client , func () (* Response , error ) {
171
+ got , resp , err := client .Repositories .DownloadContents (ctx , "o" , "r" , "d/f" , nil )
172
+ if got != nil {
173
+ t .Errorf ("testNewRequestAndDoFailure %v = %#v, want nil" , methodName , got )
174
+ }
175
+ return resp , err
176
+ })
177
+ }
178
+
179
+ func TestRepositoriesService_DownloadContents_SuccessForDirectory (t * testing.T ) {
180
+ t .Parallel ()
181
+ client , mux , serverURL := setup (t )
182
+
183
+ mux .HandleFunc ("/repos/o/r/contents/d/f" , func (w http.ResponseWriter , r * http.Request ) {
184
+ testMethod (t , r , "GET" )
185
+ fmt .Fprint (w , `{
186
+ "type": "file",
187
+ "name": "f"
188
+ }` )
189
+ })
134
190
mux .HandleFunc ("/repos/o/r/contents/d" , func (w http.ResponseWriter , r * http.Request ) {
135
191
testMethod (t , r , "GET" )
136
192
fmt .Fprint (w , `[{
@@ -183,6 +239,13 @@ func TestRepositoriesService_DownloadContents_FailedResponse(t *testing.T) {
183
239
t .Parallel ()
184
240
client , mux , serverURL := setup (t )
185
241
242
+ mux .HandleFunc ("/repos/o/r/contents/d/f" , func (w http.ResponseWriter , r * http.Request ) {
243
+ testMethod (t , r , "GET" )
244
+ fmt .Fprint (w , `{
245
+ "type": "file",
246
+ "name": "f"
247
+ }` )
248
+ })
186
249
mux .HandleFunc ("/repos/o/r/contents/d" , func (w http.ResponseWriter , r * http.Request ) {
187
250
testMethod (t , r , "GET" )
188
251
fmt .Fprint (w , `[{
@@ -222,60 +285,83 @@ func TestRepositoriesService_DownloadContents_NoDownloadURL(t *testing.T) {
222
285
t .Parallel ()
223
286
client , mux , _ := setup (t )
224
287
288
+ mux .HandleFunc ("/repos/o/r/contents/d/f" , func (w http.ResponseWriter , r * http.Request ) {
289
+ testMethod (t , r , "GET" )
290
+ fmt .Fprint (w , `{
291
+ "type": "file",
292
+ "name": "f",
293
+ "content": ""
294
+ }` )
295
+ })
225
296
mux .HandleFunc ("/repos/o/r/contents/d" , func (w http.ResponseWriter , r * http.Request ) {
226
297
testMethod (t , r , "GET" )
227
298
fmt .Fprint (w , `[{
228
299
"type": "file",
229
300
"name": "f",
301
+ "content": ""
230
302
}]` )
231
303
})
232
304
233
305
ctx := context .Background ()
234
- _ , resp , err := client .Repositories .DownloadContents (ctx , "o" , "r" , "d/f" , nil )
306
+ reader , resp , err := client .Repositories .DownloadContents (ctx , "o" , "r" , "d/f" , nil )
235
307
if err == nil {
236
308
t .Errorf ("Repositories.DownloadContents did not return expected error" )
237
309
}
238
310
239
311
if resp == nil {
240
312
t .Errorf ("Repositories.DownloadContents did not return expected response" )
241
313
}
314
+
315
+ if reader != nil {
316
+ t .Errorf ("Repositories.DownloadContents did not return expected reader" )
317
+ }
242
318
}
243
319
244
320
func TestRepositoriesService_DownloadContents_NoFile (t * testing.T ) {
245
321
t .Parallel ()
246
322
client , mux , _ := setup (t )
247
323
324
+ mux .HandleFunc ("/repos/o/r/contents/d/f" , func (w http.ResponseWriter , r * http.Request ) {
325
+ testMethod (t , r , "GET" )
326
+ fmt .Fprint (w , `{
327
+ "type": "file",
328
+ "name": "f",
329
+ "content": ""
330
+ }` )
331
+ })
332
+
248
333
mux .HandleFunc ("/repos/o/r/contents/d" , func (w http.ResponseWriter , r * http.Request ) {
249
334
testMethod (t , r , "GET" )
250
335
fmt .Fprint (w , `[]` )
251
336
})
252
337
253
338
ctx := context .Background ()
254
- _ , resp , err := client .Repositories .DownloadContents (ctx , "o" , "r" , "d/f" , nil )
339
+ reader , resp , err := client .Repositories .DownloadContents (ctx , "o" , "r" , "d/f" , nil )
255
340
if err == nil {
256
341
t .Errorf ("Repositories.DownloadContents did not return expected error" )
257
342
}
258
343
259
344
if resp == nil {
260
345
t .Errorf ("Repositories.DownloadContents did not return expected response" )
261
346
}
347
+
348
+ if reader != nil {
349
+ t .Errorf ("Repositories.DownloadContents did not return expected reader" )
350
+ }
262
351
}
263
352
264
- func TestRepositoriesService_DownloadContentsWithMeta_Success (t * testing.T ) {
353
+ func TestRepositoriesService_DownloadContentsWithMeta_SuccessForFile (t * testing.T ) {
265
354
t .Parallel ()
266
355
client , mux , serverURL := setup (t )
267
356
268
- mux .HandleFunc ("/repos/o/r/contents/d" , func (w http.ResponseWriter , r * http.Request ) {
357
+ mux .HandleFunc ("/repos/o/r/contents/d/f " , func (w http.ResponseWriter , r * http.Request ) {
269
358
testMethod (t , r , "GET" )
270
- fmt .Fprint (w , `[ {
359
+ fmt .Fprint (w , `{
271
360
"type": "file",
272
361
"name": "f",
273
- "download_url": "` + serverURL + baseURLPath + `/download/f"
274
- }]` )
275
- })
276
- mux .HandleFunc ("/download/f" , func (w http.ResponseWriter , r * http.Request ) {
277
- testMethod (t , r , "GET" )
278
- fmt .Fprint (w , "foo" )
362
+ "download_url": "` + serverURL + baseURLPath + `/download/f",
363
+ "content": "foo"
364
+ }` )
279
365
})
280
366
281
367
ctx := context .Background ()
@@ -324,23 +410,79 @@ func TestRepositoriesService_DownloadContentsWithMeta_Success(t *testing.T) {
324
410
})
325
411
}
326
412
327
- func TestRepositoriesService_DownloadContentsWithMeta_FailedResponse (t * testing.T ) {
413
+ func TestRepositoriesService_DownloadContentsWithMeta_SuccessForDirectory (t * testing.T ) {
328
414
t .Parallel ()
329
415
client , mux , serverURL := setup (t )
330
416
331
417
mux .HandleFunc ("/repos/o/r/contents/d" , func (w http.ResponseWriter , r * http.Request ) {
332
418
testMethod (t , r , "GET" )
333
419
fmt .Fprint (w , `[{
420
+ "type": "file",
421
+ "name": "f",
422
+ "download_url": "` + serverURL + baseURLPath + `/download/f"
423
+ }]` )
424
+ })
425
+ mux .HandleFunc ("/download/f" , func (w http.ResponseWriter , r * http.Request ) {
426
+ testMethod (t , r , "GET" )
427
+ fmt .Fprint (w , "foo" )
428
+ })
429
+
430
+ ctx := context .Background ()
431
+ r , c , resp , err := client .Repositories .DownloadContentsWithMeta (ctx , "o" , "r" , "d/f" , nil )
432
+ if err != nil {
433
+ t .Errorf ("Repositories.DownloadContentsWithMeta returned error: %v" , err )
434
+ }
435
+
436
+ if got , want := resp .Response .StatusCode , http .StatusOK ; got != want {
437
+ t .Errorf ("Repositories.DownloadContentsWithMeta returned status code %v, want %v" , got , want )
438
+ }
439
+
440
+ bytes , err := io .ReadAll (r )
441
+ if err != nil {
442
+ t .Errorf ("Error reading response body: %v" , err )
443
+ }
444
+ r .Close ()
445
+
446
+ if got , want := string (bytes ), "foo" ; got != want {
447
+ t .Errorf ("Repositories.DownloadContentsWithMeta returned %v, want %v" , got , want )
448
+ }
449
+
450
+ if c != nil && c .Name != nil {
451
+ if got , want := * c .Name , "f" ; got != want {
452
+ t .Errorf ("Repositories.DownloadContentsWithMeta returned content name %v, want %v" , got , want )
453
+ }
454
+ } else {
455
+ t .Errorf ("Returned RepositoryContent is null" )
456
+ }
457
+ }
458
+
459
+ func TestRepositoriesService_DownloadContentsWithMeta_FailedResponse (t * testing.T ) {
460
+ t .Parallel ()
461
+ client , mux , serverURL := setup (t )
462
+
463
+ downloadURL := fmt .Sprintf ("%s%s/download/f" , serverURL , baseURLPath )
464
+
465
+ mux .HandleFunc ("/repos/o/r/contents/d/f" , func (w http.ResponseWriter , r * http.Request ) {
466
+ testMethod (t , r , "GET" )
467
+ fmt .Fprint (w , `{
334
468
"type": "file",
335
469
"name": "f",
336
- "download_url": "` + serverURL + baseURLPath + `/download/f "
337
- }] ` )
470
+ "download_url": "` + downloadURL + ` "
471
+ }` )
338
472
})
339
473
mux .HandleFunc ("/download/f" , func (w http.ResponseWriter , r * http.Request ) {
340
474
testMethod (t , r , "GET" )
341
475
w .WriteHeader (http .StatusInternalServerError )
342
476
fmt .Fprint (w , "foo error" )
343
477
})
478
+ mux .HandleFunc ("/repos/o/r/contents/d" , func (w http.ResponseWriter , r * http.Request ) {
479
+ testMethod (t , r , "GET" )
480
+ fmt .Fprint (w , `[{
481
+ "type": "file",
482
+ "name": "f",
483
+ "download_url": "` + downloadURL + `"
484
+ }]` )
485
+ })
344
486
345
487
ctx := context .Background ()
346
488
r , c , resp , err := client .Repositories .DownloadContentsWithMeta (ctx , "o" , "r" , "d/f" , nil )
@@ -375,23 +517,39 @@ func TestRepositoriesService_DownloadContentsWithMeta_NoDownloadURL(t *testing.T
375
517
t .Parallel ()
376
518
client , mux , _ := setup (t )
377
519
520
+ mux .HandleFunc ("/repos/o/r/contents/d/f" , func (w http.ResponseWriter , r * http.Request ) {
521
+ testMethod (t , r , "GET" )
522
+ fmt .Fprint (w , `{
523
+ "type": "file",
524
+ "name": "f",
525
+ }` )
526
+ })
378
527
mux .HandleFunc ("/repos/o/r/contents/d" , func (w http.ResponseWriter , r * http.Request ) {
379
528
testMethod (t , r , "GET" )
380
529
fmt .Fprint (w , `[{
381
530
"type": "file",
382
531
"name": "f",
532
+ "content": ""
383
533
}]` )
384
534
})
385
535
386
536
ctx := context .Background ()
387
- _ , _ , resp , err := client .Repositories .DownloadContentsWithMeta (ctx , "o" , "r" , "d/f" , nil )
537
+ reader , contents , resp , err := client .Repositories .DownloadContentsWithMeta (ctx , "o" , "r" , "d/f" , nil )
388
538
if err == nil {
389
539
t .Errorf ("Repositories.DownloadContentsWithMeta did not return expected error" )
390
540
}
391
541
542
+ if reader != nil {
543
+ t .Errorf ("Repositories.DownloadContentsWithMeta did not return expected reader" )
544
+ }
545
+
392
546
if resp == nil {
393
547
t .Errorf ("Repositories.DownloadContentsWithMeta did not return expected response" )
394
548
}
549
+
550
+ if contents == nil {
551
+ t .Errorf ("Repositories.DownloadContentsWithMeta did not return expected content" )
552
+ }
395
553
}
396
554
397
555
func TestRepositoriesService_DownloadContentsWithMeta_NoFile (t * testing.T ) {
0 commit comments