diff --git a/tests/providers/github/services/repository/repository_deletes_branch_on_merge/repository_deletes_branch_on_merge_test.py b/tests/providers/github/services/repository/repository_deletes_branch_on_merge/repository_deletes_branch_on_merge_test.py new file mode 100644 index 0000000000..ba71e4eeb3 --- /dev/null +++ b/tests/providers/github/services/repository/repository_deletes_branch_on_merge/repository_deletes_branch_on_merge_test.py @@ -0,0 +1,99 @@ +from unittest import mock + +from prowler.providers.github.services.repository.repository_service import Repo +from tests.providers.github.github_fixtures import set_mocked_github_provider + + +class Test_repository_deletes_branch_on_merge_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_deletes_branch_on_merge.repository_deletes_branch_on_merge.repository_client", + new=repository_client, + ): + from prowler.providers.github.services.repository.repository_deletes_branch_on_merge.repository_deletes_branch_on_merge import ( + repository_deletes_branch_on_merge, + ) + + check = repository_deletes_branch_on_merge() + result = check.execute() + assert len(result) == 0 + + def test_branch_deletion_disabled(self): + repository_client = mock.MagicMock + repo_name = "repo1" + repository_client.repositories = { + 1: Repo( + id=1, + name=repo_name, + full_name="account-name/repo1", + default_branch="main", + private=False, + securitymd=False, + delete_branch_on_merge=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_deletes_branch_on_merge.repository_deletes_branch_on_merge.repository_client", + new=repository_client, + ): + from prowler.providers.github.services.repository.repository_deletes_branch_on_merge.repository_deletes_branch_on_merge import ( + repository_deletes_branch_on_merge, + ) + + check = repository_deletes_branch_on_merge() + 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 not delete branches on merge." + ) + + def test_branch_deletion_enabled(self): + repository_client = mock.MagicMock + repo_name = "repo1" + repository_client.repositories = { + 1: Repo( + id=1, + name=repo_name, + full_name="account-name/repo1", + default_branch="main", + private=False, + securitymd=True, + delete_branch_on_merge=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_deletes_branch_on_merge.repository_deletes_branch_on_merge.repository_client", + new=repository_client, + ): + from prowler.providers.github.services.repository.repository_deletes_branch_on_merge.repository_deletes_branch_on_merge import ( + repository_deletes_branch_on_merge, + ) + + check = repository_deletes_branch_on_merge() + 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 delete branches on merge." + ) diff --git a/tests/providers/github/services/repository/repository_service_test.py b/tests/providers/github/services/repository/repository_service_test.py index 18a7735bdc..4cb97a2d97 100644 --- a/tests/providers/github/services/repository/repository_service_test.py +++ b/tests/providers/github/services/repository/repository_service_test.py @@ -27,6 +27,7 @@ def mock_list_repositories(_): conversation_resolution=True, ), securitymd=True, + delete_branch_on_merge=True, ), } @@ -79,3 +80,4 @@ class Test_Repository_Service: ].default_branch_protection.conversation_resolution # Repo assert repository_service.repositories[1].securitymd + assert repository_service.repositories[1].delete_branch_on_merge