mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-11-08 12:24:45 +00:00
235 lines
8.4 KiB
Python
235 lines
8.4 KiB
Python
from unittest.mock import MagicMock, patch
|
|
|
|
from tests.providers.googleworkspace.googleworkspace_fixtures import (
|
|
set_mocked_googleworkspace_provider,
|
|
)
|
|
|
|
|
|
class TestSitesService:
|
|
def test_fetch_policies_service_status_off(self):
|
|
"""Test fetching Sites policy with service status OFF"""
|
|
mock_provider = set_mocked_googleworkspace_provider()
|
|
mock_provider.audit_config = {}
|
|
mock_provider.fixer_config = {}
|
|
mock_credentials = MagicMock()
|
|
mock_session = MagicMock()
|
|
mock_session.credentials = mock_credentials
|
|
mock_provider.session = mock_session
|
|
|
|
mock_service = MagicMock()
|
|
mock_policies_list = MagicMock()
|
|
mock_policies_list.execute.return_value = {
|
|
"policies": [
|
|
{
|
|
"setting": {
|
|
"type": "settings/sites.service_status",
|
|
"value": {
|
|
"serviceState": "DISABLED",
|
|
},
|
|
}
|
|
},
|
|
]
|
|
}
|
|
mock_service.policies().list.return_value = mock_policies_list
|
|
mock_service.policies().list_next.return_value = None
|
|
|
|
with (
|
|
patch(
|
|
"prowler.providers.common.provider.Provider.get_global_provider",
|
|
return_value=mock_provider,
|
|
),
|
|
patch(
|
|
"prowler.providers.googleworkspace.services.sites.sites_service.GoogleWorkspaceService._build_service",
|
|
return_value=mock_service,
|
|
),
|
|
):
|
|
from prowler.providers.googleworkspace.services.sites.sites_service import (
|
|
Sites,
|
|
)
|
|
|
|
sites = Sites(mock_provider)
|
|
|
|
assert sites.policies_fetched is True
|
|
assert sites.policies.service_state == "DISABLED"
|
|
|
|
def test_fetch_policies_service_status_on(self):
|
|
"""Test fetching Sites policy with service status ON"""
|
|
mock_provider = set_mocked_googleworkspace_provider()
|
|
mock_provider.audit_config = {}
|
|
mock_provider.fixer_config = {}
|
|
mock_session = MagicMock()
|
|
mock_session.credentials = MagicMock()
|
|
mock_provider.session = mock_session
|
|
|
|
mock_service = MagicMock()
|
|
mock_policies_list = MagicMock()
|
|
mock_policies_list.execute.return_value = {
|
|
"policies": [
|
|
{
|
|
"setting": {
|
|
"type": "settings/sites.service_status",
|
|
"value": {
|
|
"serviceState": "ENABLED",
|
|
},
|
|
}
|
|
},
|
|
]
|
|
}
|
|
mock_service.policies().list.return_value = mock_policies_list
|
|
mock_service.policies().list_next.return_value = None
|
|
|
|
with (
|
|
patch(
|
|
"prowler.providers.common.provider.Provider.get_global_provider",
|
|
return_value=mock_provider,
|
|
),
|
|
patch(
|
|
"prowler.providers.googleworkspace.services.sites.sites_service.GoogleWorkspaceService._build_service",
|
|
return_value=mock_service,
|
|
),
|
|
):
|
|
from prowler.providers.googleworkspace.services.sites.sites_service import (
|
|
Sites,
|
|
)
|
|
|
|
sites = Sites(mock_provider)
|
|
|
|
assert sites.policies_fetched is True
|
|
assert sites.policies.service_state == "ENABLED"
|
|
|
|
def test_fetch_policies_empty_response(self):
|
|
"""Test handling empty policies response"""
|
|
mock_provider = set_mocked_googleworkspace_provider()
|
|
mock_provider.audit_config = {}
|
|
mock_provider.fixer_config = {}
|
|
mock_session = MagicMock()
|
|
mock_session.credentials = MagicMock()
|
|
mock_provider.session = mock_session
|
|
|
|
mock_service = MagicMock()
|
|
mock_policies_list = MagicMock()
|
|
mock_policies_list.execute.return_value = {"policies": []}
|
|
mock_service.policies().list.return_value = mock_policies_list
|
|
mock_service.policies().list_next.return_value = None
|
|
|
|
with (
|
|
patch(
|
|
"prowler.providers.common.provider.Provider.get_global_provider",
|
|
return_value=mock_provider,
|
|
),
|
|
patch(
|
|
"prowler.providers.googleworkspace.services.sites.sites_service.GoogleWorkspaceService._build_service",
|
|
return_value=mock_service,
|
|
),
|
|
):
|
|
from prowler.providers.googleworkspace.services.sites.sites_service import (
|
|
Sites,
|
|
)
|
|
|
|
sites = Sites(mock_provider)
|
|
|
|
assert sites.policies_fetched is True
|
|
assert sites.policies.service_state is None
|
|
|
|
def test_fetch_policies_api_error(self):
|
|
"""Test handling of API errors during policy fetch"""
|
|
mock_provider = set_mocked_googleworkspace_provider()
|
|
mock_provider.audit_config = {}
|
|
mock_provider.fixer_config = {}
|
|
mock_session = MagicMock()
|
|
mock_session.credentials = MagicMock()
|
|
mock_provider.session = mock_session
|
|
|
|
mock_service = MagicMock()
|
|
mock_service.policies().list.side_effect = Exception("API Error")
|
|
|
|
with (
|
|
patch(
|
|
"prowler.providers.common.provider.Provider.get_global_provider",
|
|
return_value=mock_provider,
|
|
),
|
|
patch(
|
|
"prowler.providers.googleworkspace.services.sites.sites_service.GoogleWorkspaceService._build_service",
|
|
return_value=mock_service,
|
|
),
|
|
):
|
|
from prowler.providers.googleworkspace.services.sites.sites_service import (
|
|
Sites,
|
|
)
|
|
|
|
sites = Sites(mock_provider)
|
|
|
|
assert sites.policies_fetched is False
|
|
assert sites.policies.service_state is None
|
|
|
|
def test_fetch_policies_build_service_returns_none(self):
|
|
"""Test early return when _build_service fails to construct the client"""
|
|
mock_provider = set_mocked_googleworkspace_provider()
|
|
mock_provider.audit_config = {}
|
|
mock_provider.fixer_config = {}
|
|
mock_session = MagicMock()
|
|
mock_session.credentials = MagicMock()
|
|
mock_provider.session = mock_session
|
|
|
|
with (
|
|
patch(
|
|
"prowler.providers.common.provider.Provider.get_global_provider",
|
|
return_value=mock_provider,
|
|
),
|
|
patch(
|
|
"prowler.providers.googleworkspace.services.sites.sites_service.GoogleWorkspaceService._build_service",
|
|
return_value=None,
|
|
),
|
|
):
|
|
from prowler.providers.googleworkspace.services.sites.sites_service import (
|
|
Sites,
|
|
)
|
|
|
|
sites = Sites(mock_provider)
|
|
|
|
assert sites.policies_fetched is False
|
|
assert sites.policies.service_state is None
|
|
|
|
def test_fetch_policies_execute_raises(self):
|
|
"""Test inner except handler when request.execute() raises during pagination"""
|
|
mock_provider = set_mocked_googleworkspace_provider()
|
|
mock_provider.audit_config = {}
|
|
mock_provider.fixer_config = {}
|
|
mock_session = MagicMock()
|
|
mock_session.credentials = MagicMock()
|
|
mock_provider.session = mock_session
|
|
|
|
mock_service = MagicMock()
|
|
mock_request = MagicMock()
|
|
mock_request.execute.side_effect = Exception("Execute failed")
|
|
mock_service.policies().list.return_value = mock_request
|
|
|
|
with (
|
|
patch(
|
|
"prowler.providers.common.provider.Provider.get_global_provider",
|
|
return_value=mock_provider,
|
|
),
|
|
patch(
|
|
"prowler.providers.googleworkspace.services.sites.sites_service.GoogleWorkspaceService._build_service",
|
|
return_value=mock_service,
|
|
),
|
|
):
|
|
from prowler.providers.googleworkspace.services.sites.sites_service import (
|
|
Sites,
|
|
)
|
|
|
|
sites = Sites(mock_provider)
|
|
|
|
assert sites.policies_fetched is False
|
|
assert sites.policies.service_state is None
|
|
|
|
def test_sites_policies_model(self):
|
|
"""Test SitesPolicies Pydantic model"""
|
|
from prowler.providers.googleworkspace.services.sites.sites_service import (
|
|
SitesPolicies,
|
|
)
|
|
|
|
policies = SitesPolicies(service_state="DISABLED")
|
|
|
|
assert policies.service_state == "DISABLED"
|