# Assumes steps in deploy-test-resources.yml was run previously. Requires
# environment variable: <ServiceDirectory>_RESOURCE_GROUP and Az PowerShell module

parameters:
  ServiceDirectory: ''
  SubscriptionConfiguration: $(SubscriptionConfiguration)
  ServiceConnection: not-specified
  ResourceType: test
  EnvVars: {}
  UseFederatedAuth: true

# SubscriptionConfiguration will be splat into the parameters of the test
# resources script. It should be JSON in the form:
# {
#   "SubscriptionId": "<subscription id>",
#   "TenantId": "<tenant id>",
#   "TestApplicationId": "<test app id>",
#   "TestApplicationSecret": "<test app secret>",
#   "ProvisionerApplicationId": "<provisioner app id>",
#   "ProvisionerApplicationSecret": "<provisioner app secret>",
#   "Environment": "AzureCloud | AzureGov | AzureChina | <other environment>"
# }
# The Remove-TestResources.ps1 script accommodates extra parameters so it will
# not error when parameters are provided which the script doesn't use.

steps:
  - ${{ if eq('true', parameters.UseFederatedAuth) }}:
    - task: AzurePowerShell@5
      displayName: Remove test resources
      condition: and(eq(variables['CI_HAS_DEPLOYED_RESOURCES'], 'true'), ne(variables['Skip.RemoveTestResources'], 'true'))
      continueOnError: true
      env:
        PoolSubnet: $(PoolSubnet)
        ${{ insert }}: ${{ parameters.EnvVars }}
      inputs:
        azureSubscription: ${{ parameters.ServiceConnection }}
        azurePowerShellVersion: LatestVersion
        pwsh: true
        ScriptType: InlineScript
        Inline: |
          eng/common/scripts/Import-AzModules.ps1

          $subscriptionConfiguration = @"
            ${{ parameters.SubscriptionConfiguration }}
          "@ | ConvertFrom-Json -AsHashtable;

          eng/common/TestResources/Remove-TestResources.ps1 `
            @subscriptionConfiguration `
            -ResourceType '${{ parameters.ResourceType }}' `
            -ServiceDirectory "${{ parameters.ServiceDirectory }}" `
            -AllowIpRanges ('$(azsdk-corp-net-ip-ranges)' -split ',') `
            -CI `
            -Force `
            -Verbose

  - ${{ else }}:
    - pwsh: |
        eng/common/scripts/Import-AzModules.ps1

        $subscriptionConfiguration = @"
          ${{ parameters.SubscriptionConfiguration }}
        "@ | ConvertFrom-Json -AsHashtable;

        eng/common/TestResources/Remove-TestResources.ps1 `
          @subscriptionConfiguration `
          -ResourceType '${{ parameters.ResourceType }}' `
          -ServiceDirectory "${{ parameters.ServiceDirectory }}" `
          -ServicePrincipalAuth `
          -AllowIpRanges ('$(azsdk-corp-net-ip-ranges)' -split ',') `
          -CI `
          -Force `
          -Verbose
      displayName: Remove test resources
      condition: and(eq(variables['CI_HAS_DEPLOYED_RESOURCES'], 'true'), ne(variables['Skip.RemoveTestResources'], 'true'))
      continueOnError: true
      env:
        PoolSubnet: $(PoolSubnet)
        ${{ insert }}: ${{ parameters.EnvVars }}
