From 8c28962d125a12974ef9c6544915e56ac91cc89c Mon Sep 17 00:00:00 2001 From: pedrooot Date: Tue, 4 Jun 2024 10:43:04 +0200 Subject: [PATCH] chore(cli): improve tests --- cli/cli.py | 14 +++++++++----- tests/cli/cli_test.py | 21 +++++++++++---------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/cli/cli.py b/cli/cli.py index 5fd028481a..54cc6f7c17 100644 --- a/cli/cli.py +++ b/cli/cli.py @@ -30,14 +30,16 @@ def check_provider(provider: str): def check_compliance_framework(provider: str, compliance_framework: list): # From the available_compliance_frameworks, check if the compliance_framework is valid for the provider compliance_frameworks_provider = [] + valid_compliance_frameworks = [] for provider_compliance_framework in available_compliance_frameworks: if provider in provider_compliance_framework: compliance_frameworks_provider.append(provider_compliance_framework) for compliance in compliance_framework: if compliance not in compliance_frameworks_provider: - raise typer.BadParameter( - f"{compliance} is not a valid Compliance Framework for {provider}" - ) + print(f"{compliance} is not a valid Compliance Framework\n") + else: + valid_compliance_frameworks.append(compliance) + return valid_compliance_frameworks @app.command() @@ -89,10 +91,12 @@ def main( list_compliance_requirements_value = list_compliance_requirements_value.split( "," ) - check_compliance_framework(provider, list_compliance_requirements_value) + valid_compliance = check_compliance_framework( + provider, list_compliance_requirements_value + ) print_compliance_requirements( bulk_load_compliance_frameworks(provider), - list_compliance_requirements_value, + valid_compliance, ) if list_checks_bool: checks_metadata = bulk_load_checks_metadata(provider) diff --git a/tests/cli/cli_test.py b/tests/cli/cli_test.py index 3666612d61..5aefad132b 100644 --- a/tests/cli/cli_test.py +++ b/tests/cli/cli_test.py @@ -10,54 +10,55 @@ runner = CliRunner() class TestCLI: def test_list_services_aws(self): - result = runner.invoke(app, ["aws", "list-services"]) + result = runner.invoke(app, ["aws", "--list-services"]) assert result.exit_code == 0 assert "available services." in result.output def test_list_fixers_aws(self): - result = runner.invoke(app, ["aws", "list-fixers"]) + result = runner.invoke(app, ["aws", "--list-fixers"]) assert result.exit_code == 0 assert "available fixers." in result.output def test_list_categories_aws(self): - result = runner.invoke(app, ["aws", "list-categories"]) + result = runner.invoke(app, ["aws", "--list-categories"]) assert result.exit_code == 0 assert "available categories." in result.output def test_list_compliance_aws(self): - result = runner.invoke(app, ["aws", "list-compliance"]) + result = runner.invoke(app, ["aws", "--list-compliance"]) assert result.exit_code == 0 assert "available Compliance Frameworks." in result.output def test_list_compliance_requirements_aws(self): result = runner.invoke( - app, ["aws", "list-compliance-requirements", "cis_2.0_aws", "soc2_aws"] + app, ["aws", "--list-compliance-requirements", "cis_2.0_aws,soc2_aws"] ) assert result.exit_code == 0 assert "Listing CIS 2.0 AWS Compliance Requirements:" in result.output assert "Listing SOC2 AWS Compliance Requirements:" in result.output def test_list_compliance_requirements_no_compliance_aws(self): - result = runner.invoke(app, ["aws", "list-compliance-requirements"]) + result = runner.invoke(app, ["aws", "--list-compliance-requirements"]) assert result.exit_code == 2 - assert "Expected at least one" in result.output + assert "requires an argument" in result.output def test_list_compliance_requirements_one_invalid_aws(self): invalid_name = "invalid" result = runner.invoke( - app, ["aws", "list-compliance-requirements", "cis_2.0_aws", invalid_name] + app, + ["aws", "--list-compliance-requirements", f"cis_2.0_aws,{invalid_name}"], ) assert result.exit_code == 0 assert "Listing CIS 2.0 AWS Compliance Requirements:" in result.output assert f"{invalid_name} is not a valid Compliance Framework" in result.output def test_list_checks_aws(self): - result = runner.invoke(app, ["aws", "list-checks"]) + result = runner.invoke(app, ["aws", "--list-checks"]) assert result.exit_code == 0 assert "available checks." in result.output def test_list_checks_json_aws(self): - result = runner.invoke(app, ["aws", "list-checks-json"]) + result = runner.invoke(app, ["aws", "--list-checks-json"]) assert result.exit_code == 0 assert "aws" in result.output # validate the json output