Core/Settings/TestSettings.ps1

Set-StrictMode -Version Latest 
class TestSettings{
    [string] $SubscriptionId = [string]::Empty
    [string] $CommonStorageAcctName = [string]::Empty
    [string] $CommonStorageAcctId = [string]::Empty
    [string] $StorageAlertName = [string]::Empty
    [string] $StorageAlertId = [string]::Empty
    [string] $CommonKeyVaultUrl = [string]::Empty
    [string] $ResourceGroupName = [string]::Empty
    [string[]] $EmailAccounts = @()
    [string] $SecurityPOCEmail = [string]::Empty
    [string] $SecurityPhoneNo = [string]::Empty
    [string] $AlertName = [string]::Empty
    [string] $OMSWorkspaceId = [string]::Empty
    [string] $OMSSharedKey = [string]::Empty
    [string] $AzSKResourceGroupName = [string]::Empty
    [string] $CAAutomationAccountName = [string]::Empty
    [string] $CAStorageContainerName = [string]::Empty
    [string] $CAConnectionName = [string]::Empty
    [string] $OrgPolicyURL = [string]::Empty
    [string] $AzSKAppFolderPath = [string]::Empty

    TestSettings([string] $subId){
        [string] $path = [CommonHelper]::GetRootPath() +"\TestSettings.json"
        $this.SubscriptionId = $subId
        try{
            $testSettings = Get-Content -Path $path | ConvertFrom-Json
            if($null -ne $testSettings){
                $this.ResourceGroupName = $testSettings.ResourceGroupName
                $this.CommonStorageAcctName = $testSettings.CommonStorageAcctName
                $this.CommonStorageAcctId = "/subscriptions/" +$this.SubscriptionId + "/resourceGroups/" + $this.ResourceGroupName + "/providers/Microsoft.Storage/storageAccounts/" + $this.CommonStorageAcctName
                $this.StorageAlertName = $testSettings.StorageAlertName
                $this.StorageAlertId = "/subscriptions/" +$this.SubscriptionId + "/resourceGroups/" + $this.ResourceGroupName + "/providers/microsoft.insights/alertrules/" + $this.StorageAlertName
                if($testSettings.EmailAccounts.Contains(",")){
                 $this.EmailAccounts = $testSettings.EmailAccounts.Split(",").Trim()
                }
                else{
                    $this.EmailAccounts = $testSettings.EmailAccounts
                }
                $this.CommonKeyVaultUrl = "/subscriptions/" +$this.SubscriptionId + "/resourceGroups/" + $this.ResourceGroupName + "/providers/Microsoft.KeyVault/vaults/" + $testSettings.CommonKeyVaultName
                $this.SecurityPOCEmail = $testSettings.SecurityPOCEmail
                $this.AlertName = $testSettings.AlertName
                $this.OMSWorkspaceId = $testSettings.OMSWorkspaceId
                $this.OMSSharedKey = $testSettings.OMSSharedKey
                $this.SecurityPhoneNo = $testSettings.SecurityPhoneNo
                $this.CAAutomationAccountName = $testSettings.CAAutomationAccountName
                $this.CAStorageContainerName = $testSettings.CAStorageContainerName
                $this.AzSKResourceGroupName = $testSettings.AzSKResourceGroupName
                $this.CAConnectionName = $testSettings.CAConnectionName
                $this.OrgPolicyURL = $testSettings.OrgPolicyURL
                $this.AzSKAppFolderPath = $testSettings.AzSKAppFolderPath
            }
        }
        catch{
            [CommonHelper]::Log("Error while fetching the Test Settings", [MessageType]::Error)
            [CommonHelper]::Log($_, [MessageType]::Error)
        }
    }

    TestSettings([string]$subId, [PSObject] $settings){
        #[string] $path = [CommonHelper]::GetRootPath() +"\TestSettings.json"
        $this.SubscriptionId = $subId
        try{
            #$testSettings = Get-Content -Path $path | ConvertFrom-Json
            $testSettings=$settings
            if($null -ne $testSettings){
                $this.ResourceGroupName = $testSettings.ResourceGroupName
                $this.CommonStorageAcctName = $testSettings.CommonStorageAcctName
                $this.CommonStorageAcctId = "/subscriptions/" +$this.SubscriptionId + "/resourceGroups/" + $this.ResourceGroupName + "/providers/Microsoft.Storage/storageAccounts/" + $this.CommonStorageAcctName
                $this.StorageAlertName = $testSettings.StorageAlertName
                $this.StorageAlertId = "/subscriptions/" +$this.SubscriptionId + "/resourceGroups/" + $this.ResourceGroupName + "/providers/microsoft.insights/alertrules/" + $this.StorageAlertName
                if($testSettings.EmailAccounts.Contains(",")){
                 $this.EmailAccounts = $testSettings.EmailAccounts.Split(",").Trim()
                }
                else{
                    $this.EmailAccounts = $testSettings.EmailAccounts
                }
                $this.CommonKeyVaultUrl = "/subscriptions/" +$this.SubscriptionId + "/resourceGroups/" + $this.ResourceGroupName + "/providers/Microsoft.KeyVault/vaults/" + $testSettings.CommonKeyVaultName
                $this.SecurityPOCEmail = $testSettings.SecurityPOCEmail
                $this.AlertName = $testSettings.AlertName
                $this.OMSWorkspaceId = $testSettings.OMSWorkspaceId
                $this.OMSSharedKey = $testSettings.OMSSharedKey
                $this.SecurityPhoneNo = $testSettings.SecurityPhoneNo
                $this.CAAutomationAccountName = $testSettings.CAAutomationAccountName
                $this.CAStorageContainerName = $testSettings.CAStorageContainerName
                $this.AzSKResourceGroupName = $testSettings.AzSKResourceGroupName
                $this.CAConnectionName = $testSettings.CAConnectionName
                $this.OrgPolicyURL = $testSettings.OrgPolicyURL
                $this.AzSKAppFolderPath = $testSettings.AzSKAppFolderPath
            }
        }
        catch{
            [CommonHelper]::Log("Error while fetching the Test Settings", [MessageType]::Error)
            [CommonHelper]::Log($_, [MessageType]::Error)
        }
    }
}