@@ -18,6 +18,18 @@ $snapshotRgName = 'onesdksnapshots'
18
18
$snapshotAppName = ' onesdkpremapp2'
19
19
$snapshotAppSlot = ' staging'
20
20
21
+ # Restoring a deleted web app requires an app to have a snapshot available.
22
+ # Deploy a web app and wait at least an hour for a snapshot.
23
+ # Update these global variables to re-record Test-RestoreDeletedWebApp.
24
+ $undeleteRgName = ' ps8425'
25
+ $undeleteAppName = ' ps1705'
26
+ $undeleteSlot = ' testslot'
27
+
28
+ # !!! Storage keys and SAS URIs will be stored in the backup test recordings !!!
29
+ # To find them, open the json files in a text editor and search for "listkeys"
30
+ # to find the storage keys. Search for StorageAccountUrl to find the SAS URIs.
31
+ # Remove them when re-recording the tests so that secrets are not shared.
32
+
21
33
function Test-CreateNewWebAppBackup
22
34
{
23
35
$rgName = Get-ResourceGroupName
@@ -374,6 +386,120 @@ function Test-RestoreWebAppSnapshot
374
386
$job | Wait-Job
375
387
}
376
388
389
+ function Test-GetDeletedWebApp
390
+ {
391
+ # Setup
392
+ $rgname = Get-ResourceGroupName
393
+ $wname = Get-WebsiteName
394
+ $slotName = " staging"
395
+ $location = Get-WebLocation
396
+ $whpName = Get-WebHostPlanName
397
+ $tier = " Standard"
398
+
399
+ try
400
+ {
401
+ # Setup
402
+ New-AzureRmResourceGroup - Name $rgname - Location $location
403
+ New-AzureRmAppServicePlan - ResourceGroupName $rgname - Name $whpName - Location $location - Tier $tier
404
+ New-AzureRmWebApp - ResourceGroupName $rgname - Name $wname - Location $location - AppServicePlan $whpName
405
+ New-AzureRmWebAppSlot - ResourceGroupName $rgname - Name $wname - Slot $slotName - AppServicePlan $planName
406
+ Remove-AzureRmWebAppSlot - ResourceGroupName $rgname - Name $wname - Slot $slotName - Force
407
+ Remove-AzureRmWebApp - ResourceGroupName $rgname - Name $wname - Force
408
+
409
+ $deletedApp = Get-AzureRmDeletedWebApp - ResourceGroupName $rgname - Name $wname - Slot " Production"
410
+ Assert-NotNull $deletedApp
411
+ Assert-AreEqual $rgname $deletedApp.ResourceGroupName
412
+ Assert-AreEqual $wname $deletedApp.Name
413
+
414
+ $deletedSlot = Get-AzureRmDeletedWebApp - ResourceGroupName $rgname - Name $wname - Slot $slotName
415
+ Assert-NotNull $deletedSlot
416
+ Assert-AreEqual $rgname $deletedSlot.ResourceGroupName
417
+ Assert-AreEqual $wname $deletedSlot.Name
418
+ Assert-AreEqual $slotName $deletedSlot.Slot
419
+ }
420
+ finally
421
+ {
422
+ # Cleanup
423
+ Remove-AzureRmAppServicePlan - ResourceGroupName $rgname - Name $whpName - Force
424
+ Remove-AzureRmResourceGroup - Name $rgname - Force
425
+ }
426
+ }
427
+
428
+ function Test-RestoreDeletedWebAppToExisting
429
+ {
430
+ # Setup
431
+ $rgname = Get-ResourceGroupName
432
+ $wname = Get-WebsiteName
433
+ $slotName = " staging"
434
+ $appWithSlotName = " $wname /$slotName "
435
+ $location = Get-WebLocation
436
+ $whpName = Get-WebHostPlanName
437
+ $tier = " Standard"
438
+
439
+ try
440
+ {
441
+ New-AzureRmResourceGroup - Name $rgname - Location $location
442
+ New-AzureRmAppServicePlan - ResourceGroupName $rgname - Name $whpName - Location $location - Tier $tier
443
+ New-AzureRmWebApp - ResourceGroupName $rgname - Name $wname - Location $location - AppServicePlan $whpName
444
+ New-AzureRmWebAppSlot - ResourceGroupName $rgname - Name $wname - Slot $slotName - AppServicePlan $planName
445
+
446
+ $deletedApp = Get-AzureRmDeletedWebApp - ResourceGroupName $undeleteRgName - Name $undeleteAppName - Slot " Production"
447
+ # Test the InputObject parameter set
448
+ $restoredApp = Restore-AzureRmDeletedWebApp $deletedApp - TargetResourceGroupName $rgname - TargetName $wname - Force
449
+ # Test the FromDeletedResourceName parameter set
450
+ $restoredSlot = Restore-AzureRmDeletedWebApp - ResourceGroupName $undeleteRgName - Name $undeleteAppName - Slot $undeleteSlot - TargetResourceGroupName $rgname - TargetName $wname - TargetSlot $slotName - Force
451
+
452
+ Assert-NotNull $restoredApp
453
+ Assert-AreEqual $rgname $restoredApp.ResourceGroup
454
+ Assert-AreEqual $wname $restoredApp.Name
455
+
456
+ Assert-NotNull $restoredSlot
457
+ Assert-AreEqual $rgname $restoredSlot.ResourceGroup
458
+ Assert-AreEqual $appWithSlotName $restoredSlot.Name
459
+ }
460
+ finally
461
+ {
462
+ # Cleanup
463
+ Remove-AzureRmWebAppSlot - ResourceGroupName $rgname - Name $wname - Slot $slotName - Force
464
+ Remove-AzureRmWebApp - ResourceGroupName $rgname - Name $wname - Force
465
+ Remove-AzureRmAppServicePlan - ResourceGroupName $rgname - Name $whpName - Force
466
+ Remove-AzureRmResourceGroup - Name $rgname - Force
467
+ }
468
+ }
469
+
470
+ function Test-RestoreDeletedWebAppToNew
471
+ {
472
+ # Setup
473
+ $rgname = Get-ResourceGroupName
474
+ $location = Get-WebLocation
475
+ $whpName = Get-WebHostPlanName
476
+ $tier = " Standard"
477
+
478
+ try
479
+ {
480
+ # Setup
481
+ New-AzureRmResourceGroup - Name $rgname - Location $location
482
+ New-AzureRmAppServicePlan - ResourceGroupName $rgname - Name $whpName - Location $location - Tier $tier
483
+ $deletedApp = Get-AzureRmDeletedWebApp - ResourceGroupName $undeleteRgName - Name $undeleteAppName - Slot " Production"
484
+ # Test piping the deleted app
485
+ $job = $deletedApp | Restore-AzureRmDeletedWebApp - TargetResourceGroupName $rgname - TargetAppServicePlanName $whpName - Force - AsJob
486
+ $result = $job | Wait-Job
487
+ Assert-AreEqual " Completed" $result.State ;
488
+
489
+ $restoredApp = $job | Receive-Job
490
+ Assert-NotNull $restoredApp
491
+ Assert-AreEqual $rgname $restoredApp.ResourceGroup
492
+ Assert-AreEqual $undeleteAppName $restoredApp.Name
493
+ }
494
+ finally
495
+ {
496
+ # Cleanup
497
+ Remove-AzureRmWebApp - ResourceGroupName $rgname - Name $undeleteAppName - Force
498
+ Remove-AzureRmAppServicePlan - ResourceGroupName $rgname - Name $whpName - Force
499
+ Remove-AzureRmResourceGroup - Name $rgname - Force
500
+ }
501
+ }
502
+
377
503
# Utility functions
378
504
379
505
# Creates a new web app
0 commit comments