Skip to content

Commit e247fec

Browse files
committed
add pester test
1 parent 1390524 commit e247fec

File tree

5 files changed

+176
-78
lines changed

5 files changed

+176
-78
lines changed
Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
$here = Split-Path -Parent $MyInvocation.MyCommand.Path
2+
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path) -replace '\.Tests\.', '.'
3+
. "$here\$sut"
4+
5+
BeforeAll {
6+
. $PSScriptRoot/ManagedHsmDatePlaneTests.ps1
7+
ImportModules
8+
$hsmName = GetAzManagedHsm
9+
}
10+
11+
Describe "AddAzManagedHsmKey" {
12+
It "Create a RSA key inside a managed HSM" {
13+
$keyName = GetRandomName -Prefix "key"
14+
$keyType = "RSA"
15+
$rsaKey = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType $keyType
16+
$rsaKey.VaultName | Should -BeExactly $hsmName
17+
$rsaKey.Name | Should -BeExactly $keyName
18+
$rsaKey.Attributes.KeyType | Should -Be "RSA-HSM"
19+
}
20+
21+
It "Create an EC key with curve P-256 inside a managed HSM" {
22+
$keyName = GetRandomName -Prefix "key"
23+
$keyType = "EC"
24+
$curveName = "P-256"
25+
$rsaKey = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType $keyType -CurveName $curveName
26+
$rsaKey.VaultName | Should -BeExactly $hsmName
27+
$rsaKey.Name | Should -BeExactly $keyName
28+
$rsaKey.Attributes.KeyType | Should -Be "EC-HSM"
29+
$rsaKey.Key.CurveName | Should -Be $curveName
30+
}
31+
32+
It "Create an oct key inside a managed HSM" {
33+
$keyName = GetRandomName -Prefix "key"
34+
$keyType = "oct"
35+
$rsaKey = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType $keyType
36+
$rsaKey.VaultName | Should -BeExactly $hsmName
37+
$rsaKey.Name | Should -BeExactly $keyName
38+
$rsaKey.Attributes.KeyType | Should -Be "oct-HSM"
39+
}
40+
41+
It "Create an oct key inside a managed HSM" {
42+
$keyName = GetRandomName -Prefix "key"
43+
$keyType = "oct"
44+
$rsaKey = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType $keyType
45+
$rsaKey.VaultName | Should -BeExactly $hsmName
46+
$rsaKey.Name | Should -BeExactly $keyName
47+
$rsaKey.Attributes.KeyType | Should -Be "oct-HSM"
48+
}
49+
50+
It "Create a key with non-default values inside a managed HSM" {
51+
$keyName = GetRandomName -Prefix "key"
52+
$keyType = "RSA"
53+
$KeyOps = 'decrypt', 'verify'
54+
# Expires & NotBefore is hard to cmpare, may add in the furture
55+
$Tags = @{'Severity' = 'high'; 'Accounting' = "true"}
56+
57+
$key = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType $keyType -KeyOps $KeyOps -Disable -Tag $Tags
58+
59+
$key.Attributes.KeyOps | Should -Be $KeyOps
60+
$key.Tags.Count | Should -Be 2
61+
$key.Enabled | Should -Be $false
62+
}
63+
64+
It "Import a RSA key from pfx file into a managed HSM" {
65+
$keyName = GetRandomName -Prefix "key"
66+
$keyFilePath = Join-Path $PSScriptRoot ../Resources/testImportKey.pfx -Resolve
67+
$keyFilePwd = ConvertTo-SecureString "Passw0rd" -AsPlainText -Force
68+
$key = Add-AzManagedHsmKey -HsmName bezmhsm -Name $keyName -KeyFilePath $keyFilePath -KeyFilePassword $keyFilePwd
69+
$key.Name | Should -BeExactly $keyName
70+
}
71+
}
72+
73+
Describe "GetAzManagedHsmKey"{
74+
It "List all the keys in a managed HSM" {
75+
$keyName = GetRandomName -Prefix "key"
76+
$key = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType "RSA"
77+
$keys = Get-AzManagedHsmKey -HsmName $hsmName
78+
$keys.Count | Should -BeGreaterThan 0
79+
}
80+
81+
It "Get a specific key in a managed HSM" {
82+
$keyName = GetRandomName -Prefix "key"
83+
$key = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType "RSA"
84+
$got = Get-AzManagedHsmKey -HsmName $hsmName -KeyName $keyName
85+
$got.Id | Should -Be $key.Id
86+
}
87+
88+
It "List all the keys that have been deleted in a managed HSM" {
89+
$keyName = GetRandomName -Prefix "key"
90+
$key = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType "RSA"
91+
Remove-AzManagedHsmKey -HsmName $hsmName -Name $keyName
92+
$deletedKey = Get-AzManagedHsmKey -HsmName $hsmName -KeyName $keyName -InRemovedState
93+
$deletedKey.Id | Should -Be $key.Id
94+
}
95+
96+
It "Download a key from a managed HSM" {
97+
$keyName = GetRandomName -Prefix "key"
98+
Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType "RSA"
99+
$filePath = "$PSScriptRoot\public.pem"
100+
Get-AzManagedHsmKey -HsmName $hsmName -KeyName $keyName -OutFile $filePath
101+
$filePath | Should -Exist
102+
}
103+
}
104+
105+
Describe "RemoveAzManagedHsmKey"{
106+
It "Remove a key from a managed HSM" {
107+
$keyName = GetRandomName -Prefix "key"
108+
$key = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType "RSA"
109+
$deletedKey = Remove-AzManagedHsmKey -HsmName $hsmName -Name $keyName -Force -PassThru
110+
$deletedKey.Id | Should -Be $key.Id
111+
}
112+
113+
It "Purge a deleted key from a managed HSM" {
114+
$keyName = GetRandomName -Prefix "key"
115+
Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType "RSA"
116+
Remove-AzManagedHsmKey -HsmName $hsmName -Name $keyName -Force -PassThru
117+
Remove-AzManagedHsmKey -HsmName $hsmName -Name $keyName -InRemovedState -Force -PassThru
118+
$deletedKey = Get-AzManagedHsmKey -HsmName $hsmName -Name $keyName -InRemovedState
119+
$deletedKey | Should -Be $null
120+
}
121+
122+
It "Remove keys by using piping" {
123+
Get-AzManagedHsmKey -HsmName $hsmName | Remove-AzManagedHsmKey -Force
124+
$keys = Get-AzManagedHsmKey -HsmName $hsmName
125+
$keys.Count | Should -Be 0
126+
}
127+
}
128+
129+
Describe "UpdateAzManagedHsmKey"{
130+
It "Enable a key and set tags" {
131+
$keyName = GetRandomName -Prefix "key"
132+
$key = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType "RSA" -Disable
133+
$Tags = @{'Severity' = 'high'; 'Accounting' = 'true'}
134+
135+
$updatedKey = Update-AzManagedHsmKey -HsmName $hsmName -Name $keyName -Enable $True -Tag $Tags -PassThru
136+
137+
$updatedKey.Id | Should -Be $key.Id
138+
$updatedKey.Enabled | Should -Be $True
139+
$updatedKey.Tags.Count | Should -Be 2
140+
}
141+
}
142+
143+
Describe "UndoAzManagedHsmKeyRemoval"{
144+
It "Undo a key removal" {
145+
$keyName = GetRandomName -Prefix "key"
146+
$key = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType "RSA"
147+
$deletedKey = Remove-AzManagedHsmKey -HsmName $hsmName -Name $keyName -Force -PassThru
148+
$recoveredKey = $deletedKey | Undo-AzManagedHsmKeyRemoval
149+
$recoveredKey.Id | Should -Be $key.Id
150+
}
151+
}
152+
153+
Describe "BackupAndRetoreAzManagedHsmKey"{
154+
It "Backup and retore a key" {
155+
$keyName = GetRandomName -Prefix "key"
156+
$key = Add-AzManagedHsmKey -HsmName $hsmName -Name $keyName -KeyType "RSA"
157+
$filePath = "$PSScriptRoot/backupkey.blob"
158+
$key | Backup-AzManagedHsmKey -OutputFile $filePath -Force
159+
$filePath | Should -Exist
160+
161+
Remove-AzManagedHsmKey -HsmName $hsmName -Name $keyName -Force
162+
Remove-AzManagedHsmKey -HsmName $hsmName -Name $keyName -InRemovedState -Force
163+
$restoredKey = Restore-AzManagedHsmKey -HsmName $hsmName -InputFile $filePath
164+
$restoredKey.Id | Should -Be $key.Id
165+
}
166+
}
167+
168+
# to do: manually remove all stuffs in resource group
169+
# AfterAll {
170+
# $hsm = Get-AzManagedHsm -Name $hsmName
171+
# Remove-AzResourceGroup -Name $hsm.ResourceGroupName -Force
172+
# }
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ function GetRandomName{
3232
}
3333

