Public/functions/Invoke-DssTest.ps1
function Invoke-DssTest { <# .SYNOPSIS Runs the specified tests against the specified database(s) .PARAMETER SqlInstance .PARAMETER SqlCredential .PARAMETER ConfigPath .EXAMPLE Invoke-DssTest -SqlInstance localhost -ConfigPath c:\tests\config.json .EXAMPLE Invoke-DssTest -SqlInstance localhost -ConfigPath http://github.com/someone/SqlTest/raw/config.json .EXAMPLE Invoke-DssTest -SqlInstance localhost -ConfigPath c:\tests\secrets.json, http://github.com/someone/SqlTest/raw/config.json .EXAMPLE $Output = Invoke-DssTest -SqlInstance localhost -Config $config -Quiet #> [CmdletBinding(DefaultParameterSetName = "Default")] param ( [string[]]$ConfigPath, [string]$SqlInstance, [PSCredential]$SqlCredential, [string]$Database, [switch]$UserConfig, [switch]$RoleConfig, [switch]$SchemaConfig, [switch]$ObjectConfig, [switch]$NoOutput, [object]$Config, [switch]$Quiet, [switch]$IncludeSystemObjects ) begin { } process { $configSwitch = $true if ($UserConfig -eq $True -or $SchemaConfig -eq $True -or $RoleConfig -eq $True -or $ObjectConfig -eq $True) { $configSwitch = $false } if ($Quiet -eq $true) { $show = 'None' } else { $show = 'All' } if ($UserConfig -eq $True -or $configSwitch) { Write-Verbose -Message "Testing User config" $usersResults = Invoke-Pester -Script @{ Path = "$Script:dssmoduleroot\Checks\Users.Tests.ps1"; Parameters = @{SqlInstance = $sqlInstance; SqlCredential = $sqlCredential; Config = $config; Database = $database} } -PassThru -Show $show } if ($RoleConfig -eq $True -or $configSwitch) { Write-Verbose -Message "Testing Role config" $rolesResults = Invoke-Pester -Script @{ Path = "$Script:dssmoduleroot\Checks\Roles.Tests.ps1"; Parameters = @{SqlInstance = $sqlInstance; SqlCredential = $sqlCredential; Config = $config; Database = $database} } -PassThru -Show $show } if ($SchemaConfig -eq $True -or $configSwitch) { Write-Verbose -Message "Testing Schema config" $schemaResults = Invoke-Pester -Script @{ Path = "$Script:dssmoduleroot\Checks\Schemas.Tests.ps1"; Parameters = @{SqlInstance = $sqlInstance; SqlCredential = $sqlCredential; Config = $config; Database = $database; IncludeSystemObjects = $IncludeSystemObjects } } -PassThru -Show $show } if ($ObjectConfig -eq $True -or $configSwitch) { Write-Verbose -Message "Testing Object config" $objectResults = Invoke-Pester -Script @{ Path = "$Script:dssmoduleroot\Checks\Objects.Tests.ps1"; Parameters = @{SqlInstance = $sqlInstance; SqlCredential = $sqlCredential; Config = $config; Database = $database} } -PassThru -Show $show } if ($NoOutput -ne $true){ [PSCustomObject]@{ usersResults = $usersResults rolesResults = $rolesResults schemaResults = $schemaResults objectRestults = $objectResults } } } end {} } |