. $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 = '' InModuleScope 'Alkami.DevOps.SystemEngineering' { Describe 'Get-SftpUserDefaultSecretString' { Context 'Parameter Validation' { It 'Throws if BucketName is Null' { { Get-SftpUserDefaultSecretString -BucketName $null } | Should -Throw } It 'Throws if BucketName is Empty' { { Get-SftpUserDefaultSecretString -BucketName '' } | Should -Throw } It 'Throws if HomeDirSuffix is Null' { { Get-SftpUserDefaultSecretString -BucketName 'TestPrefix' -HomeDirSuffix $null } | Should -Throw } It 'Throws if HomeDirSuffix is Empty' { { Get-SftpUserDefaultSecretString -BucketName 'TestPrefix' -HomeDirSuffix '' } | Should -Throw } It 'Throws if KmsArn is Null' { { Get-SftpUserDefaultSecretString -BucketName 'TestPrefix' -HomeDirSuffix 'TestSuffix' -KmsArn $null } | Should -Throw } It 'Throws if KmsArn is Empty' { { Get-SftpUserDefaultSecretString -BucketName 'TestPrefix' -HomeDirSuffix 'TestSuffix' -KmsArn '' } | Should -Throw } It 'Throws if RoleArn is Null' { { Get-SftpUserDefaultSecretString -BucketName 'TestPrefix' -HomeDirSuffix 'TestSuffix' -KmsArn 'TestKmsArn' -RoleArn $null } | Should -Throw } It 'Throws if RoleArn is Empty' { { Get-SftpUserDefaultSecretString -BucketName 'TestPrefix' -HomeDirSuffix 'TestSuffix' -KmsArn 'TestKmsArn' -RoleArn '' } | Should -Throw } It 'Throws if PasswordHash is Null' { { Get-SftpUserDefaultSecretString -BucketName 'TestPrefix' -HomeDirSuffix 'TestSuffix' -KmsArn 'TestKmsArn' -RoleArn 'TestRoleArn' -PasswordHash $null } | Should -Throw } It 'Throws if PasswordHash is Empty' { { Get-SftpUserDefaultSecretString -BucketName 'TestPrefix' -HomeDirSuffix 'TestSuffix' -KmsArn 'TestKmsArn' -RoleArn 'TestRoleArn' -PasswordHash '' } | Should -Throw } } Context 'Logic' { It 'Uses Provided Value for PasswordHash' { $result = Get-SftpUserDefaultSecretString -BucketName 'TestPrefix' -HomeDirSuffix 'TestSuffix' -KmsArn 'TestKmsArn' -RoleArn 'TestRoleArn' -PasswordHash 'TestPassword' $resultObj = ConvertFrom-Json $result $resultObj.Password | Should -BeExactly 'TestPassword' } It 'Uses Provided Value for RoleArn' { $result = Get-SftpUserDefaultSecretString -BucketName 'TestPrefix' -HomeDirSuffix 'TestSuffix' -KmsArn 'TestKmsArn' -RoleArn 'TestRoleArn' -PasswordHash 'TestPassword' $resultObj = ConvertFrom-Json $result $resultObj.Role | Should -BeExactly 'TestRoleArn' } It 'Uses Provided Value for KmsArn' { $result = Get-SftpUserDefaultSecretString -BucketName 'TestPrefix' -HomeDirSuffix 'TestSuffix' -KmsArn 'TestKmsArn' -RoleArn 'TestRoleArn' -PasswordHash 'TestPassword' $resultObj = ConvertFrom-Json $result $resultObj.Policy | Should -Match 'TestKmsArn' } It 'Uses Provided Value for BucketName' { $result = Get-SftpUserDefaultSecretString -BucketName 'TestPrefix' -HomeDirSuffix 'TestSuffix' -KmsArn 'TestKmsArn' -RoleArn 'TestRoleArn' -PasswordHash 'TestPassword' $resultObj = ConvertFrom-Json $result $resultObj.Policy | Should -Match 'TestPrefix' $resultObj.HomeDirectoryDetails | Should -Match 'TestPrefix' } It 'Uses Provided Value for HomeDirSuffix' { $result = Get-SftpUserDefaultSecretString -BucketName 'TestPrefix' -HomeDirSuffix 'TestSuffix' -KmsArn 'TestKmsArn' -RoleArn 'TestRoleArn' -PasswordHash 'TestPassword' $resultObj = ConvertFrom-Json $result $resultObj.Policy | Should -Match 'TestSuffix' $resultObj.HomeDirectoryDetails | Should -Match 'TestSuffix' } } } }