chore(iac): add iac_provider tests

This commit is contained in:
Andoni A.
2025-05-28 16:39:17 +02:00
parent f3538e0737
commit c389427b80
2 changed files with 3 additions and 65 deletions
+2 -62
View File
@@ -1,8 +1,3 @@
from mock import MagicMock
from prowler.providers.common.models import Audit_Metadata
from prowler.providers.iac.iac_provider import IacProvider
# IAC Provider Constants
DEFAULT_SCAN_PATH = "."
DEFAULT_REGION = "global"
@@ -12,6 +7,7 @@ DEFAULT_IDENTITY = "prowler"
# Sample Checkov Output
SAMPLE_CHECKOV_OUTPUT = [
{
"check_type": "terraform",
"results": {
"failed_checks": [
{
@@ -40,7 +36,7 @@ SAMPLE_CHECKOV_OUTPUT = [
]
# Sample Finding Data
SAMPLE_FINDING = {"results": SAMPLE_CHECKOV_OUTPUT[0]["results"]}
SAMPLE_FINDING = SAMPLE_CHECKOV_OUTPUT[0]
SAMPLE_FAILED_CHECK = {
"check_id": "CKV_AWS_1",
@@ -56,62 +52,6 @@ SAMPLE_PASSED_CHECK = {
"severity": "low",
}
# Sample Config Content
SAMPLE_CONFIG_CONTENT = {
"custom_setting": "value",
"threshold": 100,
"enable_feature": True,
}
SAMPLE_FIXER_CONFIG = {"fix_setting": "enabled", "auto_fix": False}
def set_mocked_iac_provider(
scan_path: str = DEFAULT_SCAN_PATH,
config_content: dict = None,
fixer_config: dict = None,
audit_metadata: Audit_Metadata = None,
) -> IacProvider:
"""
Create a mocked IAC provider for testing.
Args:
scan_path: The directory path to scan
config_content: Custom audit configuration
fixer_config: Custom fixer configuration
audit_metadata: Custom audit metadata
Returns:
MagicMock: Mocked IAC provider instance
"""
provider = MagicMock()
provider.type = "iac"
provider._type = "iac"
provider.scan_path = scan_path
provider.region = DEFAULT_REGION
provider.audited_account = DEFAULT_ACCOUNT
provider.identity = DEFAULT_IDENTITY
provider.session = None
provider._audit_config = config_content or {}
provider._fixer_config = fixer_config or {}
provider._mutelist = None
if audit_metadata:
provider.audit_metadata = audit_metadata
else:
provider.audit_metadata = Audit_Metadata(
provider="iac",
account_id=DEFAULT_ACCOUNT,
account_name="iac",
region=DEFAULT_REGION,
services_scanned=0,
expected_checks=[],
completed_checks=0,
audit_progress=0,
)
return provider
def get_sample_checkov_json_output():
"""Return sample Checkov JSON output as string"""
+1 -3
View File
@@ -53,9 +53,7 @@ class TestIacProvider:
"""Test processing a passed check"""
provider = IacProvider()
finding = {"severity": "medium"}
report = provider._process_check(finding, SAMPLE_PASSED_CHECK, "PASS")
report = provider._process_check(SAMPLE_FINDING, SAMPLE_PASSED_CHECK, "PASS")
assert isinstance(report, CheckReportIAC)
assert report.status == "PASS"