Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

331
Views
AWS CDK: cómo probar que un recurso tiene un valor dentro de una matriz de valores

Tengo un conjunto de pruebas para una construcción de EC2 Redis que prueba si el recurso tiene políticas de IAM particulares adjuntas. Puedo probar si tiene todos los valores dentro de una prueba con éxito, pero al probar si tiene cada política individualmente, solo pasa la primera prueba. Parece que el orden de los valores en la matriz de políticas puede hacer que la prueba falle, lo cual no es lo ideal.

Me gustaría poder proporcionar pruebas unitarias más granulares donde una prueba específica fallará con una descripción de la política que espera la prueba, pero no puedo encontrar nada que pueda habilitar este comportamiento en la biblioteca de afirmación de AWS CDK . ¿Hay alguna manera de probar si una matriz de propiedades de una construcción CDK incluye solo un valor?

Pases:

 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' ]] }] })) })

falla:

 test('Redis Instance - should attach AmazonSSMManagedInstanceCore IAM policy', () => { 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' ]] }] })) }) test('Redis Instance - should attach AmazonS3ReadOnlyAccess IAM policy', () => { 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/AmazonS3ReadOnlyAccess' ]] }] })) }) test('Redis Instance - should attach CloudWatchAgentServerPolicy IAM policy', () => { 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/CloudWatchAgentServerPolicy' ]] }] })) })
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Use arrayWith(objectLike({...})) para probar objetos en cualquier posición en los arreglos.

Ejemplo

 import { expect as expectCDK, haveResourceLike, arrayWith, objectLike, // deepObjectLike // sometimes better than objectLike } from '@aws-cdk/assert'; ... ... test('Redis Instance - should attach CloudWatchAgentServerPolicy IAM policy', () => { const name = 'test-redis' const { stack } = createRedisInstance(name) expect(stack).to(haveResourceLike('AWS::IAM::Role', { ManagedPolicyArns: arrayWith( objectLike({ ... }), ) })) })

https://www.npmjs.com/package/@aws-cdk/assert

about 4 years ago · Juan Pablo Isaza Report

0

Para aquellos que usan CDK v2, pueden lograr lo mismo con Match.arrayWith y Match.objectLike

 template.hasResourceProperties('AWS::IAM::Policy', Match.objectLike({ PolicyDocument: { Statement: Match.arrayWith([Match.objectLike({ Action: 'secretsmanager:GetSecretValue', Effect: 'Allow', Resource: 'arn:aws:secretsmanager:TEST_REGION:TEST_ACCOUNT:secret:YourSecret-??????' })]) } }));

https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.assertions-readme.html

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!