@@ -285,6 +285,107 @@ function Test-SetRemoveAccessPolicyByObjectId
285285 Assert-AreEqual 0 $vault.AccessPolicies.Count
286286}
287287
288+ function Test-SetRemoveAccessPolicyByCompoundId
289+ {
290+ Param ($existingVaultName , $rgName , $upn , $appId )
291+
292+ Assert-NotNull $appId
293+
294+ $user = Get-AzureADUser - UserPrincipalName $upn
295+ if ($user -eq $null )
296+ {
297+ $user = Get-AzureADUser - Mail $upn
298+ }
299+ Assert-NotNull $user
300+ $objId = $user.Id
301+
302+ $PermToKeys = @ (" encrypt" , " decrypt" )
303+ $PermToSecrets = @ ()
304+ $vault = Set-AzureKeyVaultAccessPolicy - VaultName $existingVaultName - ResourceGroupName $rgName - ObjectId $objId - ApplicationId $appId - PermissionsToKeys $PermToKeys - PassThru
305+
306+ CheckVaultAccessPolicy $vault $PermToKeys $PermToSecrets
307+
308+ Assert-AreEqual $objId $vault.AccessPolicies [0 ].ObjectId
309+ Assert-AreEqual $appId $vault.AccessPolicies [0 ].ApplicationId
310+
311+ $vault = Remove-AzureKeyVaultAccessPolicy - VaultName $existingVaultName - ResourceGroupName $rgName - ObjectId $objId - ApplicationId $appId - PassThru
312+ Assert-AreEqual 0 $vault.AccessPolicies.Count
313+ }
314+
315+ function Test-RemoveAccessPolicyWithCompoundIdPolicies
316+ {
317+ Param ($existingVaultName , $rgName , $upn , $appId1 , $appId2 )
318+
319+ Assert-NotNull $appId1
320+ Assert-NotNull $appId2
321+
322+ $user = Get-AzureADUser - UserPrincipalName $upn
323+ if ($user -eq $null )
324+ {
325+ $user = Get-AzureADUser - Mail $upn
326+ }
327+ Assert-NotNull $user
328+ $objId = $user.Id
329+
330+ # Add three access policies: ObjectId, (ObjectId, App1), (ObjectId, App2)
331+ $PermToKeys = @ (" encrypt" , " decrypt" )
332+ $PermToSecrets = @ ()
333+ $vault = Set-AzureKeyVaultAccessPolicy - VaultName $existingVaultName - ResourceGroupName $rgName - ObjectId $objId - PermissionsToKeys $PermToKeys - PassThru
334+ $vault = Set-AzureKeyVaultAccessPolicy - VaultName $existingVaultName - ResourceGroupName $rgName - ObjectId $objId - ApplicationId $appId1 - PermissionsToKeys $PermToKeys - PassThru
335+ $vault = Set-AzureKeyVaultAccessPolicy - VaultName $existingVaultName - ResourceGroupName $rgName - ObjectId $objId - ApplicationId $appId2 - PermissionsToKeys $PermToKeys - PassThru
336+ Assert-AreEqual 3 $vault.AccessPolicies.Count
337+
338+ # Remove one policy if specify compound id
339+ $vault = Remove-AzureKeyVaultAccessPolicy - VaultName $existingVaultName - ResourceGroupName $rgName - ObjectId $objId - ApplicationId $appId1 - PassThru
340+ Assert-AreEqual 2 $vault.AccessPolicies.Count
341+
342+ # Remove remaining two policies if specify object id
343+ $vault = Remove-AzureKeyVaultAccessPolicy - VaultName $existingVaultName - ResourceGroupName $rgName - ObjectId $objId - PassThru
344+ Assert-AreEqual 0 $vault.AccessPolicies.Count
345+ }
346+
347+ function Test-SetCompoundIdAccessPolicy
348+ {
349+ Param ($existingVaultName , $rgName , $upn , $appId )
350+
351+ Assert-NotNull $appId
352+
353+ $user = Get-AzureADUser - UserPrincipalName $upn
354+ if ($user -eq $null )
355+ {
356+ $user = Get-AzureADUser - Mail $upn
357+ }
358+ Assert-NotNull $user
359+ $objId = $user.Id
360+
361+ # Add one compound id policy
362+ $PermToKeys = @ (" encrypt" , " decrypt" )
363+ $PermToSecrets = @ ()
364+ $vault = Set-AzureKeyVaultAccessPolicy - VaultName $existingVaultName - ResourceGroupName $rgName - ObjectId $objId - ApplicationId $appId - PermissionsToKeys $PermToKeys - PassThru
365+
366+ CheckVaultAccessPolicy $vault $PermToKeys $PermToSecrets
367+
368+ Assert-AreEqual $objId $vault.AccessPolicies [0 ].ObjectId
369+ Assert-AreEqual $appId $vault.AccessPolicies [0 ].ApplicationId
370+
371+ # Add one object id policy
372+ $vault = Set-AzureKeyVaultAccessPolicy - VaultName $existingVaultName - ResourceGroupName $rgName - ObjectId $objId - PermissionsToKeys $PermToKeys - PassThru
373+ Assert-AreEqual 2 $vault.AccessPolicies.Count
374+
375+ # Change compound id policy shall not affect object id policy
376+ $vault = Set-AzureKeyVaultAccessPolicy - VaultName $existingVaultName - ResourceGroupName $rgName - ObjectId $objId - ApplicationId $appId - PermissionsToKeys @ (" encrypt" ) - PassThru
377+ Assert-AreEqual 2 $vault.AccessPolicies.Count
378+ $vault = Remove-AzureKeyVaultAccessPolicy - VaultName $existingVaultName - ResourceGroupName $rgName - ObjectId $objId - ApplicationId $appId - PassThru
379+ CheckVaultAccessPolicy $vault $PermToKeys $PermToSecrets
380+ Assert-AreEqual $objId $vault.AccessPolicies [0 ].ObjectId
381+ Assert-AreEqual $vault.AccessPolicies [0 ].ApplicationId $null
382+
383+ $vault = Remove-AzureKeyVaultAccessPolicy - VaultName $existingVaultName - ResourceGroupName $rgName - ObjectId $objId - PassThru
384+ Assert-AreEqual 0 $vault.AccessPolicies.Count
385+ }
386+
387+
388+
288389function Test-ModifyAccessPolicy
289390{
290391 Param ($existingVaultName , $rgName , $upn )
@@ -416,4 +517,4 @@ function CheckVaultAccessPolicy
416517 Assert-Null $compare
417518 $compare = Compare-Object $vault.AccessPolicies [0 ].PermissionsToSecrets $expectedPermsToSecrets
418519 Assert-Null $compare
419- }
520+ }
0 commit comments