3434
function ImportModules{
35-
$psd1Path = Join-Path $PSScriptRoot "../../../../../artifacts/Debug/" -Resolve
36-
$accountsPsd1 = Join-Path $psd1Path "./Az.Accounts/Az.Accounts.psd1"
37-
$keyVaultPsd1 = Join-Path $psd1Path "./Az.KeyVault/Az.KeyVault.psd1"
35+
$psd1Path = Join-Path $PSScriptRoot "../../../../artifacts/Debug/" -Resolve
36+
$accountsPsd1 = Join-Path $psd1Path "./Az.Accounts/Az.Accounts.psd1" -Resolve
37+
$keyVaultPsd1 = Join-Path $psd1Path "./Az.KeyVault/Az.KeyVault.psd1" -Resolve
3838
Import-Module $accountsPsd1
3939
Import-Module $keyVaultPsd1
4040
}

src/KeyVault/KeyVault.Test/ScenarioTests/PesterTests/ManagedHsmDatePlaneTests.Tests.ps1

Lines changed: 0 additions & 74 deletions
This file was deleted.

src/KeyVault/KeyVault/ChangeLog.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
-->
2020
## Upcoming Release
2121
* Supported creating, removing, updating, getting, restoring, backup and undoing removal key inside managed HSM
22-
* Enabled Managed HSM Management via *-AzKeyVault
22+
* Supported creating, deleting, updating and getting managed HSM
2323

2424
## Version 2.0.0
2525
* Removed two aliases: `New-AzKeyVaultCertificateAdministratorDetails` and `New-AzKeyVaultCertificateOrganizationDetails`

0 commit comments

Comments
 (0)