我有一个针对 EC2 Redis 构造的测试套件,用于测试资源是否附加了特定的 IAM 策略。我可以测试它是否成功地具有一次测试中的所有值,但是当测试它是否单独具有每个策略时,只有第一个测试通过。策略数组中的值的顺序似乎会使测试失败,这并不理想。
我希望能够提供更精细的单元测试,其中特定测试将失败,并提供测试所需策略的描述,但我无法在 AWS CDK 断言库中找到任何可能启用此行为的内容。有没有一种方法可以测试 CDK 构造的一组属性是否只包含一个值?
通过:
test('Redis Instance - should attach all IAM policies in order', () => {
const name = 'test-redis'
const { stack } = createRedisInstance(name)
expect(stack).to(haveResourceLike('AWS::IAM::Role', {
ManagedPolicyArns: [{
'Fn::Join': ['', [
'arn:', { Ref: 'AWS::Partition' }, ':iam::aws:policy/AmazonSSMManagedInstanceCore'
]]
}, {
'Fn::Join': ['', [
'arn:', { Ref: 'AWS::Partition' }, ':iam::aws:policy/AmazonS3ReadOnlyAccess'
]]
}, {
'Fn::Join': ['', [
'arn:', { Ref: 'AWS::Partition' }, ':iam::aws:policy/CloudWatchAgentServerPolicy'
]]
}]
}))
})
Run Code Online (Sandbox Code Playgroud)
失败: …