@@ -140,7 +140,7 @@ def post_application_callback(request, uri, response_headers):
140
140
return [
141
141
201 ,
142
142
{"Content-Type" : "application/json" },
143
- open ("tests/testdata/rstudio-responses/create- application.json" , "r" ).read (),
143
+ open ("tests/testdata/rstudio-responses/application.json" , "r" ).read (),
144
144
]
145
145
146
146
httpretty .register_uri (
@@ -278,6 +278,172 @@ def post_deploy_callback(request, uri, response_headers):
278
278
if original_server_value :
279
279
os .environ ["CONNECT_SERVER" ] = original_server_value
280
280
281
+ @httpretty .activate (verbose = True , allow_net_connect = False )
282
+ def test_redeploy_manifest_shinyapps (self ):
283
+ original_api_key_value = os .environ .pop ("CONNECT_API_KEY" , None )
284
+ original_server_value = os .environ .pop ("CONNECT_SERVER" , None )
285
+
286
+ httpretty .register_uri (
287
+ httpretty .GET ,
288
+ "https://api.shinyapps.io/v1/users/me" ,
289
+ body = open ("tests/testdata/rstudio-responses/get-user.json" , "r" ).read (),
290
+ status = 200 ,
291
+ )
292
+ httpretty .register_uri (
293
+ httpretty .GET ,
294
+ "https://api.shinyapps.io/v1/applications"
295
+ "?filter=name:like:shinyapp&offset=0&count=100&use_advanced_filters=true" ,
296
+ body = open ("tests/testdata/rstudio-responses/get-applications.json" , "r" ).read (),
297
+ adding_headers = {"Content-Type" : "application/json" },
298
+ status = 200 ,
299
+ )
300
+ httpretty .register_uri (
301
+ httpretty .GET ,
302
+ "https://api.shinyapps.io/v1/accounts/" ,
303
+ body = open ("tests/testdata/rstudio-responses/get-accounts.json" , "r" ).read (),
304
+ adding_headers = {"Content-Type" : "application/json" },
305
+ status = 200 ,
306
+ )
307
+
308
+ httpretty .register_uri (
309
+ httpretty .GET ,
310
+ "https://api.shinyapps.io/v1/applications/8442" ,
311
+ body = open ("tests/testdata/rstudio-responses/application.json" , "r" ).read (),
312
+ adding_headers = {"Content-Type" : "application/json" },
313
+ status = 200 ,
314
+ )
315
+
316
+ def post_application_property_callback (request , uri , response_headers ):
317
+ parsed_request = _load_json (request .body )
318
+ try :
319
+ assert parsed_request == {"value" : "private" }
320
+ except AssertionError as e :
321
+ return _error_to_response (e )
322
+ return [
323
+ 201 ,
324
+ {},
325
+ b"" ,
326
+ ]
327
+
328
+ httpretty .register_uri (
329
+ httpretty .PUT ,
330
+ "https://api.shinyapps.io/v1/applications/8442/properties/application.visibility" ,
331
+ body = post_application_property_callback ,
332
+ status = 200 ,
333
+ )
334
+
335
+ def post_bundle_callback (request , uri , response_headers ):
336
+ parsed_request = _load_json (request .body )
337
+ del parsed_request ["checksum" ]
338
+ del parsed_request ["content_length" ]
339
+ try :
340
+ assert parsed_request == {
341
+ "application" : 8442 ,
342
+ "content_type" : "application/x-tar" ,
343
+ }
344
+ except AssertionError as e :
345
+ return _error_to_response (e )
346
+ return [
347
+ 201 ,
348
+ {"Content-Type" : "application/json" },
349
+ open ("tests/testdata/rstudio-responses/create-bundle.json" , "r" ).read (),
350
+ ]
351
+
352
+ httpretty .register_uri (
353
+ httpretty .POST ,
354
+ "https://api.shinyapps.io/v1/bundles" ,
355
+ body = post_bundle_callback ,
356
+ )
357
+
358
+ httpretty .register_uri (
359
+ httpretty .PUT ,
360
+ "https://lucid-uploads-staging.s3.amazonaws.com/bundles/application-8442/"
361
+ "6c9ed0d91ee9426687d9ac231d47dc83.tar.gz"
362
+ "?AWSAccessKeyId=theAccessKeyId"
363
+ "&Signature=dGhlU2lnbmF0dXJlCg%3D%3D"
364
+ "&content-md5=D1blMI4qTiI3tgeUOYXwkg%3D%3D"
365
+ "&content-type=application%2Fx-tar"
366
+ "&x-amz-security-token=dGhlVG9rZW4K"
367
+ "&Expires=1656715153" ,
368
+ body = "" ,
369
+ )
370
+
371
+ def post_bundle_status_callback (request , uri , response_headers ):
372
+ parsed_request = _load_json (request .body )
373
+ try :
374
+ assert parsed_request == {"status" : "ready" }
375
+ except AssertionError as e :
376
+ return _error_to_response (e )
377
+ return [303 , {"Location" : "https://api.shinyapps.io/v1/bundles/12640" }, "" ]
378
+
379
+ httpretty .register_uri (
380
+ httpretty .POST ,
381
+ "https://api.shinyapps.io/v1/bundles/12640/status" ,
382
+ body = post_bundle_status_callback ,
383
+ )
384
+
385
+ httpretty .register_uri (
386
+ httpretty .GET ,
387
+ "https://api.shinyapps.io/v1/bundles/12640" ,
388
+ body = open ("tests/testdata/rstudio-responses/get-accounts.json" , "r" ).read (),
389
+ adding_headers = {"Content-Type" : "application/json" },
390
+ status = 200 ,
391
+ )
392
+
393
+ def post_deploy_callback (request , uri , response_headers ):
394
+ parsed_request = _load_json (request .body )
395
+ try :
396
+ assert parsed_request == {"bundle" : 12640 , "rebuild" : False }
397
+ except AssertionError as e :
398
+ return _error_to_response (e )
399
+ return [
400
+ 303 ,
401
+ {"Location" : "https://api.shinyapps.io/v1/tasks/333" },
402
+ open ("tests/testdata/rstudio-responses/post-deploy.json" , "r" ).read (),
403
+ ]
404
+
405
+ httpretty .register_uri (
406
+ httpretty .POST ,
407
+ "https://api.shinyapps.io/v1/applications/8442/deploy" ,
408
+ body = post_deploy_callback ,
409
+ )
410
+
411
+ httpretty .register_uri (
412
+ httpretty .GET ,
413
+ "https://api.shinyapps.io/v1/tasks/333" ,
414
+ body = open ("tests/testdata/rstudio-responses/get-task.json" , "r" ).read (),
415
+ adding_headers = {"Content-Type" : "application/json" },
416
+ status = 200 ,
417
+ )
418
+
419
+ runner = CliRunner ()
420
+ args = [
421
+ "deploy" ,
422
+ "manifest" ,
423
+ get_manifest_path ("shinyapp" ),
424
+ "--account" ,
425
+ "some-account" ,
426
+ "--token" ,
427
+ "someToken" ,
428
+ "--secret" ,
429
+ "c29tZVNlY3JldAo=" ,
430
+ "--title" ,
431
+ "myApp" ,
432
+ "--visibility" ,
433
+ "private" ,
434
+ "--app-id" ,
435
+ "8442" ,
436
+ ]
437
+ try :
438
+ result = runner .invoke (cli , args )
439
+ assert result .exit_code == 0 , result .output
440
+ finally :
441
+ if original_api_key_value :
442
+ os .environ ["CONNECT_API_KEY" ] = original_api_key_value
443
+ if original_server_value :
444
+ os .environ ["CONNECT_SERVER" ] = original_server_value
445
+
446
+
281
447
@httpretty .activate (verbose = True , allow_net_connect = False )
282
448
@pytest .mark .parametrize (
283
449
"project_application_id,project_id" ,
0 commit comments