diff --git a/.github/workflows/tests-unit-and-integration.yml b/.github/workflows/tests-unit-and-integration.yml index ee9aa84a..760c4f61 100644 --- a/.github/workflows/tests-unit-and-integration.yml +++ b/.github/workflows/tests-unit-and-integration.yml @@ -8,18 +8,20 @@ jobs: steps: - uses: actions/checkout@v3 - - name: build_image + - name: install_requirements run: | - echo "[INFO] Building image" - make build-image - shell: bash + echo "[INFO] Installing requirements..." + pip install -r dev-requirements.txt - name: run_unit_tests run: | - echo "[INFO] Running unit tests" - make test-unit-no-cov + echo "[INFO] Running unit tests and generate coverage report" + pytest --verbose shell: bash + - name: Report Coveralls + uses: coverallsapp/github-action@v2 + integration_tests: runs-on: ubuntu-latest steps: diff --git a/.gitignore b/.gitignore index 2e12e775..c5bb9920 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ leverage.egg-info **/__pycache__* .pytest_cache coverage +coverage.xml .coverage .idea diff --git a/leverage/leverage.py b/leverage/leverage.py index 3aa0e236..1cbf4eac 100644 --- a/leverage/leverage.py +++ b/leverage/leverage.py @@ -9,7 +9,8 @@ from leverage._internals import pass_state from leverage.modules.aws import aws -from leverage.modules import run, project, terraform, credentials, tfautomv, kubectl, shell +from leverage.modules.credentials import credentials +from leverage.modules import run, project, terraform, tfautomv, kubectl, shell @click.group(invoke_without_command=True) diff --git a/leverage/modules/__init__.py b/leverage/modules/__init__.py index 809c54ae..2aebee22 100644 --- a/leverage/modules/__init__.py +++ b/leverage/modules/__init__.py @@ -1,7 +1,6 @@ from .run import run from .project import project from .terraform import terraform -from .credentials import credentials from .tfautomv import tfautomv from .kubectl import kubectl from .shell import shell diff --git a/setup.cfg b/setup.cfg index 4620b7ea..f537aeb9 100644 --- a/setup.cfg +++ b/setup.cfg @@ -47,7 +47,7 @@ console_scripts = leverage = leverage:leverage [tool:pytest] -addopts = --cov=leverage --cov-report html:coverage +addopts = --cov=leverage --cov-report xml [coverage:run] branch = True diff --git a/tests/test_modules/test_credentials.py b/tests/test_modules/test_credentials.py new file mode 100644 index 00000000..c60c03ce --- /dev/null +++ b/tests/test_modules/test_credentials.py @@ -0,0 +1,61 @@ +from unittest import mock +from unittest.mock import Mock + +from leverage.modules.credentials import _load_configs_for_credentials + + +@mock.patch( + "leverage.modules.credentials._load_project_yaml", + Mock( + return_value={ + "short_name": "test", + "region": "us-test-1", + "organization": { + "accounts": [ + {"name": "acc2"}, + ] + }, + } + ), +) +@mock.patch( + "leverage.modules.credentials.AWSCLI", + Mock( + env_conf={ + "PROJECT": "test", + "MFA_ENABLED": "true", + }, + paths=Mock( + common_conf={ + "project_long": "test-prjt", + "region_secondary": "us-test-2", + "accounts": { + "acc1": { + "email": "test@test.com", + "id": "123456", + } + }, + }, + ), + ), +) +def test_load_configs_for_credentials(with_click_context): + assert _load_configs_for_credentials() == { + "mfa_enabled": "true", + "organization": { + "accounts": [ + { + "email": "test@test.com", + "id": "123456", + "name": "acc1", + }, + { + "name": "acc2", + }, + ] + }, + "primary_region": "us-test-1", + "project_name": "test-prjt", + "secondary_region": "us-test-2", + "short_name": "test", + }