编写PowerShell Pester测试验证Azure应用注册权限包含指定值
Azure应用注册权限的Pester测试实现
背景
检查Azure应用注册权限时,可通过以下PowerShell命令获取其角色列表:
(Get-AzRoleAssignment -ObjectId $objectId).RoleDefinitionName
该命令返回的角色示例:Owner, Contributor, Reader, KeyVault Secret User。
测试要求
编写Pester测试,验证应用注册权限满足任一条件:
- 包含
Owner角色; - 同时包含
Contributor和KeyVault Secret User角色(包含全部3个角色时测试也通过)。
初始错误代码
我尝试的代码无法正常运行:
BeforeALL { $objectId = "<应用注册对象ID>" $RoleDefName = Get-AzRoleAssignment -ObjectId $objectId } Describe "权限角色定义检查" { It "检查应用注册是否拥有正确权限" { if ($RoleDefName.RoleDefinitionName | Should -Contain 'Owner') { Write-Host "成功找到Owner权限" } else { $RoleDefName.RoleDefinitionName | Should -Contain 'Contributor'|'User Access Administrator' } } } }
最终可用代码
经Mark Wraggs建议调整后,实现需求的最终代码如下:
BeforeALL { $objectId = "<应用注册对象ID>" $RoleDefName = Get-AzRoleAssignment -ObjectId $objectId } Describe "权限角色定义检查" { It "检查应用注册是否拥有正确权限" -ForEach 'User Access Administrator','Contributor' { $RoleDefName.RoleDefinitionName -Contains 'Owner' -Or $RoleDefName.RoleDefinitionName -Contains $_ | Should -Be $true } }
注:若需严格匹配需求(同时包含
Contributor和KeyVault Secret User),可将测试逻辑调整为:It "应用注册拥有正确权限" { $hasOwner = $RoleDefName.RoleDefinitionName -contains 'Owner' $hasRequiredRoles = ($RoleDefName.RoleDefinitionName -contains 'Contributor') -and ($RoleDefName.RoleDefinitionName -contains 'KeyVault Secret User') $hasOwner -or $hasRequiredRoles | Should -Be $true }
内容的提问来源于stack exchange,提问作者cress89
相关产品推荐
相关产品推荐

