AzSDK.Test/TestCases/SVT/KeyVault/KeyVaultResource.ps1

Set-StrictMode -Version Latest 
class KeyVaultResource:TestResource{
    KeyVaultResource([TestCase] $testcase, [TestSettings] $testsettings):Base($testcase, $testsettings){
     
    }

    #Setting the properties as required by this resource type.
    [void]SetDerivedResourceProps(){
            $this.SetTenantId()
        #Pick the resource name from Params file if its not null
        if(![string]::IsNullOrEmpty($this.Params)){
                $this.ResourceName = $this.GetResourceNameFromARMJson($this.Params, "ResName", "value")
            }
        else{
            $this.ResourceName = "azsdktestkeyvault" #Else set the default resource name
        }
        $this.ResourceType = "Microsoft.KeyVault/vaults" 
    }

    [void]RemoveKeyVault()
    {
        try{
             Remove-AzureRmResource -ResourceName  $this.ResourceName -ResourceGroupName $this.ResourceGroupName -ResourceType $this.ResourceType -Force
        }
        catch{
                [CommonHelper]::Log("Error while Removing KeyVault " + $this.ResourceName, [MessageType]::Error)
        }
    }

    [void]SetKVDiagnosticsOn()
        {
        try{
              $storageAccount=$this.IfCommonStorageExists()
��������������if(!$storageAccount){
����������������������������$this.CreateCommonStorage()
                                    }
              $resourceId =  (Get-AzureRmResource -ResourceName  $this.ResourceName -ResourceGroupName $this.ResourceGroupName).ResourceId
              $diagnosticStorageAccountId = (Get-AzureRmResource -ResourceName $this.settings.CommonStorageAcctName -ResourceGroupName $this.ResourceGroupName).ResourceId

             Set-AzureRmDiagnosticSetting   -ResourceId $resourceId `
                                            -Enable $true `
                                            -StorageAccountId $diagnosticStorageAccountId `
                                            -RetentionInDays 365 `
                                            -RetentionEnabled $true `
                                            -ErrorAction Stop 
            }
        catch{
                [CommonHelper]::Log("Error while setting Diagnostics setting On" + $this.ResourceName, [MessageType]::Error)
        }
    }

    [void]SetKVDiagnosticsOff()
        {
        try{
              $storageAccount=$this.IfCommonStorageExists()
��������������if(!$storageAccount){
����������������������������$this.CreateCommonStorage()
                                    }
              $resourceId =  (Get-AzureRmResource -ResourceName  $this.ResourceName -ResourceGroupName $this.ResourceGroupName).ResourceId
              $diagnosticStorageAccountId = (Get-AzureRmResource -ResourceName $this.settings.CommonStorageAcctName -ResourceGroupName $this.ResourceGroupName).ResourceId

             Set-AzureRmDiagnosticSetting   -ResourceId $resourceId `
                                            -Enable $False `
                                            -StorageAccountId $diagnosticStorageAccountId `
                                            -RetentionInDays 10 `
                                            -RetentionEnabled $False `
                                            -ErrorAction Stop 
            }
        catch{
                [CommonHelper]::Log("Error while setting Diagnostics setting On" + $this.ResourceName, [MessageType]::Error)
        }
    }



    [void]SetAllAdvanceAcessPolicies()
        {
        try{
             Set-AzureRmKeyVaultAccessPolicy -VaultName $this.ResourceName -ResourceGroupName $this.ResourceGroupName  -EnabledForDeployment -EnabledForTemplateDeployment -EnabledForDiskEncryption
        }
        catch{
                [CommonHelper]::Log("Error while setting Advance Access Policies"+ $this.ResourceName, [MessageType]::Error)
        }
    }

    [void]ResetAllAdvanceAcessPolicies()
        {
        try{
             Remove-AzureRmKeyVaultAccessPolicy -VaultName $this.ResourceName -ResourceGroupName $this.ResourceGroupName  -EnabledForDeployment -EnabledForTemplateDeployment -EnabledForDiskEncryption 
        }
        catch{
                [CommonHelper]::Log("Error while re-setting Advance Access Policies"+ $this.ResourceName, [MessageType]::Error)
        }
    }

    [void]GetReadAcessOnKey(){
        try{
                    $adUserDtls = (Get-AzureRmADUser -UserPrincipalName (Get-AzureRmContext).Account.Id)
                    $ObjId = $adUserDtls.Id.Guid 
            
                    Set-AzureRmKeyVaultAccessPolicy -VaultName $this.ResourceName -ResourceGroupName $this.ResourceGroupName   -PermissionsToKeys all -PermissionsToSecrets all -ObjectId $ObjId
            }
            catch{
                    [CommonHelper]::Log("Error while setting Access Policies:"+ $this.ResourceName, [MessageType]::Error)
            }
    }

    [void]SetAllAcessPolicies()
        {
        try{
            $adUserDtls = (Get-AzureRmADUser -UserPrincipalName (Get-AzureRmContext).Account.Id)
            $ObjId = $adUserDtls.Id.Guid 
            
            Set-AzureRmKeyVaultAccessPolicy -VaultName $this.ResourceName -ResourceGroupName $this.ResourceGroupName   -PermissionsToKeys all -PermissionsToSecrets all  -PermissionsToCertificates all `
                                -ObjectId $ObjId
        }
        catch{
                [CommonHelper]::Log("Error while setting Access Policies:"+ $this.ResourceName, [MessageType]::Error)
        }
    }

    [void]ResetAllAcessPolicies()
        {
        try{
             $adUserDtls = (Get-AzureRmADUser -UserPrincipalName (Get-AzureRmContext).Account.Id)
            $ObjId = $adUserDtls.Id.Guid 
            
            Set-AzureRmKeyVaultAccessPolicy -VaultName $this.ResourceName -ResourceGroupName $this.ResourceGroupName   -PermissionsToKeys list -PermissionsToSecrets list  -PermissionsToCertificates get `
                                -ObjectId $ObjId
        }
        catch{
                [CommonHelper]::Log("Error while re-setting Access Policies"+ $this.ResourceName, [MessageType]::Error)
        }
    }

    [void]AddNonHSMKeyWithExpiryDate()
        {
        try{ 
            Add-AzureKeyVaultKey -VaultName  $this.ResourceName -Name "AzSDKTestKey01" -Expires (get-date).AddDays(90) -Destination Software 
        }
        catch{
                [CommonHelper]::Log("Error while adding Non-HSM key with expiry date:"+ $this.ResourceName, [MessageType]::Error)
        }
    }
    

    [void] SetTenantId(){
        try{
            $Subscription=Get-AzureRmSubscription -SubscriptionId $this.settings.SubscriptionId | select -Property TenantId
            $paramFile = [CommonHelper]::GetRootPath() + "\TestCases\"+$this.TestCase.Feature+"\"+$this.TestCase.ModuleName+"\TestData\"+$this.TestCase.ParamFileName
            
            if(!([string]::IsNullOrEmpty($paramFile))){

            [CommonHelper]::SetValueIntoJson($paramFile, "tenant", "value",  $Subscription.TenantId)
            }
        }
        catch{
            [CommonHelper]::Log("Failed to set tenant id in template file!", [MessageType]::Error)
        }
    }
}