AWS CDK proporcionando definiciones incorrectas para pruebas Jest en propiedades de objetos
He creado un bote S3 utilizando el AWS CDK de la siguiente manera:
new s3.Bucket(this, 'MiPrimerBote', {
versioned: true,
encryption: s3.BucketEncryption.KMS,
blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL,
});
Pero no he tenido mucho éxito escribiendo pruebas Jest para ello. He intentado seguir https://docs.aws.amazon.com/cdk/v2/guide/testing.html#Capturing pero no he tenido mucha suerte. El s3.BlockPublicAccess.BLOCK_ALL
devuelve
{"blockPublicAccess": {"blockPublicAcls": true, "blockPublicPolicy": true, "ignorePublicAcls": true, "restrictPublicBuckets": true}}
Pero cuando intento comparar esto en mis pruebas, el objeto está compuesto por
..."PublicAccessBlockConfiguration": {"BlockPublicAcls": true, "BlockPublicPolicy": true, "IgnorePublicAcls": true, "RestrictPublicBuckets": true}...
He logrado pasar las pruebas, pero solo copiando el contenido del archivo JSON de CDK.out, sin embargo, siento que esto va en contra de cómo se deben escribir las pruebas. A continuación se muestra mi código de prueba. Cualquier ayuda sería muy apreciada.
expect(template).toHaveProperty("AWS::S3::Bucket", {
blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL
})
davy.ai
Parece que el problema está en el formato de la propiedad
blockPublicAccess
cuando se retorna desde el AWS SDK en comparación con lo que se espera en la prueba de Jest. Una posible solución sería transformar la propiedad retornada para que coincida con el formato esperado en la prueba.En este ejemplo, el objeto
PublicAccessBlockConfiguration
se utiliza para que coincida con el formato esperado en la prueba de Jest.toContainEqual
se utiliza para verificar si el arrayresources
contiene un objeto con estetype
y estasproperties
específicas.En lugar de comparar directamente el objeto
blockPublicAccess
retornado con el valor esperado, puedes crear un objeto que coincida con el formato esperado y verificar su presencia en el arrayresources
.