This commit is contained in:
Andoni A.
2025-06-23 14:57:48 +02:00
parent 8b88938eaa
commit ae87997057
2 changed files with 8 additions and 16 deletions

View File

@@ -151,15 +151,17 @@ class IacProvider(Provider):
report.muted = True
return report
def _clone_repository(self, repository_url: str, temporary_directory: str):
def _clone_repository(self, repository_url: str) -> str:
"""
Clone a git repository to a temporary directory.
"""
try:
temporary_directory = tempfile.mkdtemp()
logger.info(
f"Cloning repository {repository_url} into {temporary_directory}..."
)
porcelain.clone(repository_url, temporary_directory)
return temporary_directory
except Exception as error:
logger.critical(
f"{error.__class__.__name__}:{error.__traceback__.tb_lineno} -- {error}"
@@ -167,18 +169,11 @@ class IacProvider(Provider):
sys.exit(1)
def run(self) -> List[CheckReportIAC]:
scan_dir = self.scan_path
temp_dir = None
if self.scan_repository_url:
try:
temp_dir = tempfile.mkdtemp()
self._clone_repository(self.scan_repository_url, temp_dir)
scan_dir = temp_dir
except Exception as error:
logger.critical(
f"{error.__class__.__name__}:{error.__traceback__.tb_lineno} -- {error}"
)
sys.exit(1)
scan_dir = temp_dir = self._clone_repository(self.scan_repository_url)
else:
scan_dir = self.scan_path
try:
reports = self.run_scan(scan_dir)

View File

@@ -149,18 +149,15 @@ class TestIacProvider:
with tempfile.TemporaryDirectory() as temp_dir:
with (
mock.patch(
"prowler.providers.iac.iac_provider.tempfile.mkdtemp",
"prowler.providers.iac.iac_provider.IacProvider._clone_repository",
return_value=temp_dir,
),
mock.patch(
"prowler.providers.iac.iac_provider.IacProvider._clone_repository"
) as mock_clone,
mock.patch(
"prowler.providers.iac.iac_provider.IacProvider.run_scan"
) as mock_run_scan,
):
provider.run()
mock_clone.assert_called_with(scan_repository_url, temp_dir)
mock_clone.assert_called_with(scan_repository_url)
mock_run_scan.assert_called_with(temp_dir)
def test_print_credentials_local(self):