From 856b6d782b5586e3838547e16c397d52d464fcec Mon Sep 17 00:00:00 2001 From: HugoPBrito Date: Fri, 13 Dec 2024 23:04:58 +0000 Subject: [PATCH] feat: added testing --- .../repository_denies_branch_deletion_test.py | 123 ++++++++++++++++++ .../repository/repository_service_test.py | 12 +- 2 files changed, 134 insertions(+), 1 deletion(-) create mode 100644 tests/providers/github/services/repository/repository_denies_branch_deletion/repository_denies_branch_deletion_test.py diff --git a/tests/providers/github/services/repository/repository_denies_branch_deletion/repository_denies_branch_deletion_test.py b/tests/providers/github/services/repository/repository_denies_branch_deletion/repository_denies_branch_deletion_test.py new file mode 100644 index 0000000000..e11d808a9c --- /dev/null +++ b/tests/providers/github/services/repository/repository_denies_branch_deletion/repository_denies_branch_deletion_test.py @@ -0,0 +1,123 @@ +from unittest import mock + +from prowler.providers.github.services.repository.repository_service import ( + Protection, + Repo, +) +from tests.providers.github.github_fixtures import set_mocked_github_provider + + +class Test_repository_denies_branch_deletion_test: + def test_no_repositories(self): + repository_client = mock.MagicMock + repository_client.repositories = {} + + with ( + mock.patch( + "prowler.providers.common.provider.Provider.get_global_provider", + return_value=set_mocked_github_provider(), + ), + mock.patch( + "prowler.providers.github.services.repository.repository_denies_branch_deletion.repository_denies_branch_deletion.repository_client", + new=repository_client, + ), + ): + from prowler.providers.github.services.repository.repository_denies_branch_deletion.repository_denies_branch_deletion import ( + repository_denies_branch_deletion, + ) + + check = repository_denies_branch_deletion() + result = check.execute() + assert len(result) == 0 + + def test_allow_branch_deletion_enabled(self): + repository_client = mock.MagicMock + repo_name = "repo1" + default_branch = "main" + repository_client.repositories = { + 1: Repo( + id=1, + name=repo_name, + full_name="account-name/repo1", + default_branch=default_branch, + default_branch_protection=Protection( + require_pull_request=True, + approval_count=2, + linear_history=False, + allow_branch_deletion=True, + ), + private=False, + securitymd=False, + ), + } + + with ( + mock.patch( + "prowler.providers.common.provider.Provider.get_global_provider", + return_value=set_mocked_github_provider(), + ), + mock.patch( + "prowler.providers.github.services.repository.repository_denies_branch_deletion.repository_denies_branch_deletion.repository_client", + new=repository_client, + ), + ): + from prowler.providers.github.services.repository.repository_denies_branch_deletion.repository_denies_branch_deletion import ( + repository_denies_branch_deletion, + ) + + check = repository_denies_branch_deletion() + result = check.execute() + assert len(result) == 1 + assert result[0].resource_id == 1 + assert result[0].resource_name == "repo1" + assert result[0].status == "FAIL" + assert ( + result[0].status_extended + == f"Repository {repo_name} does allow branch deletion." + ) + + def test_allow_branch_deletion_disabled(self): + repository_client = mock.MagicMock + repo_name = "repo1" + default_branch = "main" + repository_client.repositories = { + 1: Repo( + id=1, + name=repo_name, + full_name="account-name/repo1", + private=False, + default_branch=default_branch, + default_branch_protection=Protection( + require_pull_request=True, + approval_count=2, + linear_history=True, + allow_branch_deletion=False, + ), + securitymd=True, + ), + } + + with ( + mock.patch( + "prowler.providers.common.provider.Provider.get_global_provider", + return_value=set_mocked_github_provider(), + ), + mock.patch( + "prowler.providers.github.services.repository.repository_denies_branch_deletion.repository_denies_branch_deletion.repository_client", + new=repository_client, + ), + ): + from prowler.providers.github.services.repository.repository_denies_branch_deletion.repository_denies_branch_deletion import ( + repository_denies_branch_deletion, + ) + + check = repository_denies_branch_deletion() + result = check.execute() + assert len(result) == 1 + assert result[0].resource_id == 1 + assert result[0].resource_name == "repo1" + assert result[0].status == "PASS" + assert ( + result[0].status_extended + == f"Repository {repo_name} does deny branch deletion." + ) diff --git a/tests/providers/github/services/repository/repository_service_test.py b/tests/providers/github/services/repository/repository_service_test.py index 4346ba595e..c3923f0ef9 100644 --- a/tests/providers/github/services/repository/repository_service_test.py +++ b/tests/providers/github/services/repository/repository_service_test.py @@ -17,7 +17,11 @@ def mock_list_repositories(_): private=False, default_branch="main", default_branch_protection=Protection( - require_pull_request=True, approval_count=2, linear_history=True + require_pull_request=True, + approval_count=2, + linear_history=True, + allow_force_push=False, + allow_branch_deletion=False, ), securitymd=True, ), @@ -55,5 +59,11 @@ class Test_Repository_Service: assert repository_service.repositories[ 1 ].default_branch_protection.linear_history + assert not repository_service.repositories[ + 1 + ].default_branch_protection.allow_force_push + assert not repository_service.repositories[ + 1 + ].default_branch_protection.allow_branch_deletion # Repo assert repository_service.repositories[1].securitymd