mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-10-29 06:44:21 +00:00
Merge branch 'master' into PRWLR-6129-review-check-report-init-for-region-resource-id-resource-arn
This commit is contained in:
61 files changed
+1045
-550
No files matched your search
@@ -175,7 +175,7 @@ class TestOCSF:
|
||||
"vendor_name": "Prowler",
|
||||
"version": prowler_version,
|
||||
},
|
||||
"version": "1.3.0",
|
||||
"version": "1.4.0",
|
||||
"profiles": ["cloud", "datetime"],
|
||||
"tenant_uid": "test-organization-id",
|
||||
},
|
||||
|
||||
@@ -21,7 +21,6 @@ from prowler.lib.outputs.utils import (
|
||||
|
||||
|
||||
class TestOutputs:
|
||||
|
||||
def test_set_report_color(self):
|
||||
test_status = ["PASS", "FAIL", "MANUAL"]
|
||||
test_colors = [Fore.GREEN, Fore.RED, Fore.YELLOW]
|
||||
@@ -35,8 +34,9 @@ class TestOutputs:
|
||||
with pytest.raises(Exception) as exc:
|
||||
set_report_color(test_status)
|
||||
|
||||
assert "Invalid Report Status. Must be PASS, FAIL or MANUAL" in str(exc.value)
|
||||
assert exc.type == Exception
|
||||
assert "Invalid Report Status: INVALID. Must be PASS, FAIL or MANUAL" in str(
|
||||
exc.value
|
||||
)
|
||||
|
||||
def test_unroll_list_no_separator(self):
|
||||
list = ["test", "test1", "test2"]
|
||||
|
||||
+49
@@ -483,3 +483,52 @@ class Test_rds_instance_critical_event_subscription:
|
||||
== f"arn:aws:rds:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:es:TestSub"
|
||||
)
|
||||
assert result[0].resource_tags == []
|
||||
|
||||
@mock_aws
|
||||
def test_rds_instance_event_invalid(self):
|
||||
conn = client("rds", region_name=AWS_REGION_US_EAST_1)
|
||||
conn.create_db_parameter_group(
|
||||
DBParameterGroupName="test",
|
||||
DBParameterGroupFamily="default.aurora-postgresql14",
|
||||
Description="test parameter group",
|
||||
)
|
||||
conn.create_event_subscription(
|
||||
SubscriptionName="TestSub",
|
||||
SnsTopicArn=f"arn:aws:sns:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:test",
|
||||
SourceType="db-instance",
|
||||
EventCategories=["invalid"],
|
||||
Enabled=True,
|
||||
)
|
||||
from prowler.providers.aws.services.rds.rds_service import RDS
|
||||
|
||||
aws_provider = set_mocked_aws_provider([AWS_REGION_US_EAST_1])
|
||||
|
||||
with mock.patch(
|
||||
"prowler.providers.common.provider.Provider.get_global_provider",
|
||||
return_value=aws_provider,
|
||||
):
|
||||
with mock.patch(
|
||||
"prowler.providers.aws.services.rds.rds_instance_critical_event_subscription.rds_instance_critical_event_subscription.rds_client",
|
||||
new=RDS(aws_provider),
|
||||
):
|
||||
# Test Check
|
||||
from prowler.providers.aws.services.rds.rds_instance_critical_event_subscription.rds_instance_critical_event_subscription import (
|
||||
rds_instance_critical_event_subscription,
|
||||
)
|
||||
|
||||
check = rds_instance_critical_event_subscription()
|
||||
result = check.execute()
|
||||
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
assert (
|
||||
result[0].status_extended
|
||||
== "RDS instance event categories of maintenance, configuration change, and failure are not subscribed."
|
||||
)
|
||||
assert result[0].resource_id == "TestSub"
|
||||
assert result[0].region == AWS_REGION_US_EAST_1
|
||||
assert (
|
||||
result[0].resource_arn
|
||||
== f"arn:aws:rds:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:es:TestSub"
|
||||
)
|
||||
assert result[0].resource_tags == []
|
||||
@@ -1,6 +1,6 @@
|
||||
from azure.identity import AzureAuthorityHosts
|
||||
|
||||
from prowler.providers.microsoft365.lib.regions.microsoft365_regions import (
|
||||
from prowler.providers.microsoft365.lib.regions.regions import (
|
||||
MICROSOFT365_CHINA_CLOUD,
|
||||
MICROSOFT365_GENERIC_CLOUD,
|
||||
MICROSOFT365_US_GOV_CLOUD,
|
||||
|
||||
@@ -29,7 +29,6 @@ def set_mocked_microsoft365_provider(
|
||||
audit_config: dict = None,
|
||||
azure_region_config: Microsoft365RegionConfig = Microsoft365RegionConfig(),
|
||||
) -> Microsoft365Provider:
|
||||
|
||||
provider = MagicMock()
|
||||
provider.type = "microsoft365"
|
||||
provider.session.credentials = credentials
|
||||
|
||||
@@ -212,7 +212,6 @@ class TestMicrosoft365Provider:
|
||||
"prowler.providers.microsoft365.microsoft365_provider.GraphServiceClient"
|
||||
) as mock_graph_client,
|
||||
):
|
||||
|
||||
# Mock the return value of DefaultAzureCredential
|
||||
mock_credentials = MagicMock()
|
||||
mock_credentials.get_token.return_value = AccessToken(
|
||||
@@ -271,7 +270,6 @@ class TestMicrosoft365Provider:
|
||||
with patch(
|
||||
"prowler.providers.microsoft365.microsoft365_provider.Microsoft365Provider.setup_session"
|
||||
) as mock_setup_session:
|
||||
|
||||
mock_setup_session.side_effect = Microsoft365HTTPResponseError(
|
||||
file="test_file", original_exception="Simulated HttpResponseError"
|
||||
)
|
||||
|
||||
+112
@@ -0,0 +1,112 @@
|
||||
from unittest import mock
|
||||
from uuid import uuid4
|
||||
|
||||
from tests.providers.microsoft365.microsoft365_fixtures import (
|
||||
DOMAIN,
|
||||
set_mocked_microsoft365_provider,
|
||||
)
|
||||
|
||||
|
||||
class Test_admincenter_settings_password_never_expire:
|
||||
def test_admincenter_no_domains(self):
|
||||
admincenter_client = mock.MagicMock
|
||||
admincenter_client.audited_tenant = "audited_tenant"
|
||||
admincenter_client.audited_domain = DOMAIN
|
||||
|
||||
with (
|
||||
mock.patch(
|
||||
"prowler.providers.common.provider.Provider.get_global_provider",
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.admincenter.admincenter_settings_password_never_expire.admincenter_settings_password_never_expire.admincenter_client",
|
||||
new=admincenter_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.admincenter.admincenter_settings_password_never_expire.admincenter_settings_password_never_expire import (
|
||||
admincenter_settings_password_never_expire,
|
||||
)
|
||||
|
||||
admincenter_client.domains = {}
|
||||
|
||||
check = admincenter_settings_password_never_expire()
|
||||
result = check.execute()
|
||||
assert len(result) == 0
|
||||
|
||||
def test_admincenter_domain_password_expire(self):
|
||||
admincenter_client = mock.MagicMock
|
||||
admincenter_client.audited_tenant = "audited_tenant"
|
||||
admincenter_client.audited_domain = DOMAIN
|
||||
|
||||
with (
|
||||
mock.patch(
|
||||
"prowler.providers.common.provider.Provider.get_global_provider",
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.admincenter.admincenter_settings_password_never_expire.admincenter_settings_password_never_expire.admincenter_client",
|
||||
new=admincenter_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.admincenter.admincenter_service import (
|
||||
Domain,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.admincenter.admincenter_settings_password_never_expire.admincenter_settings_password_never_expire import (
|
||||
admincenter_settings_password_never_expire,
|
||||
)
|
||||
|
||||
id_domain = str(uuid4())
|
||||
|
||||
admincenter_client.domains = {
|
||||
id_domain: Domain(id=id_domain, password_validity_period=5),
|
||||
}
|
||||
|
||||
check = admincenter_settings_password_never_expire()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "FAIL"
|
||||
assert (
|
||||
result[0].status_extended
|
||||
== f"Domain {id_domain} does not have a Password never expires policy."
|
||||
)
|
||||
assert result[0].resource_name == id_domain
|
||||
assert result[0].resource_id == id_domain
|
||||
|
||||
def test_admincenter_password_not_expire(self):
|
||||
admincenter_client = mock.MagicMock
|
||||
admincenter_client.audited_tenant = "audited_tenant"
|
||||
admincenter_client.audited_domain = DOMAIN
|
||||
|
||||
with (
|
||||
mock.patch(
|
||||
"prowler.providers.common.provider.Provider.get_global_provider",
|
||||
return_value=set_mocked_microsoft365_provider(),
|
||||
),
|
||||
mock.patch(
|
||||
"prowler.providers.microsoft365.services.admincenter.admincenter_settings_password_never_expire.admincenter_settings_password_never_expire.admincenter_client",
|
||||
new=admincenter_client,
|
||||
),
|
||||
):
|
||||
from prowler.providers.microsoft365.services.admincenter.admincenter_service import (
|
||||
Domain,
|
||||
)
|
||||
from prowler.providers.microsoft365.services.admincenter.admincenter_settings_password_never_expire.admincenter_settings_password_never_expire import (
|
||||
admincenter_settings_password_never_expire,
|
||||
)
|
||||
|
||||
id_domain = str(uuid4())
|
||||
|
||||
admincenter_client.domains = {
|
||||
id_domain: Domain(id=id_domain, password_validity_period=2147483647),
|
||||
}
|
||||
|
||||
check = admincenter_settings_password_never_expire()
|
||||
result = check.execute()
|
||||
assert len(result) == 1
|
||||
assert result[0].status == "PASS"
|
||||
assert (
|
||||
result[0].status_extended
|
||||
== f"Domain {id_domain} Password policy is set to never expire."
|
||||
)
|
||||
assert result[0].resource_name == id_domain
|
||||
assert result[0].resource_id == id_domain
|
||||
@@ -0,0 +1,45 @@
|
||||
from unittest.mock import patch
|
||||
|
||||
from prowler.providers.microsoft365.models import Microsoft365IdentityInfo
|
||||
from prowler.providers.microsoft365.services.entra.entra_service import (
|
||||
AuthorizationPolicy,
|
||||
Entra,
|
||||
)
|
||||
from tests.providers.microsoft365.microsoft365_fixtures import (
|
||||
DOMAIN,
|
||||
set_mocked_microsoft365_provider,
|
||||
)
|
||||
|
||||
|
||||
async def mock_entra_get_authorization_policy(_):
|
||||
return {
|
||||
"id-1": AuthorizationPolicy(
|
||||
id="id-1",
|
||||
name="Name 1",
|
||||
description="Description 1",
|
||||
default_user_role_permissions=None,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@patch(
|
||||
"prowler.providers.microsoft365.services.entra.entra_service.Entra._get_authorization_policy",
|
||||
new=mock_entra_get_authorization_policy,
|
||||
)
|
||||
class Test_Entra_Service:
|
||||
def test_get_client(self):
|
||||
admincenter_client = Entra(
|
||||
set_mocked_microsoft365_provider(
|
||||
identity=Microsoft365IdentityInfo(tenant_domain=DOMAIN)
|
||||
)
|
||||
)
|
||||
assert admincenter_client.client.__class__.__name__ == "GraphServiceClient"
|
||||
|
||||
def test_get_authorization_policy(self):
|
||||
entra_client = Entra(set_mocked_microsoft365_provider())
|
||||
assert entra_client.authorization_policy["id-1"].id == "id-1"
|
||||
assert entra_client.authorization_policy["id-1"].name == "Name 1"
|
||||
assert entra_client.authorization_policy["id-1"].description == "Description 1"
|
||||
assert not entra_client.authorization_policy[
|
||||
"id-1"
|
||||
].default_user_role_permissions
|
||||
Reference in new issue
Block a user