Package: b-aws-testing-framework
B.AwsTestingFrameworkA python based AWS infrastructure testing micro-framework.It supports multiple IAC tools like AWS CDK and AWS CloudFormation.DescriptionCreating infrastructure in AWS is quite hard. There are many nuances,
pitfalls and "gotchas" that sometimes are awfully frustrating. Often some
IAC code changes might result in some unexpected infrastructure changes.
That is why the created infrastructure should have automated integration tests.
This python based framework provides you basic functionality to help you
write unit ant integration tests to test AWS infrastructure created
via UI or via tools like AWS CDK.The framework is based on pytest - a python based testing library. With that
said, all pytest functionality and configs can be applied on this framework too.The framework is easy to use with explicit examples for each IAC tool. Go to
examples section and find which example suits you the most.RemarksBiomapasaims to modernise life-science
industry by sharing its IT knowledge with other companies and
the community. This is an open source library intended to be used
by anyone. Improvements and pull requests are welcome.Related technologyPython 3PytestAWS CDKAWS CloudFormationAssumptionsThe project assumes the following:You have basic-good knowledge in python programming.You have basic-good knowledge in AWS.You have basic knowledge in testing.Useful sourcesRead more about pytest:https://docs.pytest.org/en/latest/InstallThe project is built and uploaded to PyPi. Install it by using pip.pip install b_aws_testing_frameworkOr directly install it through source.pip install .Usage & ExamplesThe framework uses flexible credentials management. You can either
set credentials in the constructor:fromb_aws_testing_framework.credentialsimportCredentialsCredentials(aws_access_key_id='key',aws_secret_access_key='secret',region_name='region')Or you can set the environment:set AWS_ACCESS_KEY_ID=key
set AWS_SECRET_ACCESS_KEY=key
set AWS_DEFAULT_REGION=regionAnd then in your python program:fromb_aws_testing_framework.credentialsimportCredentialsCredentials()After setting the credentials you can set aglobal prefix. Global prefix
is a globally accessible peace of string that can be used when naming AWS
resources. This is extremely useful when running tests in CI/CD pipelines
where we can have more than one parallel pipeline running. To access and
manage a global prefix, import your testing manager and use these commands:# Set a random string.TestingManager.set_global_prefix()# Create a resource with a unique name. E.g.CdkStack(scope=scope,id=f'{TestingManager.get_global_prefix()}TestingStackId',stack_name=f'{TestingManager.get_global_prefix()}TestingStackName')See the specific examples for specific tools:Testing AWS CDK based projectsTesting CloudFormation based projectsTestingThe project has tests that can be run.
Note, that tests are integration tests inherently because they
test how resources are created in AWS environment. Since resources
are created and tested in AWS you are subject for all the applicable
charges while tests are being run.Setting environmentBefore running tests set environment variables:AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_DEFAULT_REGIONOr:AWS_PROFILEAWS_DEFAULT_REGIONRunning testsThen run tests from a root directory withpytestpython testing library.TestingCloudFormationfunctionality:pytest b_aws_testing_framework_test/tools/testing_with_cfTestingCloud Development Kitfunctionality:pytest b_aws_testing_framework_test/tools/testing_with_cdkNote that integration tests usually take a while to complete (from 5 to 30
minutes on average).ContributionFound a bug? Want to add or suggest a new feature?Contributions of any kind are gladly welcome. You may contact us
directly, create a pull-request or an issue in github platform.
Lets modernize the world together.Release history1.0.1Update pipelines to fix "unclosed SSLSocket" warnings.1.0.0Upgrade CDK support from v1 to v2.Upgrade GitHub pipelines checkout version from v2 to v3.Upgrade biomapas/cicd-full image version to 5.0.0.0.6.0Too many bugs. Revert.0.5.5Warn if not cdk tool was found.0.5.4Make sure to exit after successful cdk execution.0.5.3Use "." instead of "source".0.5.2Execute cdk command in the same shell to preserve environment.0.5.1Allow running cdk command even though it might be now defined globally.0.5.0Pass config object to custom actions.0.4.3Fix version retrieval.0.4.2For the default SSM parameter name use "name" instead of "global prefix".0.4.1Make sure default SSM parameter is unique.0.4.0Add default SSM parameter for package version.0.3.3.Fix logging issues.Run prehooks on session-start and session-finish.Add more logging.0.3.2Fix warnings.0.3.1Bug fixes.0.3.0Add ability to specify custom deployment command in AWS CDK flow (destroy action).0.2.0Add ability to specify custom deployment command in AWS CDK flow (deploy action).0.1.0Allow to override the TestingStack's name.0.0.24Update boto version requirement.0.0.23Prettify example CDK project.0.0.22Add prefixes for CF outputs too.Prettify CDK testing.0.0.21Add ability to specify session token.0.0.20Remove root path from cdk config in the documentation.0.0.19Make sure that Python path is propagated to the process.0.0.18Expose global prefix in the Testing stack.Update example project.Add ability to specify root project to fix import errors.Updated tests.Update documentation.0.0.17Improve documentation with better cdk project examples.Add an example cdk project.Remove test coverage.0.0.13Add testing stack for more convenient CF outputs management.Update documentation.Add docstrings.Updates tests and conftest configuration files.Version bump.0.0.12Add a flag to specify whether the infrastructure should be destroyed
before creating a new one.0.0.11Add documentation about global prefix in readme.0.0.10Create a global prefix for unique resources.0.0.9Create github pipelines.Update code.0.0.8Make sure CDK deploy works both on linux based systems and windows based systems.0.0.7Bug fix related to environment.0.0.6Update pytest dependency version.0.0.5Rethink how this framework should be used.0.0.4Fix imports.Update examples.0.0.3Rename project.Update gitignore and ignore idea files.Update MANIFEST.Move examples to a documentation folder.0.0.2Add hyperlinks for examples.0.0.1Initial build.