chore(cli): improve tests

This commit is contained in:
pedrooot committed 2024-06-04 10:43:04 +02:00
1 parent c3975cf0e4
commit 8c28962d12
2 files changed
+20 -15

No files matched your search

+9 -5
View File
@@ -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)
+11 -10
View File
@@ -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