From d3a177d6aee8438fd8e650bf7dd8ca4e3eab3dec Mon Sep 17 00:00:00 2001 From: James Truher Date: Wed, 24 Aug 2016 14:20:07 -0700 Subject: [PATCH] Add simple securestring conversion cmdlet tests --- .../SecureString.Tests.ps1 | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 test/powershell/Modules/Microsoft.PowerShell.Security/SecureString.Tests.ps1 diff --git a/test/powershell/Modules/Microsoft.PowerShell.Security/SecureString.Tests.ps1 b/test/powershell/Modules/Microsoft.PowerShell.Security/SecureString.Tests.ps1 new file mode 100644 index 000000000..ac0f16d13 --- /dev/null +++ b/test/powershell/Modules/Microsoft.PowerShell.Security/SecureString.Tests.ps1 @@ -0,0 +1,45 @@ +Describe "SecureString conversion tests" -Tags "CI" { + BeforeAll { + $string = "ABCD" + $secureString = [System.Security.SecureString]::New() + $string.ToCharArray() | foreach-object { $securestring.AppendChar($_) } + $defaultParamValues = $PSdefaultParameterValues.Clone() + $PSdefaultParameterValues = @{} + if ( ! $IsWindows ) { $PSdefaultParameterValues["it:pending"] = $true } + } + AfterAll { + $PSdefaultParameterValues = $defaultParamValues + } + + It "using null arguments to ConvertFrom-SecureString produces an exception" { + try { + ConvertFrom-SecureString -secureString $null -key $null + } + catch { + $_.FullyQualifiedErrorId | should be "ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.ConvertFromSecureStringCommand" + } + + } + + It "using a bad key produces an exception" { + try { + $badkey = [byte[]]@(1,2) + ConvertFrom-SecureString -securestring $secureString -key $badkey + throw "Execution OK" + } + catch { + $_.FullyQualifiedErrorId | should be "Argument,Microsoft.PowerShell.Commands.ConvertFromSecureStringCommand" + } + } + + It "Can convert to a secure string" { + $ss = ConvertTo-SecureString -AsPlainText -Force abcd + $ss.GetType().Name | should be "SecureString" + } + It "can convert back from a secure string" { + $secret = "abcd" + $ss1 = ConvertTo-SecureString -AsPlainText -Force $secret + $ss2 = convertfrom-securestring $ss1 | convertto-securestring + [pscredential]::New("user",$ss2).GetNetworkCredential().Password | should be $secret + } +}