ps/Modules/Alkami.PowerShell.Database/Public/Split-ConnectionString.tests.ps1
2023-05-30 22:51:22 -07:00

126 lines
5.4 KiB
PowerShell

. $PSScriptRoot\..\..\Load-PesterModules.ps1
$here = Split-Path -Parent $MyInvocation.MyCommand.Path
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path) -replace '\.tests\.', '.'
$functionPath = Join-Path -Path $here -ChildPath $sut
Write-Host "Overriding SUT: $functionPath"
Import-Module $functionPath -Force
$moduleForMock = ""
Describe "Split-ConnectionString" {
Context "Parameter Validation" {
It "Throws on Null ConnectionString" {
{ Split-ConnectionString -ConnectionString $null } | Should Throw
}
It "Throws on Invalid Connection String" {
{ Split-ConnectionString -ConnectionString "Invalid Connection String" } | Should Throw
}
It "Throws on Invalid Integrated Security Value" {
# this value is boolean, which behind the scenes can be converted from SSPI to true, or read as true/false, or empty as false
$testConnectionString = "data source=Test-DataSource;Integrated Security=INVALIDVALUE;Database=TestDatabase;MultiSubnetFailover=True"
{ Split-ConnectionString -ConnectionString $testConnectionString } | Should Throw
}
It "Throws on Invalid MultiSubnet Failover Value" {
$testConnectionString = "data source=Test-DataSource;Integrated Security=SSPI;Database=TestDatabase;MultiSubnetFailover=INVALIDVALUE"
{ Split-ConnectionString -ConnectionString $testConnectionString } | Should Throw
}
}
Context "Returns Correct Datatype" {
$testConnectionString = "data source=Test-DataSource;Integrated Security=SSPI;Database=TestDatabase;MultiSubnetFailover=True"
$shortTestConnectionString = "data source=Test-DataSource;Database=TestDatabase;"
It "Returns Type PSCustomObject Without Full Parameter" {
{ Split-ConnectionString -ConnectionString $testConnectionString } | Should -BeOfType [PSCustomObject]
}
It "Returns Type PSCustomObject Without Full Parameter And With Minimal Connection String" {
{ Split-ConnectionString -ConnectionString $shortTestConnectionString } | Should -BeOfType [PSCustomObject]
}
It "Returns Type PSCustomObject With Full Parameter" {
{ Split-ConnectionString -ConnectionString $testConnectionString -Full} | Should -BeOfType [PSCustomObject]
}
It "Returns Type PSCustomObject With Full Parameter And With Minimal Connection String" {
{ Split-ConnectionString -ConnectionString $shortTestConnectionString -Full } | Should -BeOfType [PSCustomObject]
}
}
Context "Returns Data Correctly Without Full Parameter" {
$testConnectionString = "data source=Test-DataSource;Integrated Security=SSPI;Database=TestDatabase;MultiSubnetFailover=True"
$return = Split-ConnectionString -ConnectionString $testConnectionString
It "Returns DataSource" {
$return.DataSource | Should -Be "Test-DataSource"
}
# Integrated Security is a boolean - set as either true or SSPI in connection string for same result
It "Returns IntegratedSecurity" {
$return.IntegratedSecurity | Should -BeTrue
}
# Database in connection string converted to InitialCatalog
It "Returns InitialCatalog" {
$return.InitialCatalog | Should -Be "TestDatabase"
}
It "Returns MultiSubnetFailover" {
$return.MultiSubnetFailover | Should -BeTrue
}
}
Context "Returns Data Correctly With Minimal Connection String Without Full Parameter" {
$testConnectionString = "data source=Test-DataSource;Database=TestDatabase;"
$return = Split-ConnectionString -ConnectionString $testConnectionString
It "Returns DataSource" {
$return.DataSource | Should -Be "Test-DataSource"
}
# Integrated Security is a boolean - set as either true or SSPI in connection string for same result
It "Returns IntegratedSecurity" {
$return.IntegratedSecurity | Should -BeFalse
}
# Database in connection string converted to InitialCatalog
It "Returns InitialCatalog" {
$return.InitialCatalog | Should -Be "TestDatabase"
}
It "Returns MultiSubnetFailover" {
$return.MultiSubnetFailover | Should -BeFalse
}
}
Context "Returns Data Correctly With Full Parameter" {
$testConnectionString = "data source=Test-DataSource;Integrated Security=SSPI;Database=TestDatabase;MultiSubnetFailover=True"
$return = Split-ConnectionString -ConnectionString $testConnectionString -Full
It "Returns DataSource" {
$return.DataSource | Should -Be "Test-DataSource"
}
# Integrated Security is a boolean - set as either true or SSPI in connection string for same result
It "Returns IntegratedSecurity" {
$return.IntegratedSecurity | Should -BeTrue
}
# Database in connection string converted to InitialCatalog
It "Returns InitialCatalog" {
$return.InitialCatalog | Should -Be "TestDatabase"
}
It "Returns MultiSubnetFailover" {
$return.MultiSubnetFailover | Should -BeTrue
}
# validate more than the basic 4 properties are being returned. keys isn't working.
It "Returns PacketSize" {
$return.PacketSize | Should -BeOfType [Int32]
}
}
}