aws-cloudformation / aws-cloudformation-samples

Apache License 2.0
134 stars 55 forks source link

Add AWSSamples::LambdaFunctionInvoker::Hook. #103

Closed mrinaudo-aws closed 4 months ago

mrinaudo-aws commented 4 months ago

Issue #, if available:

Description of changes: Add AWSSamples::LambdaFunctionInvoker::Hook: AWS CloudFormation hook that invokes AWS Lambda functions you specify, where you implement proactive policy-as-code compliance validation checks.

Unit tests excerpts

% pytest --cov
[...]
Name                                                                       Stmts   Miss Branch BrPart  Cover   Missing
----------------------------------------------------------------------------------------------------------------------
contract_test_inputs_generator/contract_test_inputs_generator.py              92      0     12      0   100%
src/awssamples_lambdafunctioninvoker_hook/client_builder.py                    8      0      4      0   100%
src/awssamples_lambdafunctioninvoker_hook/concurrent_invoker.py               57      0     12      0   100%
src/awssamples_lambdafunctioninvoker_hook/handlers.py                         84      0     22      0   100%
src/awssamples_lambdafunctioninvoker_hook/logger.py                            3      0      0      0   100%
src/awssamples_lambdafunctioninvoker_hook/payload_utils.py                    45      0     26      0   100%
src/awssamples_lambdafunctioninvoker_hook/progress_event_deserializer.py      53      0     22      0   100%
src/awssamples_lambdafunctioninvoker_hook/results_evaluator.py                47      0     16      0   100%
----------------------------------------------------------------------------------------------------------------------
TOTAL                                                                        389      0    114      0   100%

Required test coverage of 85.0% reached. Total coverage: 100.00%

[...] 58 passed 

Contract tests excerpts

% cfn test
[...]
collected 24 items / 14 deselected / 10 selected                                                                                                                                                                   

[...]/hook/handler_pre_create.py::contract_pre_create_success PASSED                                                         [ 10%]
[...]/hook/handler_pre_create.py::contract_pre_create_failed PASSED                                                          [ 20%]
[...]/hook/handler_pre_create.py::contract_pre_create_failed_unsupported_target PASSED                                       [ 30%]
[...]/hook/handler_pre_delete.py::contract_pre_delete_success PASSED                                                         [ 40%]
[...]/hook/handler_pre_delete.py::contract_pre_delete_failed PASSED                                                          [ 50%]
[...]/hook/handler_pre_delete.py::contract_pre_delete_failed_unsupported_target PASSED                                       [ 60%]
[...]/hook/handler_pre_update.py::contract_pre_update_success PASSED                                                         [ 70%]
[...]/hook/handler_pre_update.py::contract_pre_update_failed PASSED                                                          [ 80%]
[...]/hook/handler_pre_update.py::contract_pre_update_failed_unsupported_target PASSED                                       [ 90%]
[...]/resource/handler_misc.py::contract_check_asserts_work PASSED                                                           [100%]

[...] 10 passed, 14 deselected

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.