feat: adapt Microsoft365 provider to use PowerShell (#7331)

Co-authored-by: MrCloudSec <hello@mistercloudsec.com>
This commit is contained in:
Hugo Pereira Brito
2025-05-08 11:28:18 +02:00
committed by Pepe Fagoaga
co-authored by MrCloudSec
parent 1c3d5b5f69
commit b0e3511351
190 changed files with 3136 additions and 1569 deletions
+2 -2
View File
@@ -429,8 +429,8 @@ kubernetes:
"TLS_RSA_WITH_AES_128_GCM_SHA256",
]
# Microsoft365 Configuration
microsoft365:
# M365 Configuration
m365:
# Conditional Access Policy
# policy.session_controls.sign_in_frequency.frequency in hours
sign_in_frequency: 4
+15 -2
View File
@@ -1,3 +1,4 @@
import sys
import uuid
from argparse import ArgumentTypeError
@@ -16,11 +17,13 @@ prowler_command = "prowler"
# capsys
# https://docs.pytest.org/en/7.1.x/how-to/capture-stdout-stderr.html
prowler_default_usage_error = "usage: prowler [-h] [--version] {aws,azure,gcp,kubernetes,microsoft365,nhn,dashboard} ..."
prowler_default_usage_error = (
"usage: prowler [-h] [--version] {aws,azure,gcp,kubernetes,m365,nhn,dashboard} ..."
)
def mock_get_available_providers():
return ["aws", "azure", "gcp", "kubernetes", "microsoft365", "nhn"]
return ["aws", "azure", "gcp", "kubernetes", "m365", "nhn"]
@pytest.mark.arg_parser
@@ -1367,3 +1370,13 @@ class Test_Parser:
valid_role_names = ["prowler-role" "test@" "test=test+test,."]
for role_name in valid_role_names:
assert validate_role_session_name(role_name) == role_name
def test_microsoft365_alias_conversion(self):
original_argv = sys.argv.copy()
try:
sys.argv = ["prowler", "microsoft365"]
parser = ProwlerArgumentParser()
args = parser.parse()
assert args.provider == "m365"
finally:
sys.argv = original_argv
+3 -3
View File
@@ -956,9 +956,9 @@ class TestFinding:
"prowler.lib.outputs.finding.get_check_compliance",
new=mock_get_check_compliance,
)
def test_transform_api_finding_microsoft365(self):
def test_transform_api_finding_m365(self):
provider = MagicMock()
provider.type = "microsoft365"
provider.type = "m365"
provider.identity.identity_type = "ms_identity_type"
provider.identity.identity_id = "ms_identity_id"
provider.identity.tenant_id = "ms-tenant-id"
@@ -970,7 +970,7 @@ class TestFinding:
dummy_finding.status = "PASS"
dummy_finding.status_extended = "M365 check extended"
check_metadata = {
"provider": "microsoft365",
"provider": "m365",
"checkid": "m365-check-001",
"checktitle": "Test M365 Check",
"checktype": [],
+125
View File
@@ -0,0 +1,125 @@
from unittest.mock import MagicMock, patch
from prowler.providers.m365.lib.powershell.m365_powershell import PowerShellSession
class TestPowerShellSession:
@patch("subprocess.Popen")
def test_init(self, mock_popen):
mock_process = MagicMock()
mock_popen.return_value = mock_process
session = PowerShellSession()
mock_popen.assert_called_once()
assert session.process == mock_process
assert session.END == "<END>"
session.close()
@patch("subprocess.Popen")
def test_sanitize(self, _):
session = PowerShellSession()
test_cases = [
("test@example.com", "test@example.com"),
("test@example.com!", "test@example.com"),
("test@example.com#", "test@example.com"),
("test@example.com$", "test@example.com"),
("test@example.com%", "test@example.com"),
("test@example.com^", "test@example.com"),
("test@example.com&", "test@example.com"),
("test@example.com*", "test@example.com"),
("test@example.com(", "test@example.com"),
("test@example.com)", "test@example.com"),
("test@example.com-", "test@example.com-"),
("test@example.com_", "test@example.com_"),
("test@example.com+", "test@example.com+"),
("test_;echo pwned;password", "test_echopwnedpassword"),
]
for input_str, expected in test_cases:
assert session.sanitize(input_str) == expected
session.close()
@patch("subprocess.Popen")
def test_remove_ansi(self, mock_popen):
session = PowerShellSession()
test_cases = [
("\x1b[32mSuccess\x1b[0m", "Success"),
("\x1b[31mError\x1b[0m", "Error"),
("\x1b[33mWarning\x1b[0m", "Warning"),
("Normal text", "Normal text"),
("\x1b[1mBold\x1b[0m", "Bold"),
]
for input_str, expected in test_cases:
assert session.remove_ansi(input_str) == expected
session.close()
@patch("subprocess.Popen")
def test_execute(self, mock_popen):
mock_process = MagicMock()
mock_popen.return_value = mock_process
session = PowerShellSession()
command = "Get-Command"
expected_output = '{"Name": "Get-Command"}'
with patch.object(session, "read_output", return_value=expected_output):
result = session.execute(command)
mock_process.stdin.write.assert_any_call(f"{command}\n")
mock_process.stdin.write.assert_any_call(f"Write-Output '{session.END}'\n")
assert result == {"Name": "Get-Command"}
session.close()
@patch("subprocess.Popen")
def test_read_output(self, mock_popen):
mock_process = MagicMock()
mock_popen.return_value = mock_process
session = PowerShellSession()
# Test normal output
with patch.object(session, "read_output", return_value="test@example.com"):
assert session.read_output() == "test@example.com"
# Test timeout
mock_process.stdout.readline.return_value = "test output\n"
with patch.object(session, "remove_ansi", return_value="test output"):
assert session.read_output(timeout=0.1, default="") == ""
session.close()
@patch("subprocess.Popen")
def test_json_parse_output(self, mock_popen):
mock_process = MagicMock()
mock_popen.return_value = mock_process
session = PowerShellSession()
test_cases = [
('{"key": "value"}', {"key": "value"}),
('[{"key": "value"}]', [{"key": "value"}]),
(
'[{"key": "value"},{"key": "value"}]',
[{"key": "value"}, {"key": "value"}],
),
("[{}]", [{}]),
("[{},{}]", [{}, {}]),
("not json", {}),
("", {}),
]
for input_str, expected in test_cases:
result = session.json_parse_output(input_str)
assert result == expected
session.close()
@patch("subprocess.Popen")
def test_close(self, mock_popen):
mock_process = MagicMock()
mock_popen.return_value = mock_process
session = PowerShellSession()
session.close()
mock_process.stdin.flush.assert_called_once()
mock_process.terminate.assert_called_once()
mock_process = None
@@ -1,17 +1,15 @@
import yaml
from mock import MagicMock
from prowler.providers.microsoft365.lib.mutelist.mutelist import Microsoft365Mutelist
from prowler.providers.m365.lib.mutelist.mutelist import M365Mutelist
from tests.lib.outputs.fixtures.fixtures import generate_finding_output
MUTELIST_FIXTURE_PATH = (
"tests/providers/microsoft365/lib/mutelist/fixtures/microsoft365_mutelist.yaml"
)
MUTELIST_FIXTURE_PATH = "tests/providers/m365/lib/mutelist/fixtures/m365_mutelist.yaml"
class TestMicrosoft365Mutelist:
class TestM365Mutelist:
def test_get_mutelist_file_from_local_file(self):
mutelist = Microsoft365Mutelist(mutelist_path=MUTELIST_FIXTURE_PATH)
mutelist = M365Mutelist(mutelist_path=MUTELIST_FIXTURE_PATH)
with open(MUTELIST_FIXTURE_PATH) as f:
mutelist_fixture = yaml.safe_load(f)["Mutelist"]
@@ -21,7 +19,7 @@ class TestMicrosoft365Mutelist:
def test_get_mutelist_file_from_local_file_non_existent(self):
mutelist_path = "tests/lib/mutelist/fixtures/not_present"
mutelist = Microsoft365Mutelist(mutelist_path=mutelist_path)
mutelist = M365Mutelist(mutelist_path=mutelist_path)
assert mutelist.mutelist == {}
assert mutelist.mutelist_file_path == mutelist_path
@@ -34,7 +32,7 @@ class TestMicrosoft365Mutelist:
mutelist_fixture["Accounts1"] = mutelist_fixture["Accounts"]
del mutelist_fixture["Accounts"]
mutelist = Microsoft365Mutelist(mutelist_content=mutelist_fixture)
mutelist = M365Mutelist(mutelist_content=mutelist_fixture)
assert not mutelist.validate_mutelist()
assert mutelist.mutelist == {}
@@ -55,7 +53,7 @@ class TestMicrosoft365Mutelist:
}
}
mutelist = Microsoft365Mutelist(mutelist_content=mutelist_content)
mutelist = M365Mutelist(mutelist_content=mutelist_content)
finding = MagicMock
finding.tenant_id = "subscription_1"
@@ -84,7 +82,7 @@ class TestMicrosoft365Mutelist:
}
}
mutelist = Microsoft365Mutelist(mutelist_content=mutelist_content)
mutelist = M365Mutelist(mutelist_content=mutelist_content)
finding_1 = generate_finding_output(
check_id="check_test",
@@ -0,0 +1,210 @@
from unittest.mock import MagicMock, patch
from prowler.providers.m365.lib.powershell.m365_powershell import M365PowerShell
from prowler.providers.m365.models import M365Credentials
class Testm365PowerShell:
@patch("subprocess.Popen")
def test_init(self, mock_popen):
mock_process = MagicMock()
mock_popen.return_value = mock_process
credentials = M365Credentials(user="test@example.com", passwd="test_password")
with patch.object(M365PowerShell, "init_credential") as mock_init_credential:
session = M365PowerShell(credentials)
mock_popen.assert_called_once()
mock_init_credential.assert_called_once_with(credentials)
assert session.process == mock_process
assert session.END == "<END>"
session.close()
@patch("subprocess.Popen")
def test_sanitize(self, _):
credentials = M365Credentials(user="test@example.com", passwd="test_password")
session = M365PowerShell(credentials)
test_cases = [
("test@example.com", "test@example.com"),
("test@example.com!", "test@example.com"),
("test@example.com#", "test@example.com"),
("test@example.com$", "test@example.com"),
("test@example.com%", "test@example.com"),
("test@example.com^", "test@example.com"),
("test@example.com&", "test@example.com"),
("test@example.com*", "test@example.com"),
("test@example.com(", "test@example.com"),
("test@example.com)", "test@example.com"),
("test@example.com-", "test@example.com-"),
("test@example.com_", "test@example.com_"),
("test@example.com+", "test@example.com+"),
("test_;echo pwned;password", "test_echopwnedpassword"),
]
for input_str, expected in test_cases:
assert session.sanitize(input_str) == expected
session.close()
@patch("subprocess.Popen")
def test_init_credential(self, mock_popen):
mock_process = MagicMock()
mock_popen.return_value = mock_process
credentials = M365Credentials(
user="test@example.com",
passwd="test_password",
client_id="test_client_id",
client_secret="test_client_secret",
tenant_id="test_tenant_id",
)
session = M365PowerShell(credentials)
session.execute = MagicMock()
session.init_credential(credentials)
session.execute.assert_any_call(f'$user = "{credentials.user}"')
session.execute.assert_any_call(
f'$secureString = "{credentials.passwd}" | ConvertTo-SecureString'
)
session.execute.assert_any_call(
"$credential = New-Object System.Management.Automation.PSCredential ($user, $secureString)"
)
session.close()
@patch("subprocess.Popen")
@patch("msal.ConfidentialClientApplication")
def test_test_credentials(self, mock_msal, mock_popen):
mock_process = MagicMock()
mock_popen.return_value = mock_process
mock_msal_instance = MagicMock()
mock_msal.return_value = mock_msal_instance
mock_msal_instance.acquire_token_by_username_password.return_value = {
"access_token": "test_token"
}
credentials = M365Credentials(
user="test@example.com",
passwd="test_password",
client_id="test_client_id",
client_secret="test_client_secret",
tenant_id="test_tenant_id",
)
session = M365PowerShell(credentials)
session.execute = MagicMock()
session.process.stdin.write = MagicMock()
session.read_output = MagicMock(return_value="decrypted_password")
assert session.test_credentials(credentials) is True
session.execute.assert_any_call(
f'$securePassword = "{credentials.passwd}" | ConvertTo-SecureString\n'
)
session.execute.assert_any_call(
f'$credential = New-Object System.Management.Automation.PSCredential("{credentials.user}", $securePassword)\n'
)
session.process.stdin.write.assert_any_call(
'Write-Output "$($credential.GetNetworkCredential().Password)"\n'
)
session.process.stdin.write.assert_any_call(f"Write-Output '{session.END}'\n")
mock_msal.assert_called_once_with(
client_id="test_client_id",
client_credential="test_client_secret",
authority="https://login.microsoftonline.com/test_tenant_id",
)
mock_msal_instance.acquire_token_by_username_password.assert_called_once_with(
username="test@example.com",
password="decrypted_password",
scopes=["https://graph.microsoft.com/.default"],
)
session.close()
@patch("subprocess.Popen")
def test_remove_ansi(self, mock_popen):
credentials = M365Credentials(user="test@example.com", passwd="test_password")
session = M365PowerShell(credentials)
test_cases = [
("\x1b[32mSuccess\x1b[0m", "Success"),
("\x1b[31mError\x1b[0m", "Error"),
("\x1b[33mWarning\x1b[0m", "Warning"),
("Normal text", "Normal text"),
("\x1b[1mBold\x1b[0m", "Bold"),
]
for input_str, expected in test_cases:
assert session.remove_ansi(input_str) == expected
session.close()
@patch("subprocess.Popen")
def test_execute(self, mock_popen):
mock_process = MagicMock()
mock_popen.return_value = mock_process
credentials = M365Credentials(user="test@example.com", passwd="test_password")
session = M365PowerShell(credentials)
command = "Get-Command"
expected_output = '{"Name": "Get-Command"}'
with patch.object(session, "read_output", return_value=expected_output):
result = session.execute(command)
mock_process.stdin.write.assert_any_call(f"{command}\n")
mock_process.stdin.write.assert_any_call(f"Write-Output '{session.END}'\n")
assert result == {"Name": "Get-Command"}
session.close()
@patch("subprocess.Popen")
def test_read_output(self, mock_popen):
mock_process = MagicMock()
mock_popen.return_value = mock_process
credentials = M365Credentials(user="test@example.com", passwd="test_password")
session = M365PowerShell(credentials)
# Test normal output
with patch.object(session, "read_output", return_value="test@example.com"):
assert session.read_output() == "test@example.com"
# Test timeout
mock_process.stdout.readline.return_value = "test output\n"
with patch.object(session, "remove_ansi", return_value="test output"):
assert session.read_output(timeout=0.1, default="") == ""
session.close()
@patch("subprocess.Popen")
def test_json_parse_output(self, mock_popen):
mock_process = MagicMock()
mock_popen.return_value = mock_process
credentials = M365Credentials(user="test@example.com", passwd="test_password")
session = M365PowerShell(credentials)
test_cases = [
('{"key": "value"}', {"key": "value"}),
('[{"key": "value"}]', [{"key": "value"}]),
(
'[{"key": "value"},{"key": "value"}]',
[{"key": "value"}, {"key": "value"}],
),
("[{}]", [{}]),
("[{},{}]", [{}, {}]),
("not json", {}),
("", {}),
]
for input_str, expected in test_cases:
result = session.json_parse_output(input_str)
assert result == expected
session.close()
@patch("subprocess.Popen")
def test_close(self, mock_popen):
mock_process = MagicMock()
mock_popen.return_value = mock_process
credentials = M365Credentials(user="test@example.com", passwd="test_password")
session = M365PowerShell(credentials)
session.close()
mock_process.stdin.flush.assert_called_once()
mock_process.terminate.assert_called_once()
@@ -1,6 +1,6 @@
from azure.identity import AzureAuthorityHosts
from prowler.providers.microsoft365.lib.regions.regions import (
from prowler.providers.m365.lib.regions.regions import (
MICROSOFT365_CHINA_CLOUD,
MICROSOFT365_GENERIC_CLOUD,
MICROSOFT365_US_GOV_CLOUD,
@@ -8,25 +8,25 @@ from prowler.providers.microsoft365.lib.regions.regions import (
)
class Test_microsoft365_regions:
class Test_m365_regions:
def test_get_regions_config(self):
allowed_regions = [
"Microsoft365Global",
"Microsoft365China",
"Microsoft365USGovernment",
"M365Global",
"M365China",
"M365USGovernment",
]
expected_output = {
"Microsoft365Global": {
"M365Global": {
"authority": None,
"base_url": MICROSOFT365_GENERIC_CLOUD,
"credential_scopes": [MICROSOFT365_GENERIC_CLOUD + "/.default"],
},
"Microsoft365China": {
"M365China": {
"authority": AzureAuthorityHosts.AZURE_CHINA,
"base_url": MICROSOFT365_CHINA_CLOUD,
"credential_scopes": [MICROSOFT365_CHINA_CLOUD + "/.default"],
},
"Microsoft365USGovernment": {
"M365USGovernment": {
"authority": AzureAuthorityHosts.AZURE_GOVERNMENT,
"base_url": MICROSOFT365_US_GOV_CLOUD,
"credential_scopes": [MICROSOFT365_US_GOV_CLOUD + "/.default"],
@@ -1,10 +1,11 @@
from azure.identity import DefaultAzureCredential
from mock import MagicMock
from prowler.providers.microsoft365.microsoft365_provider import Microsoft365Provider
from prowler.providers.microsoft365.models import (
Microsoft365IdentityInfo,
Microsoft365RegionConfig,
from prowler.providers.m365.m365_provider import M365Provider
from prowler.providers.m365.models import (
M365Credentials,
M365IdentityInfo,
M365RegionConfig,
)
# Azure Identity
@@ -18,20 +19,24 @@ LOCATION = "global"
# Mocked Azure Audit Info
def set_mocked_microsoft365_provider(
credentials: DefaultAzureCredential = DefaultAzureCredential(),
identity: Microsoft365IdentityInfo = Microsoft365IdentityInfo(
def set_mocked_m365_provider(
session_credentials: DefaultAzureCredential = DefaultAzureCredential(),
credentials: M365Credentials = M365Credentials(
user="user@email.com", passwd="111111aa111111aaa1111"
),
identity: M365IdentityInfo = M365IdentityInfo(
identity_id=IDENTITY_ID,
identity_type=IDENTITY_TYPE,
tenant_id=TENANT_ID,
tenant_domain=DOMAIN,
),
audit_config: dict = None,
azure_region_config: Microsoft365RegionConfig = Microsoft365RegionConfig(),
) -> Microsoft365Provider:
azure_region_config: M365RegionConfig = M365RegionConfig(),
) -> M365Provider:
provider = MagicMock()
provider.type = "microsoft365"
provider.session.credentials = credentials
provider.type = "m365"
provider.session.credentials = session_credentials
provider.credentials = credentials
provider.identity = identity
provider.audit_config = audit_config
provider.region_config = azure_region_config
+452
View File
@@ -0,0 +1,452 @@
from unittest.mock import patch
from uuid import uuid4
import pytest
from azure.core.credentials import AccessToken
from azure.identity import (
ClientSecretCredential,
DefaultAzureCredential,
InteractiveBrowserCredential,
)
from mock import MagicMock
from prowler.config.config import (
default_config_file_path,
default_fixer_config_file_path,
load_and_validate_config_file,
)
from prowler.providers.common.models import Connection
from prowler.providers.m365.exceptions.exceptions import (
M365HTTPResponseError,
M365MissingEnvironmentUserCredentialsError,
M365NoAuthenticationMethodError,
)
from prowler.providers.m365.m365_provider import M365Provider
from prowler.providers.m365.models import (
M365Credentials,
M365IdentityInfo,
M365RegionConfig,
)
from tests.providers.m365.m365_fixtures import (
CLIENT_ID,
CLIENT_SECRET,
DOMAIN,
IDENTITY_ID,
IDENTITY_TYPE,
LOCATION,
TENANT_ID,
)
class TestM365Provider:
def test_m365_provider(self):
tenant_id = None
client_id = None
client_secret = None
fixer_config = load_and_validate_config_file(
"m365", default_fixer_config_file_path
)
azure_region = "M365Global"
with (
patch(
"prowler.providers.m365.m365_provider.M365Provider.setup_session",
return_value=ClientSecretCredential(
client_id=CLIENT_ID,
tenant_id=TENANT_ID,
client_secret=CLIENT_SECRET,
),
),
patch(
"prowler.providers.m365.m365_provider.M365Provider.setup_identity",
return_value=M365IdentityInfo(
identity_id=IDENTITY_ID,
identity_type=IDENTITY_TYPE,
tenant_id=TENANT_ID,
tenant_domain=DOMAIN,
location=LOCATION,
),
),
):
m365_provider = M365Provider(
sp_env_auth=True,
az_cli_auth=False,
browser_auth=False,
env_auth=False,
tenant_id=tenant_id,
client_id=client_id,
client_secret=client_secret,
region=azure_region,
config_path=default_config_file_path,
fixer_config=fixer_config,
)
assert m365_provider.region_config == M365RegionConfig(
name="M365Global",
authority=None,
base_url="https://graph.microsoft.com",
credential_scopes=["https://graph.microsoft.com/.default"],
)
assert m365_provider.identity == M365IdentityInfo(
identity_id=IDENTITY_ID,
identity_type=IDENTITY_TYPE,
tenant_id=TENANT_ID,
tenant_domain=DOMAIN,
location=LOCATION,
)
def test_m365_provider_env_auth(self):
tenant_id = None
client_id = None
client_secret = None
fixer_config = load_and_validate_config_file(
"m365", default_fixer_config_file_path
)
azure_region = "M365Global"
with (
patch(
"prowler.providers.m365.m365_provider.M365Provider.setup_session",
return_value=ClientSecretCredential(
client_id=CLIENT_ID,
tenant_id=TENANT_ID,
client_secret=CLIENT_SECRET,
),
),
patch(
"prowler.providers.m365.m365_provider.M365Provider.setup_identity",
return_value=M365IdentityInfo(
identity_id=IDENTITY_ID,
identity_type=IDENTITY_TYPE,
tenant_id=TENANT_ID,
tenant_domain=DOMAIN,
location=LOCATION,
),
),
patch(
"prowler.providers.m365.m365_provider.M365Provider.setup_powershell",
return_value=M365Credentials(
user="test@test.com",
passwd="password",
),
),
):
m365_provider = M365Provider(
sp_env_auth=False,
az_cli_auth=False,
browser_auth=False,
env_auth=True,
tenant_id=tenant_id,
client_id=client_id,
client_secret=client_secret,
region=azure_region,
config_path=default_config_file_path,
fixer_config=fixer_config,
)
assert m365_provider.region_config == M365RegionConfig(
name="M365Global",
authority=None,
base_url="https://graph.microsoft.com",
credential_scopes=["https://graph.microsoft.com/.default"],
)
assert m365_provider.identity == M365IdentityInfo(
identity_id=IDENTITY_ID,
identity_type=IDENTITY_TYPE,
tenant_id=TENANT_ID,
tenant_domain=DOMAIN,
location=LOCATION,
)
def test_m365_provider_cli_auth(self):
"""Test M365 Provider initialization with CLI authentication"""
azure_region = "M365Global"
fixer_config = load_and_validate_config_file(
"m365", default_fixer_config_file_path
)
with (
patch(
"prowler.providers.m365.m365_provider.M365Provider.setup_session",
return_value=DefaultAzureCredential(
exclude_environment_credential=True,
exclude_cli_credential=False,
exclude_managed_identity_credential=True,
exclude_visual_studio_code_credential=True,
exclude_shared_token_cache_credential=True,
exclude_powershell_credential=True,
exclude_browser_credential=True,
),
),
patch(
"prowler.providers.m365.m365_provider.M365Provider.setup_identity",
return_value=M365IdentityInfo(
identity_id=IDENTITY_ID,
identity_type="User",
tenant_id=TENANT_ID,
tenant_domain=DOMAIN,
location=LOCATION,
),
),
):
m365_provider = M365Provider(
sp_env_auth=False,
az_cli_auth=True,
browser_auth=False,
env_auth=False,
region=azure_region,
config_path=default_config_file_path,
fixer_config=fixer_config,
)
assert m365_provider.region_config == M365RegionConfig(
name="M365Global",
authority=None,
base_url="https://graph.microsoft.com",
credential_scopes=["https://graph.microsoft.com/.default"],
)
assert m365_provider.identity == M365IdentityInfo(
identity_id=IDENTITY_ID,
identity_type="User",
tenant_id=TENANT_ID,
tenant_domain=DOMAIN,
location=LOCATION,
)
assert isinstance(m365_provider.session, DefaultAzureCredential)
def test_m365_provider_browser_auth(self):
"""Test M365 Provider initialization with Browser authentication"""
azure_region = "M365Global"
fixer_config = load_and_validate_config_file(
"m365", default_fixer_config_file_path
)
with (
patch(
"prowler.providers.m365.m365_provider.M365Provider.setup_session",
return_value=InteractiveBrowserCredential(
tenant_id=TENANT_ID,
),
),
patch(
"prowler.providers.m365.m365_provider.M365Provider.setup_identity",
return_value=M365IdentityInfo(
identity_id=IDENTITY_ID,
identity_type="User",
tenant_id=TENANT_ID,
tenant_domain=DOMAIN,
location=LOCATION,
),
),
):
m365_provider = M365Provider(
sp_env_auth=False,
az_cli_auth=False,
browser_auth=True,
env_auth=False,
tenant_id=TENANT_ID,
region=azure_region,
config_path=default_config_file_path,
fixer_config=fixer_config,
)
assert m365_provider.region_config == M365RegionConfig(
name="M365Global",
authority=None,
base_url="https://graph.microsoft.com",
credential_scopes=["https://graph.microsoft.com/.default"],
)
assert m365_provider.identity == M365IdentityInfo(
identity_id=IDENTITY_ID,
identity_type="User",
tenant_id=TENANT_ID,
tenant_domain=DOMAIN,
location=LOCATION,
)
assert isinstance(m365_provider.session, InteractiveBrowserCredential)
def test_test_connection_browser_auth(self):
with (
patch(
"prowler.providers.m365.m365_provider.DefaultAzureCredential"
) as mock_default_credential,
patch(
"prowler.providers.m365.m365_provider.M365Provider.setup_session"
) as mock_setup_session,
patch(
"prowler.providers.m365.m365_provider.GraphServiceClient"
) as mock_graph_client,
):
# Mock the return value of DefaultAzureCredential
mock_credentials = MagicMock()
mock_credentials.get_token.return_value = AccessToken(
token="fake_token", expires_on=9999999999
)
mock_default_credential.return_value = mock_credentials
# Mock setup_session to return a mocked session object
mock_session = MagicMock()
mock_setup_session.return_value = mock_session
# Mock GraphServiceClient to avoid real API calls
mock_client = MagicMock()
mock_graph_client.return_value = mock_client
test_connection = M365Provider.test_connection(
browser_auth=True,
tenant_id=str(uuid4()),
region="M365Global",
raise_on_exception=False,
)
assert isinstance(test_connection, Connection)
assert test_connection.is_connected
assert test_connection.error is None
def test_test_connection_tenant_id_client_id_client_secret(self):
with (
patch(
"prowler.providers.m365.m365_provider.M365Provider.setup_session"
) as mock_setup_session,
patch(
"prowler.providers.m365.m365_provider.M365Provider.validate_static_credentials"
) as mock_validate_static_credentials,
):
# Mock setup_session to return a mocked session object
mock_session = MagicMock()
mock_setup_session.return_value = mock_session
# Mock ValidateStaticCredentials to avoid real API calls
mock_validate_static_credentials.return_value = None
test_connection = M365Provider.test_connection(
tenant_id=str(uuid4()),
region="M365Global",
raise_on_exception=False,
client_id=str(uuid4()),
client_secret=str(uuid4()),
)
assert isinstance(test_connection, Connection)
assert test_connection.is_connected
assert test_connection.error is None
def test_test_connection_tenant_id_client_id_client_secret_user_encrypted_password(
self,
):
with (
patch(
"prowler.providers.m365.m365_provider.M365Provider.setup_session"
) as mock_setup_session,
patch(
"prowler.providers.m365.m365_provider.M365Provider.validate_static_credentials"
) as mock_validate_static_credentials,
):
# Mock setup_session to return a mocked session object
mock_session = MagicMock()
mock_setup_session.return_value = mock_session
# Mock ValidateStaticCredentials to avoid real API calls
mock_validate_static_credentials.return_value = None
test_connection = M365Provider.test_connection(
tenant_id=str(uuid4()),
region="M365Global",
raise_on_exception=False,
client_id=str(uuid4()),
client_secret=str(uuid4()),
user="user@user.com",
encrypted_password="AAAA1111",
)
assert isinstance(test_connection, Connection)
assert test_connection.is_connected
assert test_connection.error is None
def test_test_connection_with_httpresponseerror(self):
with patch(
"prowler.providers.m365.m365_provider.M365Provider.setup_session"
) as mock_setup_session:
mock_setup_session.side_effect = M365HTTPResponseError(
file="test_file", original_exception="Simulated HttpResponseError"
)
with pytest.raises(M365HTTPResponseError) as exception:
M365Provider.test_connection(
az_cli_auth=True,
raise_on_exception=True,
)
assert exception.type == M365HTTPResponseError
assert (
exception.value.args[0]
== "[6003] Error in HTTP response from Microsoft 365 - Simulated HttpResponseError"
)
def test_test_connection_with_exception(self):
with patch(
"prowler.providers.m365.m365_provider.M365Provider.setup_session"
) as mock_setup_session:
mock_setup_session.side_effect = Exception("Simulated Exception")
with pytest.raises(Exception) as exception:
M365Provider.test_connection(
sp_env_auth=True,
raise_on_exception=True,
)
assert exception.type is Exception
assert exception.value.args[0] == "Simulated Exception"
def test_test_connection_without_any_method(self):
with pytest.raises(M365NoAuthenticationMethodError) as exception:
M365Provider.test_connection()
assert exception.type == M365NoAuthenticationMethodError
assert (
"M365 provider requires at least one authentication method set: [--env-auth | --az-cli-auth | --sp-env-auth | --browser-auth]"
in exception.value.args[0]
)
def test_setup_powershell_valid_credentials(self):
credentials_dict = {
"user": "test@example.com",
"encrypted_password": "test_password",
"client_id": "test_client_id",
"tenant_id": "test_tenant_id",
"client_secret": "test_client_secret",
}
with patch(
"prowler.providers.m365.lib.powershell.m365_powershell.M365PowerShell.test_credentials",
return_value=True,
):
result = M365Provider.setup_powershell(
env_auth=False, m365_credentials=credentials_dict
)
assert result.user == credentials_dict["user"]
assert result.passwd == credentials_dict["encrypted_password"]
def test_setup_powershell_invalid_env_credentials(self):
credentials = None
with patch(
"prowler.providers.m365.lib.powershell.m365_powershell.M365PowerShell"
) as mock_powershell:
mock_session = MagicMock()
mock_session.test_credentials.return_value = False
mock_powershell.return_value = mock_session
with pytest.raises(M365MissingEnvironmentUserCredentialsError) as exc_info:
M365Provider.setup_powershell(
env_auth=True, m365_credentials=credentials
)
assert (
"Missing M365_USER or M365_ENCRYPTED_PASSWORD environment variables required for credentials authentication"
in str(exc_info.value)
)
mock_session.test_credentials.assert_not_called()
@@ -1,10 +1,7 @@
from unittest import mock
from uuid import uuid4
from tests.providers.microsoft365.microsoft365_fixtures import (
DOMAIN,
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
class Test_admincenter_groups_not_public_visibility:
@@ -16,14 +13,14 @@ class Test_admincenter_groups_not_public_visibility:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.admincenter.admincenter_groups_not_public_visibility.admincenter_groups_not_public_visibility.admincenter_client",
"prowler.providers.m365.services.admincenter.admincenter_groups_not_public_visibility.admincenter_groups_not_public_visibility.admincenter_client",
new=admincenter_client,
),
):
from prowler.providers.microsoft365.services.admincenter.admincenter_groups_not_public_visibility.admincenter_groups_not_public_visibility import (
from prowler.providers.m365.services.admincenter.admincenter_groups_not_public_visibility.admincenter_groups_not_public_visibility import (
admincenter_groups_not_public_visibility,
)
@@ -41,17 +38,17 @@ class Test_admincenter_groups_not_public_visibility:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.admincenter.admincenter_groups_not_public_visibility.admincenter_groups_not_public_visibility.admincenter_client",
"prowler.providers.m365.services.admincenter.admincenter_groups_not_public_visibility.admincenter_groups_not_public_visibility.admincenter_client",
new=admincenter_client,
),
):
from prowler.providers.microsoft365.services.admincenter.admincenter_groups_not_public_visibility.admincenter_groups_not_public_visibility import (
from prowler.providers.m365.services.admincenter.admincenter_groups_not_public_visibility.admincenter_groups_not_public_visibility import (
admincenter_groups_not_public_visibility,
)
from prowler.providers.microsoft365.services.admincenter.admincenter_service import (
from prowler.providers.m365.services.admincenter.admincenter_service import (
Group,
)
@@ -79,17 +76,17 @@ class Test_admincenter_groups_not_public_visibility:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.admincenter.admincenter_groups_not_public_visibility.admincenter_groups_not_public_visibility.admincenter_client",
"prowler.providers.m365.services.admincenter.admincenter_groups_not_public_visibility.admincenter_groups_not_public_visibility.admincenter_client",
new=admincenter_client,
),
):
from prowler.providers.microsoft365.services.admincenter.admincenter_groups_not_public_visibility.admincenter_groups_not_public_visibility import (
from prowler.providers.m365.services.admincenter.admincenter_groups_not_public_visibility.admincenter_groups_not_public_visibility import (
admincenter_groups_not_public_visibility,
)
from prowler.providers.microsoft365.services.admincenter.admincenter_service import (
from prowler.providers.m365.services.admincenter.admincenter_service import (
Group,
)
@@ -1,16 +1,13 @@
from unittest.mock import patch
from prowler.providers.microsoft365.models import Microsoft365IdentityInfo
from prowler.providers.microsoft365.services.admincenter.admincenter_service import (
from prowler.providers.m365.models import M365IdentityInfo
from prowler.providers.m365.services.admincenter.admincenter_service import (
AdminCenter,
DirectoryRole,
Group,
User,
)
from tests.providers.microsoft365.microsoft365_fixtures import (
DOMAIN,
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
async def mock_admincenter_get_users(_):
@@ -40,41 +37,39 @@ async def mock_admincenter_get_groups(_):
@patch(
"prowler.providers.microsoft365.services.admincenter.admincenter_service.AdminCenter._get_users",
"prowler.providers.m365.services.admincenter.admincenter_service.AdminCenter._get_users",
new=mock_admincenter_get_users,
)
@patch(
"prowler.providers.microsoft365.services.admincenter.admincenter_service.AdminCenter._get_directory_roles",
"prowler.providers.m365.services.admincenter.admincenter_service.AdminCenter._get_directory_roles",
new=mock_admincenter_get_directory_roles,
)
@patch(
"prowler.providers.microsoft365.services.admincenter.admincenter_service.AdminCenter._get_groups",
"prowler.providers.m365.services.admincenter.admincenter_service.AdminCenter._get_groups",
new=mock_admincenter_get_groups,
)
class Test_AdminCenter_Service:
def test_get_client(self):
admincenter_client = AdminCenter(
set_mocked_microsoft365_provider(
identity=Microsoft365IdentityInfo(tenant_domain=DOMAIN)
)
set_mocked_m365_provider(identity=M365IdentityInfo(tenant_domain=DOMAIN))
)
assert admincenter_client.client.__class__.__name__ == "GraphServiceClient"
def test_get_users(self):
admincenter_client = AdminCenter(set_mocked_microsoft365_provider())
admincenter_client = AdminCenter(set_mocked_m365_provider())
assert len(admincenter_client.users) == 1
assert admincenter_client.users["user-1@tenant1.es"].id == "id-1"
assert admincenter_client.users["user-1@tenant1.es"].name == "User 1"
def test_get_group_settings(self):
admincenter_client = AdminCenter(set_mocked_microsoft365_provider())
admincenter_client = AdminCenter(set_mocked_m365_provider())
assert len(admincenter_client.groups) == 1
assert admincenter_client.groups["id-1"].id == "id-1"
assert admincenter_client.groups["id-1"].name == "Test"
assert admincenter_client.groups["id-1"].visibility == "Public"
def test_get_directory_roles(self):
admincenter_client = AdminCenter(set_mocked_microsoft365_provider())
admincenter_client = AdminCenter(set_mocked_m365_provider())
assert (
admincenter_client.directory_roles["GlobalAdministrator"].id
== "id-directory-role"
@@ -1,10 +1,7 @@
from unittest import mock
from uuid import uuid4
from tests.providers.microsoft365.microsoft365_fixtures import (
DOMAIN,
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
class Test_admincenter_settings_password_never_expire:
@@ -16,14 +13,14 @@ class Test_admincenter_settings_password_never_expire:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.admincenter.admincenter_settings_password_never_expire.admincenter_settings_password_never_expire.admincenter_client",
"prowler.providers.m365.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 (
from prowler.providers.m365.services.admincenter.admincenter_settings_password_never_expire.admincenter_settings_password_never_expire import (
admincenter_settings_password_never_expire,
)
@@ -41,17 +38,17 @@ class Test_admincenter_settings_password_never_expire:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.admincenter.admincenter_settings_password_never_expire.admincenter_settings_password_never_expire.admincenter_client",
"prowler.providers.m365.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 (
from prowler.providers.m365.services.admincenter.admincenter_service import (
Domain,
)
from prowler.providers.microsoft365.services.admincenter.admincenter_settings_password_never_expire.admincenter_settings_password_never_expire import (
from prowler.providers.m365.services.admincenter.admincenter_settings_password_never_expire.admincenter_settings_password_never_expire import (
admincenter_settings_password_never_expire,
)
@@ -82,17 +79,17 @@ class Test_admincenter_settings_password_never_expire:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.admincenter.admincenter_settings_password_never_expire.admincenter_settings_password_never_expire.admincenter_client",
"prowler.providers.m365.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 (
from prowler.providers.m365.services.admincenter.admincenter_service import (
Domain,
)
from prowler.providers.microsoft365.services.admincenter.admincenter_settings_password_never_expire.admincenter_settings_password_never_expire import (
from prowler.providers.m365.services.admincenter.admincenter_settings_password_never_expire.admincenter_settings_password_never_expire import (
admincenter_settings_password_never_expire,
)
@@ -1,10 +1,7 @@
from unittest import mock
from uuid import uuid4
from tests.providers.microsoft365.microsoft365_fixtures import (
DOMAIN,
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
class Test_admincenter_users_admins_reduced_license_footprint:
@@ -16,14 +13,14 @@ class Test_admincenter_users_admins_reduced_license_footprint:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.admincenter.admincenter_users_admins_reduced_license_footprint.admincenter_users_admins_reduced_license_footprint.admincenter_client",
"prowler.providers.m365.services.admincenter.admincenter_users_admins_reduced_license_footprint.admincenter_users_admins_reduced_license_footprint.admincenter_client",
new=admincenter_client,
),
):
from prowler.providers.microsoft365.services.admincenter.admincenter_users_admins_reduced_license_footprint.admincenter_users_admins_reduced_license_footprint import (
from prowler.providers.m365.services.admincenter.admincenter_users_admins_reduced_license_footprint.admincenter_users_admins_reduced_license_footprint import (
admincenter_users_admins_reduced_license_footprint,
)
@@ -41,17 +38,17 @@ class Test_admincenter_users_admins_reduced_license_footprint:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.admincenter.admincenter_users_admins_reduced_license_footprint.admincenter_users_admins_reduced_license_footprint.admincenter_client",
"prowler.providers.m365.services.admincenter.admincenter_users_admins_reduced_license_footprint.admincenter_users_admins_reduced_license_footprint.admincenter_client",
new=admincenter_client,
),
):
from prowler.providers.microsoft365.services.admincenter.admincenter_service import (
from prowler.providers.m365.services.admincenter.admincenter_service import (
User,
)
from prowler.providers.microsoft365.services.admincenter.admincenter_users_admins_reduced_license_footprint.admincenter_users_admins_reduced_license_footprint import (
from prowler.providers.m365.services.admincenter.admincenter_users_admins_reduced_license_footprint.admincenter_users_admins_reduced_license_footprint import (
admincenter_users_admins_reduced_license_footprint,
)
@@ -78,17 +75,17 @@ class Test_admincenter_users_admins_reduced_license_footprint:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.admincenter.admincenter_users_admins_reduced_license_footprint.admincenter_users_admins_reduced_license_footprint.admincenter_client",
"prowler.providers.m365.services.admincenter.admincenter_users_admins_reduced_license_footprint.admincenter_users_admins_reduced_license_footprint.admincenter_client",
new=admincenter_client,
),
):
from prowler.providers.microsoft365.services.admincenter.admincenter_service import (
from prowler.providers.m365.services.admincenter.admincenter_service import (
User,
)
from prowler.providers.microsoft365.services.admincenter.admincenter_users_admins_reduced_license_footprint.admincenter_users_admins_reduced_license_footprint import (
from prowler.providers.m365.services.admincenter.admincenter_users_admins_reduced_license_footprint.admincenter_users_admins_reduced_license_footprint import (
admincenter_users_admins_reduced_license_footprint,
)
@@ -124,17 +121,17 @@ class Test_admincenter_users_admins_reduced_license_footprint:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.admincenter.admincenter_users_admins_reduced_license_footprint.admincenter_users_admins_reduced_license_footprint.admincenter_client",
"prowler.providers.m365.services.admincenter.admincenter_users_admins_reduced_license_footprint.admincenter_users_admins_reduced_license_footprint.admincenter_client",
new=admincenter_client,
),
):
from prowler.providers.microsoft365.services.admincenter.admincenter_service import (
from prowler.providers.m365.services.admincenter.admincenter_service import (
User,
)
from prowler.providers.microsoft365.services.admincenter.admincenter_users_admins_reduced_license_footprint.admincenter_users_admins_reduced_license_footprint import (
from prowler.providers.m365.services.admincenter.admincenter_users_admins_reduced_license_footprint.admincenter_users_admins_reduced_license_footprint import (
admincenter_users_admins_reduced_license_footprint,
)
@@ -170,17 +167,17 @@ class Test_admincenter_users_admins_reduced_license_footprint:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.admincenter.admincenter_users_admins_reduced_license_footprint.admincenter_users_admins_reduced_license_footprint.admincenter_client",
"prowler.providers.m365.services.admincenter.admincenter_users_admins_reduced_license_footprint.admincenter_users_admins_reduced_license_footprint.admincenter_client",
new=admincenter_client,
),
):
from prowler.providers.microsoft365.services.admincenter.admincenter_service import (
from prowler.providers.m365.services.admincenter.admincenter_service import (
User,
)
from prowler.providers.microsoft365.services.admincenter.admincenter_users_admins_reduced_license_footprint.admincenter_users_admins_reduced_license_footprint import (
from prowler.providers.m365.services.admincenter.admincenter_users_admins_reduced_license_footprint.admincenter_users_admins_reduced_license_footprint import (
admincenter_users_admins_reduced_license_footprint,
)
@@ -1,10 +1,7 @@
from unittest import mock
from uuid import uuid4
from tests.providers.microsoft365.microsoft365_fixtures import (
DOMAIN,
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
class Test_admincenter_users_between_two_and_four_global_admins:
@@ -16,14 +13,14 @@ class Test_admincenter_users_between_two_and_four_global_admins:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.admincenter.admincenter_users_between_two_and_four_global_admins.admincenter_users_between_two_and_four_global_admins.admincenter_client",
"prowler.providers.m365.services.admincenter.admincenter_users_between_two_and_four_global_admins.admincenter_users_between_two_and_four_global_admins.admincenter_client",
new=admincenter_client,
),
):
from prowler.providers.microsoft365.services.admincenter.admincenter_users_between_two_and_four_global_admins.admincenter_users_between_two_and_four_global_admins import (
from prowler.providers.m365.services.admincenter.admincenter_users_between_two_and_four_global_admins.admincenter_users_between_two_and_four_global_admins import (
admincenter_users_between_two_and_four_global_admins,
)
@@ -41,18 +38,18 @@ class Test_admincenter_users_between_two_and_four_global_admins:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.admincenter.admincenter_users_between_two_and_four_global_admins.admincenter_users_between_two_and_four_global_admins.admincenter_client",
"prowler.providers.m365.services.admincenter.admincenter_users_between_two_and_four_global_admins.admincenter_users_between_two_and_four_global_admins.admincenter_client",
new=admincenter_client,
),
):
from prowler.providers.microsoft365.services.admincenter.admincenter_service import (
from prowler.providers.m365.services.admincenter.admincenter_service import (
DirectoryRole,
User,
)
from prowler.providers.microsoft365.services.admincenter.admincenter_users_between_two_and_four_global_admins.admincenter_users_between_two_and_four_global_admins import (
from prowler.providers.m365.services.admincenter.admincenter_users_between_two_and_four_global_admins.admincenter_users_between_two_and_four_global_admins import (
admincenter_users_between_two_and_four_global_admins,
)
@@ -92,18 +89,18 @@ class Test_admincenter_users_between_two_and_four_global_admins:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.admincenter.admincenter_users_between_two_and_four_global_admins.admincenter_users_between_two_and_four_global_admins.admincenter_client",
"prowler.providers.m365.services.admincenter.admincenter_users_between_two_and_four_global_admins.admincenter_users_between_two_and_four_global_admins.admincenter_client",
new=admincenter_client,
),
):
from prowler.providers.microsoft365.services.admincenter.admincenter_service import (
from prowler.providers.m365.services.admincenter.admincenter_service import (
DirectoryRole,
User,
)
from prowler.providers.microsoft365.services.admincenter.admincenter_users_between_two_and_four_global_admins.admincenter_users_between_two_and_four_global_admins import (
from prowler.providers.m365.services.admincenter.admincenter_users_between_two_and_four_global_admins.admincenter_users_between_two_and_four_global_admins import (
admincenter_users_between_two_and_four_global_admins,
)
@@ -154,18 +151,18 @@ class Test_admincenter_users_between_two_and_four_global_admins:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.admincenter.admincenter_users_between_two_and_four_global_admins.admincenter_users_between_two_and_four_global_admins.admincenter_client",
"prowler.providers.m365.services.admincenter.admincenter_users_between_two_and_four_global_admins.admincenter_users_between_two_and_four_global_admins.admincenter_client",
new=admincenter_client,
),
):
from prowler.providers.microsoft365.services.admincenter.admincenter_service import (
from prowler.providers.m365.services.admincenter.admincenter_service import (
DirectoryRole,
User,
)
from prowler.providers.microsoft365.services.admincenter.admincenter_users_between_two_and_four_global_admins.admincenter_users_between_two_and_four_global_admins import (
from prowler.providers.m365.services.admincenter.admincenter_users_between_two_and_four_global_admins.admincenter_users_between_two_and_four_global_admins import (
admincenter_users_between_two_and_four_global_admins,
)
@@ -1,12 +1,7 @@
from unittest import mock
from prowler.providers.microsoft365.services.entra.entra_service import (
AdminConsentPolicy,
)
from tests.providers.microsoft365.microsoft365_fixtures import (
DOMAIN,
set_mocked_microsoft365_provider,
)
from prowler.providers.m365.services.entra.entra_service import AdminConsentPolicy
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
class Test_entra_admin_consent_workflow_enabled:
@@ -20,14 +15,14 @@ class Test_entra_admin_consent_workflow_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_consent_workflow_enabled.entra_admin_consent_workflow_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_admin_consent_workflow_enabled.entra_admin_consent_workflow_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_consent_workflow_enabled.entra_admin_consent_workflow_enabled import (
from prowler.providers.m365.services.entra.entra_admin_consent_workflow_enabled.entra_admin_consent_workflow_enabled import (
entra_admin_consent_workflow_enabled,
)
@@ -62,14 +57,14 @@ class Test_entra_admin_consent_workflow_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_consent_workflow_enabled.entra_admin_consent_workflow_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_admin_consent_workflow_enabled.entra_admin_consent_workflow_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_consent_workflow_enabled.entra_admin_consent_workflow_enabled import (
from prowler.providers.m365.services.entra.entra_admin_consent_workflow_enabled.entra_admin_consent_workflow_enabled import (
entra_admin_consent_workflow_enabled,
)
@@ -104,14 +99,14 @@ class Test_entra_admin_consent_workflow_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_consent_workflow_enabled.entra_admin_consent_workflow_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_admin_consent_workflow_enabled.entra_admin_consent_workflow_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_consent_workflow_enabled.entra_admin_consent_workflow_enabled import (
from prowler.providers.m365.services.entra.entra_admin_consent_workflow_enabled.entra_admin_consent_workflow_enabled import (
entra_admin_consent_workflow_enabled,
)
@@ -148,14 +143,14 @@ class Test_entra_admin_consent_workflow_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_consent_workflow_enabled.entra_admin_consent_workflow_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_admin_consent_workflow_enabled.entra_admin_consent_workflow_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_consent_workflow_enabled.entra_admin_consent_workflow_enabled import (
from prowler.providers.m365.services.entra.entra_admin_consent_workflow_enabled.entra_admin_consent_workflow_enabled import (
entra_admin_consent_workflow_enabled,
)
@@ -1,7 +1,7 @@
from unittest import mock
from uuid import uuid4
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ApplicationsConditions,
ConditionalAccessGrantControl,
ConditionalAccessPolicyState,
@@ -14,10 +14,7 @@ from prowler.providers.microsoft365.services.entra.entra_service import (
SignInFrequencyInterval,
UsersConditions,
)
from tests.providers.microsoft365.microsoft365_fixtures import (
DOMAIN,
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
class Test_entra_admin_portals_access_restriction:
@@ -28,14 +25,14 @@ class Test_entra_admin_portals_access_restriction:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_portals_access_restriction.entra_admin_portals_access_restriction.entra_client",
"prowler.providers.m365.services.entra.entra_admin_portals_access_restriction.entra_admin_portals_access_restriction.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_portals_access_restriction.entra_admin_portals_access_restriction import (
from prowler.providers.m365.services.entra.entra_admin_portals_access_restriction.entra_admin_portals_access_restriction import (
entra_admin_portals_access_restriction,
)
@@ -63,17 +60,17 @@ class Test_entra_admin_portals_access_restriction:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_portals_access_restriction.entra_admin_portals_access_restriction.entra_client",
"prowler.providers.m365.services.entra.entra_admin_portals_access_restriction.entra_admin_portals_access_restriction.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_portals_access_restriction.entra_admin_portals_access_restriction import (
from prowler.providers.m365.services.entra.entra_admin_portals_access_restriction.entra_admin_portals_access_restriction import (
entra_admin_portals_access_restriction,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -137,17 +134,17 @@ class Test_entra_admin_portals_access_restriction:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_portals_access_restriction.entra_admin_portals_access_restriction.entra_client",
"prowler.providers.m365.services.entra.entra_admin_portals_access_restriction.entra_admin_portals_access_restriction.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_portals_access_restriction.entra_admin_portals_access_restriction import (
from prowler.providers.m365.services.entra.entra_admin_portals_access_restriction.entra_admin_portals_access_restriction import (
entra_admin_portals_access_restriction,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -215,17 +212,17 @@ class Test_entra_admin_portals_access_restriction:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_portals_access_restriction.entra_admin_portals_access_restriction.entra_client",
"prowler.providers.m365.services.entra.entra_admin_portals_access_restriction.entra_admin_portals_access_restriction.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_portals_access_restriction.entra_admin_portals_access_restriction import (
from prowler.providers.m365.services.entra.entra_admin_portals_access_restriction.entra_admin_portals_access_restriction import (
entra_admin_portals_access_restriction,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -1,9 +1,7 @@
from unittest import mock
from prowler.providers.microsoft365.services.entra.entra_service import AdminRoles, User
from tests.providers.microsoft365.microsoft365_fixtures import (
set_mocked_microsoft365_provider,
)
from prowler.providers.m365.services.entra.entra_service import AdminRoles, User
from tests.providers.m365.m365_fixtures import set_mocked_m365_provider
class Test_entra_admin_users_cloud_only:
@@ -17,14 +15,14 @@ class Test_entra_admin_users_cloud_only:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_users_cloud_only.entra_admin_users_cloud_only.entra_client",
"prowler.providers.m365.services.entra.entra_admin_users_cloud_only.entra_admin_users_cloud_only.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_users_cloud_only.entra_admin_users_cloud_only import (
from prowler.providers.m365.services.entra.entra_admin_users_cloud_only.entra_admin_users_cloud_only import (
entra_admin_users_cloud_only,
)
@@ -72,14 +70,14 @@ class Test_entra_admin_users_cloud_only:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_users_cloud_only.entra_admin_users_cloud_only.entra_client",
"prowler.providers.m365.services.entra.entra_admin_users_cloud_only.entra_admin_users_cloud_only.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_users_cloud_only.entra_admin_users_cloud_only import (
from prowler.providers.m365.services.entra.entra_admin_users_cloud_only.entra_admin_users_cloud_only import (
entra_admin_users_cloud_only,
)
@@ -127,14 +125,14 @@ class Test_entra_admin_users_cloud_only:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_users_cloud_only.entra_admin_users_cloud_only.entra_client",
"prowler.providers.m365.services.entra.entra_admin_users_cloud_only.entra_admin_users_cloud_only.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_users_cloud_only.entra_admin_users_cloud_only import (
from prowler.providers.m365.services.entra.entra_admin_users_cloud_only.entra_admin_users_cloud_only import (
entra_admin_users_cloud_only,
)
@@ -182,14 +180,14 @@ class Test_entra_admin_users_cloud_only:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_users_cloud_only.entra_admin_users_cloud_only.entra_client",
"prowler.providers.m365.services.entra.entra_admin_users_cloud_only.entra_admin_users_cloud_only.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_users_cloud_only.entra_admin_users_cloud_only import (
from prowler.providers.m365.services.entra.entra_admin_users_cloud_only.entra_admin_users_cloud_only import (
entra_admin_users_cloud_only,
)
@@ -237,14 +235,14 @@ class Test_entra_admin_users_cloud_only:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_users_cloud_only.entra_admin_users_cloud_only.entra_client",
"prowler.providers.m365.services.entra.entra_admin_users_cloud_only.entra_admin_users_cloud_only.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_users_cloud_only.entra_admin_users_cloud_only import (
from prowler.providers.m365.services.entra.entra_admin_users_cloud_only.entra_admin_users_cloud_only import (
entra_admin_users_cloud_only,
)
@@ -293,14 +291,14 @@ class Test_entra_admin_users_cloud_only:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_users_cloud_only.entra_admin_users_cloud_only.entra_client",
"prowler.providers.m365.services.entra.entra_admin_users_cloud_only.entra_admin_users_cloud_only.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_users_cloud_only.entra_admin_users_cloud_only import (
from prowler.providers.m365.services.entra.entra_admin_users_cloud_only.entra_admin_users_cloud_only import (
entra_admin_users_cloud_only,
)
@@ -1,7 +1,7 @@
from unittest import mock
from uuid import uuid4
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ApplicationsConditions,
ConditionalAccessGrantControl,
ConditionalAccessPolicy,
@@ -15,10 +15,7 @@ from prowler.providers.microsoft365.services.entra.entra_service import (
SignInFrequencyInterval,
UsersConditions,
)
from tests.providers.microsoft365.microsoft365_fixtures import (
DOMAIN,
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
class Test_entra_admin_users_mfa_enabled:
@@ -31,14 +28,14 @@ class Test_entra_admin_users_mfa_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled import (
from prowler.providers.m365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled import (
entra_admin_users_mfa_enabled,
)
@@ -67,14 +64,14 @@ class Test_entra_admin_users_mfa_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled import (
from prowler.providers.m365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled import (
entra_admin_users_mfa_enabled,
)
@@ -143,14 +140,14 @@ class Test_entra_admin_users_mfa_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled import (
from prowler.providers.m365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled import (
entra_admin_users_mfa_enabled,
)
@@ -219,14 +216,14 @@ class Test_entra_admin_users_mfa_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled import (
from prowler.providers.m365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled import (
entra_admin_users_mfa_enabled,
)
@@ -300,14 +297,14 @@ class Test_entra_admin_users_mfa_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled import (
from prowler.providers.m365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled import (
entra_admin_users_mfa_enabled,
)
@@ -379,14 +376,14 @@ class Test_entra_admin_users_mfa_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled import (
from prowler.providers.m365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled import (
entra_admin_users_mfa_enabled,
)
@@ -474,14 +471,14 @@ class Test_entra_admin_users_mfa_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled import (
from prowler.providers.m365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled import (
entra_admin_users_mfa_enabled,
)
@@ -569,14 +566,14 @@ class Test_entra_admin_users_mfa_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled import (
from prowler.providers.m365.services.entra.entra_admin_users_mfa_enabled.entra_admin_users_mfa_enabled import (
entra_admin_users_mfa_enabled,
)
@@ -1,7 +1,7 @@
from unittest import mock
from uuid import uuid4
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ApplicationsConditions,
AuthenticationStrength,
ConditionalAccessGrantControl,
@@ -15,10 +15,7 @@ from prowler.providers.microsoft365.services.entra.entra_service import (
SignInFrequencyInterval,
UsersConditions,
)
from tests.providers.microsoft365.microsoft365_fixtures import (
DOMAIN,
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
class Test_entra_admin_users_phishing_resistant_mfa_enabled:
@@ -29,14 +26,14 @@ class Test_entra_admin_users_phishing_resistant_mfa_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_users_phishing_resistant_mfa_enabled.entra_admin_users_phishing_resistant_mfa_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_admin_users_phishing_resistant_mfa_enabled.entra_admin_users_phishing_resistant_mfa_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_users_phishing_resistant_mfa_enabled.entra_admin_users_phishing_resistant_mfa_enabled import (
from prowler.providers.m365.services.entra.entra_admin_users_phishing_resistant_mfa_enabled.entra_admin_users_phishing_resistant_mfa_enabled import (
entra_admin_users_phishing_resistant_mfa_enabled,
)
@@ -65,17 +62,17 @@ class Test_entra_admin_users_phishing_resistant_mfa_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_users_phishing_resistant_mfa_enabled.entra_admin_users_phishing_resistant_mfa_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_admin_users_phishing_resistant_mfa_enabled.entra_admin_users_phishing_resistant_mfa_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_users_phishing_resistant_mfa_enabled.entra_admin_users_phishing_resistant_mfa_enabled import (
from prowler.providers.m365.services.entra.entra_admin_users_phishing_resistant_mfa_enabled.entra_admin_users_phishing_resistant_mfa_enabled import (
entra_admin_users_phishing_resistant_mfa_enabled,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -157,17 +154,17 @@ class Test_entra_admin_users_phishing_resistant_mfa_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_users_phishing_resistant_mfa_enabled.entra_admin_users_phishing_resistant_mfa_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_admin_users_phishing_resistant_mfa_enabled.entra_admin_users_phishing_resistant_mfa_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_users_phishing_resistant_mfa_enabled.entra_admin_users_phishing_resistant_mfa_enabled import (
from prowler.providers.m365.services.entra.entra_admin_users_phishing_resistant_mfa_enabled.entra_admin_users_phishing_resistant_mfa_enabled import (
entra_admin_users_phishing_resistant_mfa_enabled,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -252,17 +249,17 @@ class Test_entra_admin_users_phishing_resistant_mfa_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_users_phishing_resistant_mfa_enabled.entra_admin_users_phishing_resistant_mfa_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_admin_users_phishing_resistant_mfa_enabled.entra_admin_users_phishing_resistant_mfa_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_users_phishing_resistant_mfa_enabled.entra_admin_users_phishing_resistant_mfa_enabled import (
from prowler.providers.m365.services.entra.entra_admin_users_phishing_resistant_mfa_enabled.entra_admin_users_phishing_resistant_mfa_enabled import (
entra_admin_users_phishing_resistant_mfa_enabled,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -1,7 +1,7 @@
from unittest import mock
from uuid import uuid4
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ApplicationsConditions,
ConditionalAccessPolicyState,
Conditions,
@@ -14,10 +14,7 @@ from prowler.providers.microsoft365.services.entra.entra_service import (
SignInFrequencyType,
UsersConditions,
)
from tests.providers.microsoft365.microsoft365_fixtures import (
DOMAIN,
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
class Test_entra_admin_users_sign_in_frequency_enabled:
@@ -28,14 +25,14 @@ class Test_entra_admin_users_sign_in_frequency_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled import (
from prowler.providers.m365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled import (
entra_admin_users_sign_in_frequency_enabled,
)
@@ -65,17 +62,17 @@ class Test_entra_admin_users_sign_in_frequency_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled import (
from prowler.providers.m365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled import (
entra_admin_users_sign_in_frequency_enabled,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -140,17 +137,17 @@ class Test_entra_admin_users_sign_in_frequency_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled import (
from prowler.providers.m365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled import (
entra_admin_users_sign_in_frequency_enabled,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -236,17 +233,17 @@ class Test_entra_admin_users_sign_in_frequency_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled import (
from prowler.providers.m365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled import (
entra_admin_users_sign_in_frequency_enabled,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -333,17 +330,17 @@ class Test_entra_admin_users_sign_in_frequency_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled import (
from prowler.providers.m365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled import (
entra_admin_users_sign_in_frequency_enabled,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -428,17 +425,17 @@ class Test_entra_admin_users_sign_in_frequency_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled import (
from prowler.providers.m365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled import (
entra_admin_users_sign_in_frequency_enabled,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -524,17 +521,17 @@ class Test_entra_admin_users_sign_in_frequency_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled import (
from prowler.providers.m365.services.entra.entra_admin_users_sign_in_frequency_enabled.entra_admin_users_sign_in_frequency_enabled import (
entra_admin_users_sign_in_frequency_enabled,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -1,9 +1,7 @@
from unittest import mock
from prowler.providers.microsoft365.services.entra.entra_service import Group
from tests.providers.microsoft365.microsoft365_fixtures import (
set_mocked_microsoft365_provider,
)
from prowler.providers.m365.services.entra.entra_service import Group
from tests.providers.m365.m365_fixtures import set_mocked_m365_provider
class Test_entra_dynamic_group_for_guests_created:
@@ -18,14 +16,14 @@ class Test_entra_dynamic_group_for_guests_created:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_dynamic_group_for_guests_created.entra_dynamic_group_for_guests_created.entra_client",
"prowler.providers.m365.services.entra.entra_dynamic_group_for_guests_created.entra_dynamic_group_for_guests_created.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_dynamic_group_for_guests_created.entra_dynamic_group_for_guests_created import (
from prowler.providers.m365.services.entra.entra_dynamic_group_for_guests_created.entra_dynamic_group_for_guests_created import (
entra_dynamic_group_for_guests_created,
)
@@ -43,10 +41,10 @@ class Test_entra_dynamic_group_for_guests_created:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_dynamic_group_for_guests_created.entra_dynamic_group_for_guests_created.entra_client",
"prowler.providers.m365.services.entra.entra_dynamic_group_for_guests_created.entra_dynamic_group_for_guests_created.entra_client",
new=entra_client,
),
):
@@ -59,7 +57,7 @@ class Test_entra_dynamic_group_for_guests_created:
)
]
from prowler.providers.microsoft365.services.entra.entra_dynamic_group_for_guests_created.entra_dynamic_group_for_guests_created import (
from prowler.providers.m365.services.entra.entra_dynamic_group_for_guests_created.entra_dynamic_group_for_guests_created import (
entra_dynamic_group_for_guests_created,
)
@@ -85,10 +83,10 @@ class Test_entra_dynamic_group_for_guests_created:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_dynamic_group_for_guests_created.entra_dynamic_group_for_guests_created.entra_client",
"prowler.providers.m365.services.entra.entra_dynamic_group_for_guests_created.entra_dynamic_group_for_guests_created.entra_client",
new=entra_client,
),
):
@@ -101,7 +99,7 @@ class Test_entra_dynamic_group_for_guests_created:
)
]
from prowler.providers.microsoft365.services.entra.entra_dynamic_group_for_guests_created.entra_dynamic_group_for_guests_created import (
from prowler.providers.m365.services.entra.entra_dynamic_group_for_guests_created.entra_dynamic_group_for_guests_created import (
entra_dynamic_group_for_guests_created,
)
@@ -1,7 +1,7 @@
from unittest import mock
from uuid import uuid4
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ApplicationsConditions,
ConditionalAccessGrantControl,
ConditionalAccessPolicyState,
@@ -15,10 +15,7 @@ from prowler.providers.microsoft365.services.entra.entra_service import (
SignInFrequencyInterval,
UsersConditions,
)
from tests.providers.microsoft365.microsoft365_fixtures import (
DOMAIN,
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
class Test_entra_identity_protection_sign_in_risk_enabled:
@@ -29,14 +26,14 @@ class Test_entra_identity_protection_sign_in_risk_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled import (
from prowler.providers.m365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled import (
entra_identity_protection_sign_in_risk_enabled,
)
@@ -64,17 +61,17 @@ class Test_entra_identity_protection_sign_in_risk_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled import (
from prowler.providers.m365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled import (
entra_identity_protection_sign_in_risk_enabled,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -140,17 +137,17 @@ class Test_entra_identity_protection_sign_in_risk_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled import (
from prowler.providers.m365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled import (
entra_identity_protection_sign_in_risk_enabled,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -223,17 +220,17 @@ class Test_entra_identity_protection_sign_in_risk_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled import (
from prowler.providers.m365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled import (
entra_identity_protection_sign_in_risk_enabled,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -306,17 +303,17 @@ class Test_entra_identity_protection_sign_in_risk_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled import (
from prowler.providers.m365.services.entra.entra_identity_protection_sign_in_risk_enabled.entra_identity_protection_sign_in_risk_enabled import (
entra_identity_protection_sign_in_risk_enabled,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -1,7 +1,7 @@
from unittest import mock
from uuid import uuid4
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ApplicationsConditions,
ConditionalAccessGrantControl,
ConditionalAccessPolicyState,
@@ -15,10 +15,7 @@ from prowler.providers.microsoft365.services.entra.entra_service import (
SignInFrequencyInterval,
UsersConditions,
)
from tests.providers.microsoft365.microsoft365_fixtures import (
DOMAIN,
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
class Test_entra_identity_protection_user_risk_enabled:
@@ -29,14 +26,14 @@ class Test_entra_identity_protection_user_risk_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled import (
from prowler.providers.m365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled import (
entra_identity_protection_user_risk_enabled,
)
@@ -64,17 +61,17 @@ class Test_entra_identity_protection_user_risk_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled import (
from prowler.providers.m365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled import (
entra_identity_protection_user_risk_enabled,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -139,17 +136,17 @@ class Test_entra_identity_protection_user_risk_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled import (
from prowler.providers.m365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled import (
entra_identity_protection_user_risk_enabled,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -221,17 +218,17 @@ class Test_entra_identity_protection_user_risk_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled import (
from prowler.providers.m365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled import (
entra_identity_protection_user_risk_enabled,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -303,17 +300,17 @@ class Test_entra_identity_protection_user_risk_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled import (
from prowler.providers.m365.services.entra.entra_identity_protection_user_risk_enabled.entra_identity_protection_user_risk_enabled import (
entra_identity_protection_user_risk_enabled,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -1,7 +1,7 @@
from unittest import mock
from uuid import uuid4
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ApplicationsConditions,
ClientAppType,
ConditionalAccessGrantControl,
@@ -15,10 +15,7 @@ from prowler.providers.microsoft365.services.entra.entra_service import (
SignInFrequencyInterval,
UsersConditions,
)
from tests.providers.microsoft365.microsoft365_fixtures import (
DOMAIN,
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
class Test_entra_legacy_authentication_blocked:
@@ -29,14 +26,14 @@ class Test_entra_legacy_authentication_blocked:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_legacy_authentication_blocked.entra_legacy_authentication_blocked.entra_client",
"prowler.providers.m365.services.entra.entra_legacy_authentication_blocked.entra_legacy_authentication_blocked.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_legacy_authentication_blocked.entra_legacy_authentication_blocked import (
from prowler.providers.m365.services.entra.entra_legacy_authentication_blocked.entra_legacy_authentication_blocked import (
entra_legacy_authentication_blocked,
)
@@ -65,17 +62,17 @@ class Test_entra_legacy_authentication_blocked:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_legacy_authentication_blocked.entra_legacy_authentication_blocked.entra_client",
"prowler.providers.m365.services.entra.entra_legacy_authentication_blocked.entra_legacy_authentication_blocked.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_legacy_authentication_blocked.entra_legacy_authentication_blocked import (
from prowler.providers.m365.services.entra.entra_legacy_authentication_blocked.entra_legacy_authentication_blocked import (
entra_legacy_authentication_blocked,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -147,17 +144,17 @@ class Test_entra_legacy_authentication_blocked:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_legacy_authentication_blocked.entra_legacy_authentication_blocked.entra_client",
"prowler.providers.m365.services.entra.entra_legacy_authentication_blocked.entra_legacy_authentication_blocked.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_legacy_authentication_blocked.entra_legacy_authentication_blocked import (
from prowler.providers.m365.services.entra.entra_legacy_authentication_blocked.entra_legacy_authentication_blocked import (
entra_legacy_authentication_blocked,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -232,17 +229,17 @@ class Test_entra_legacy_authentication_blocked:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_legacy_authentication_blocked.entra_legacy_authentication_blocked.entra_client",
"prowler.providers.m365.services.entra.entra_legacy_authentication_blocked.entra_legacy_authentication_blocked.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_legacy_authentication_blocked.entra_legacy_authentication_blocked import (
from prowler.providers.m365.services.entra.entra_legacy_authentication_blocked.entra_legacy_authentication_blocked import (
entra_legacy_authentication_blocked,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -1,7 +1,7 @@
from unittest import mock
from uuid import uuid4
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ApplicationsConditions,
ConditionalAccessGrantControl,
ConditionalAccessPolicyState,
@@ -14,10 +14,7 @@ from prowler.providers.microsoft365.services.entra.entra_service import (
SignInFrequencyInterval,
UsersConditions,
)
from tests.providers.microsoft365.microsoft365_fixtures import (
DOMAIN,
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
class Test_entra_managed_device_required_for_authentication:
@@ -28,14 +25,14 @@ class Test_entra_managed_device_required_for_authentication:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_managed_device_required_for_authentication.entra_managed_device_required_for_authentication.entra_client",
"prowler.providers.m365.services.entra.entra_managed_device_required_for_authentication.entra_managed_device_required_for_authentication.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_managed_device_required_for_authentication.entra_managed_device_required_for_authentication import (
from prowler.providers.m365.services.entra.entra_managed_device_required_for_authentication.entra_managed_device_required_for_authentication import (
entra_managed_device_required_for_authentication,
)
@@ -63,17 +60,17 @@ class Test_entra_managed_device_required_for_authentication:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_managed_device_required_for_authentication.entra_managed_device_required_for_authentication.entra_client",
"prowler.providers.m365.services.entra.entra_managed_device_required_for_authentication.entra_managed_device_required_for_authentication.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_managed_device_required_for_authentication.entra_managed_device_required_for_authentication import (
from prowler.providers.m365.services.entra.entra_managed_device_required_for_authentication.entra_managed_device_required_for_authentication import (
entra_managed_device_required_for_authentication,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -137,17 +134,17 @@ class Test_entra_managed_device_required_for_authentication:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_managed_device_required_for_authentication.entra_managed_device_required_for_authentication.entra_client",
"prowler.providers.m365.services.entra.entra_managed_device_required_for_authentication.entra_managed_device_required_for_authentication.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_managed_device_required_for_authentication.entra_managed_device_required_for_authentication import (
from prowler.providers.m365.services.entra.entra_managed_device_required_for_authentication.entra_managed_device_required_for_authentication import (
entra_managed_device_required_for_authentication,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -219,17 +216,17 @@ class Test_entra_managed_device_required_for_authentication:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_managed_device_required_for_authentication.entra_managed_device_required_for_authentication.entra_client",
"prowler.providers.m365.services.entra.entra_managed_device_required_for_authentication.entra_managed_device_required_for_authentication.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_managed_device_required_for_authentication.entra_managed_device_required_for_authentication import (
from prowler.providers.m365.services.entra.entra_managed_device_required_for_authentication.entra_managed_device_required_for_authentication import (
entra_managed_device_required_for_authentication,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -1,7 +1,7 @@
from unittest import mock
from uuid import uuid4
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ApplicationsConditions,
ConditionalAccessGrantControl,
ConditionalAccessPolicyState,
@@ -15,10 +15,7 @@ from prowler.providers.microsoft365.services.entra.entra_service import (
UserAction,
UsersConditions,
)
from tests.providers.microsoft365.microsoft365_fixtures import (
DOMAIN,
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
class Test_entra_managed_device_required_for_mfa_registration:
@@ -29,14 +26,14 @@ class Test_entra_managed_device_required_for_mfa_registration:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_managed_device_required_for_mfa_registration.entra_managed_device_required_for_mfa_registration.entra_client",
"prowler.providers.m365.services.entra.entra_managed_device_required_for_mfa_registration.entra_managed_device_required_for_mfa_registration.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_managed_device_required_for_mfa_registration.entra_managed_device_required_for_mfa_registration import (
from prowler.providers.m365.services.entra.entra_managed_device_required_for_mfa_registration.entra_managed_device_required_for_mfa_registration import (
entra_managed_device_required_for_mfa_registration,
)
@@ -64,17 +61,17 @@ class Test_entra_managed_device_required_for_mfa_registration:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_managed_device_required_for_mfa_registration.entra_managed_device_required_for_mfa_registration.entra_client",
"prowler.providers.m365.services.entra.entra_managed_device_required_for_mfa_registration.entra_managed_device_required_for_mfa_registration.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_managed_device_required_for_mfa_registration.entra_managed_device_required_for_mfa_registration import (
from prowler.providers.m365.services.entra.entra_managed_device_required_for_mfa_registration.entra_managed_device_required_for_mfa_registration import (
entra_managed_device_required_for_mfa_registration,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -138,17 +135,17 @@ class Test_entra_managed_device_required_for_mfa_registration:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_managed_device_required_for_mfa_registration.entra_managed_device_required_for_mfa_registration.entra_client",
"prowler.providers.m365.services.entra.entra_managed_device_required_for_mfa_registration.entra_managed_device_required_for_mfa_registration.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_managed_device_required_for_mfa_registration.entra_managed_device_required_for_mfa_registration import (
from prowler.providers.m365.services.entra.entra_managed_device_required_for_mfa_registration.entra_managed_device_required_for_mfa_registration import (
entra_managed_device_required_for_mfa_registration,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -220,17 +217,17 @@ class Test_entra_managed_device_required_for_mfa_registration:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_managed_device_required_for_mfa_registration.entra_managed_device_required_for_mfa_registration.entra_client",
"prowler.providers.m365.services.entra.entra_managed_device_required_for_mfa_registration.entra_managed_device_required_for_mfa_registration.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_managed_device_required_for_mfa_registration.entra_managed_device_required_for_mfa_registration import (
from prowler.providers.m365.services.entra.entra_managed_device_required_for_mfa_registration.entra_managed_device_required_for_mfa_registration import (
entra_managed_device_required_for_mfa_registration,
)
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ConditionalAccessPolicy,
)
@@ -1,9 +1,7 @@
from unittest import mock
from prowler.providers.microsoft365.services.entra.entra_service import Organization
from tests.providers.microsoft365.microsoft365_fixtures import (
set_mocked_microsoft365_provider,
)
from prowler.providers.m365.services.entra.entra_service import Organization
from tests.providers.m365.m365_fixtures import set_mocked_m365_provider
class Test_entra_password_hash_sync_enabled:
@@ -13,14 +11,14 @@ class Test_entra_password_hash_sync_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_password_hash_sync_enabled.entra_password_hash_sync_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_password_hash_sync_enabled.entra_password_hash_sync_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_password_hash_sync_enabled.entra_password_hash_sync_enabled import (
from prowler.providers.m365.services.entra.entra_password_hash_sync_enabled.entra_password_hash_sync_enabled import (
entra_password_hash_sync_enabled,
)
@@ -51,14 +49,14 @@ class Test_entra_password_hash_sync_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_password_hash_sync_enabled.entra_password_hash_sync_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_password_hash_sync_enabled.entra_password_hash_sync_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_password_hash_sync_enabled.entra_password_hash_sync_enabled import (
from prowler.providers.m365.services.entra.entra_password_hash_sync_enabled.entra_password_hash_sync_enabled import (
entra_password_hash_sync_enabled,
)
@@ -103,14 +101,14 @@ class Test_entra_password_hash_sync_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_password_hash_sync_enabled.entra_password_hash_sync_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_password_hash_sync_enabled.entra_password_hash_sync_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_password_hash_sync_enabled.entra_password_hash_sync_enabled import (
from prowler.providers.m365.services.entra.entra_password_hash_sync_enabled.entra_password_hash_sync_enabled import (
entra_password_hash_sync_enabled,
)
@@ -142,14 +140,14 @@ class Test_entra_password_hash_sync_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_password_hash_sync_enabled.entra_password_hash_sync_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_password_hash_sync_enabled.entra_password_hash_sync_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_password_hash_sync_enabled.entra_password_hash_sync_enabled import (
from prowler.providers.m365.services.entra.entra_password_hash_sync_enabled.entra_password_hash_sync_enabled import (
entra_password_hash_sync_enabled,
)
@@ -1,13 +1,11 @@
from unittest import mock
from uuid import uuid4
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
AuthorizationPolicy,
DefaultUserRolePermissions,
)
from tests.providers.microsoft365.microsoft365_fixtures import (
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import set_mocked_m365_provider
class Test_entra_policy_ensure_default_user_cannot_create_tenants:
@@ -18,14 +16,14 @@ class Test_entra_policy_ensure_default_user_cannot_create_tenants:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_policy_ensure_default_user_cannot_create_tenants.entra_policy_ensure_default_user_cannot_create_tenants.entra_client",
"prowler.providers.m365.services.entra.entra_policy_ensure_default_user_cannot_create_tenants.entra_policy_ensure_default_user_cannot_create_tenants.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_policy_ensure_default_user_cannot_create_tenants.entra_policy_ensure_default_user_cannot_create_tenants import (
from prowler.providers.m365.services.entra.entra_policy_ensure_default_user_cannot_create_tenants.entra_policy_ensure_default_user_cannot_create_tenants import (
entra_policy_ensure_default_user_cannot_create_tenants,
)
@@ -49,14 +47,14 @@ class Test_entra_policy_ensure_default_user_cannot_create_tenants:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_policy_ensure_default_user_cannot_create_tenants.entra_policy_ensure_default_user_cannot_create_tenants.entra_client",
"prowler.providers.m365.services.entra.entra_policy_ensure_default_user_cannot_create_tenants.entra_policy_ensure_default_user_cannot_create_tenants.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_policy_ensure_default_user_cannot_create_tenants.entra_policy_ensure_default_user_cannot_create_tenants import (
from prowler.providers.m365.services.entra.entra_policy_ensure_default_user_cannot_create_tenants.entra_policy_ensure_default_user_cannot_create_tenants import (
entra_policy_ensure_default_user_cannot_create_tenants,
)
@@ -89,14 +87,14 @@ class Test_entra_policy_ensure_default_user_cannot_create_tenants:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_policy_ensure_default_user_cannot_create_tenants.entra_policy_ensure_default_user_cannot_create_tenants.entra_client",
"prowler.providers.m365.services.entra.entra_policy_ensure_default_user_cannot_create_tenants.entra_policy_ensure_default_user_cannot_create_tenants.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_policy_ensure_default_user_cannot_create_tenants.entra_policy_ensure_default_user_cannot_create_tenants import (
from prowler.providers.m365.services.entra.entra_policy_ensure_default_user_cannot_create_tenants.entra_policy_ensure_default_user_cannot_create_tenants import (
entra_policy_ensure_default_user_cannot_create_tenants,
)
@@ -1,12 +1,10 @@
import mock
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
AuthorizationPolicy,
InvitationsFrom,
)
from tests.providers.microsoft365.microsoft365_fixtures import (
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import set_mocked_m365_provider
class Test_entra_policy_guest_invite_only_for_admin_roles:
@@ -21,14 +19,14 @@ class Test_entra_policy_guest_invite_only_for_admin_roles:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_policy_guest_invite_only_for_admin_roles.entra_policy_guest_invite_only_for_admin_roles.entra_client",
"prowler.providers.m365.services.entra.entra_policy_guest_invite_only_for_admin_roles.entra_policy_guest_invite_only_for_admin_roles.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_policy_guest_invite_only_for_admin_roles.entra_policy_guest_invite_only_for_admin_roles import (
from prowler.providers.m365.services.entra.entra_policy_guest_invite_only_for_admin_roles.entra_policy_guest_invite_only_for_admin_roles import (
entra_policy_guest_invite_only_for_admin_roles,
)
@@ -54,14 +52,14 @@ class Test_entra_policy_guest_invite_only_for_admin_roles:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_policy_guest_invite_only_for_admin_roles.entra_policy_guest_invite_only_for_admin_roles.entra_client",
"prowler.providers.m365.services.entra.entra_policy_guest_invite_only_for_admin_roles.entra_policy_guest_invite_only_for_admin_roles.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_policy_guest_invite_only_for_admin_roles.entra_policy_guest_invite_only_for_admin_roles import (
from prowler.providers.m365.services.entra.entra_policy_guest_invite_only_for_admin_roles.entra_policy_guest_invite_only_for_admin_roles import (
entra_policy_guest_invite_only_for_admin_roles,
)
@@ -95,14 +93,14 @@ class Test_entra_policy_guest_invite_only_for_admin_roles:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_policy_guest_invite_only_for_admin_roles.entra_policy_guest_invite_only_for_admin_roles.entra_client",
"prowler.providers.m365.services.entra.entra_policy_guest_invite_only_for_admin_roles.entra_policy_guest_invite_only_for_admin_roles.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_policy_guest_invite_only_for_admin_roles.entra_policy_guest_invite_only_for_admin_roles import (
from prowler.providers.m365.services.entra.entra_policy_guest_invite_only_for_admin_roles.entra_policy_guest_invite_only_for_admin_roles import (
entra_policy_guest_invite_only_for_admin_roles,
)
@@ -136,14 +134,14 @@ class Test_entra_policy_guest_invite_only_for_admin_roles:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_policy_guest_invite_only_for_admin_roles.entra_policy_guest_invite_only_for_admin_roles.entra_client",
"prowler.providers.m365.services.entra.entra_policy_guest_invite_only_for_admin_roles.entra_policy_guest_invite_only_for_admin_roles.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_policy_guest_invite_only_for_admin_roles.entra_policy_guest_invite_only_for_admin_roles import (
from prowler.providers.m365.services.entra.entra_policy_guest_invite_only_for_admin_roles.entra_policy_guest_invite_only_for_admin_roles import (
entra_policy_guest_invite_only_for_admin_roles,
)
@@ -1,12 +1,10 @@
from unittest import mock
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
AuthorizationPolicy,
AuthPolicyRoles,
)
from tests.providers.microsoft365.microsoft365_fixtures import (
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import set_mocked_m365_provider
class Test_entra_policy_guest_users_access_restrictions:
@@ -21,14 +19,14 @@ class Test_entra_policy_guest_users_access_restrictions:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_policy_guest_users_access_restrictions.entra_policy_guest_users_access_restrictions.entra_client",
"prowler.providers.m365.services.entra.entra_policy_guest_users_access_restrictions.entra_policy_guest_users_access_restrictions.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_policy_guest_users_access_restrictions.entra_policy_guest_users_access_restrictions import (
from prowler.providers.m365.services.entra.entra_policy_guest_users_access_restrictions.entra_policy_guest_users_access_restrictions import (
entra_policy_guest_users_access_restrictions,
)
@@ -54,14 +52,14 @@ class Test_entra_policy_guest_users_access_restrictions:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_policy_guest_users_access_restrictions.entra_policy_guest_users_access_restrictions.entra_client",
"prowler.providers.m365.services.entra.entra_policy_guest_users_access_restrictions.entra_policy_guest_users_access_restrictions.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_policy_guest_users_access_restrictions.entra_policy_guest_users_access_restrictions import (
from prowler.providers.m365.services.entra.entra_policy_guest_users_access_restrictions.entra_policy_guest_users_access_restrictions import (
entra_policy_guest_users_access_restrictions,
)
@@ -95,14 +93,14 @@ class Test_entra_policy_guest_users_access_restrictions:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_policy_guest_users_access_restrictions.entra_policy_guest_users_access_restrictions.entra_client",
"prowler.providers.m365.services.entra.entra_policy_guest_users_access_restrictions.entra_policy_guest_users_access_restrictions.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_policy_guest_users_access_restrictions.entra_policy_guest_users_access_restrictions import (
from prowler.providers.m365.services.entra.entra_policy_guest_users_access_restrictions.entra_policy_guest_users_access_restrictions import (
entra_policy_guest_users_access_restrictions,
)
@@ -136,14 +134,14 @@ class Test_entra_policy_guest_users_access_restrictions:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_policy_guest_users_access_restrictions.entra_policy_guest_users_access_restrictions.entra_client",
"prowler.providers.m365.services.entra.entra_policy_guest_users_access_restrictions.entra_policy_guest_users_access_restrictions.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_policy_guest_users_access_restrictions.entra_policy_guest_users_access_restrictions import (
from prowler.providers.m365.services.entra.entra_policy_guest_users_access_restrictions.entra_policy_guest_users_access_restrictions import (
entra_policy_guest_users_access_restrictions,
)
@@ -1,13 +1,11 @@
from unittest import mock
from uuid import uuid4
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
AuthorizationPolicy,
DefaultUserRolePermissions,
)
from tests.providers.microsoft365.microsoft365_fixtures import (
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import set_mocked_m365_provider
class Test_entra_policy_restricts_user_consent_for_apps:
@@ -25,14 +23,14 @@ class Test_entra_policy_restricts_user_consent_for_apps:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_policy_restricts_user_consent_for_apps.entra_policy_restricts_user_consent_for_apps.entra_client",
"prowler.providers.m365.services.entra.entra_policy_restricts_user_consent_for_apps.entra_policy_restricts_user_consent_for_apps.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_policy_restricts_user_consent_for_apps.entra_policy_restricts_user_consent_for_apps import (
from prowler.providers.m365.services.entra.entra_policy_restricts_user_consent_for_apps.entra_policy_restricts_user_consent_for_apps import (
entra_policy_restricts_user_consent_for_apps,
)
@@ -65,14 +63,14 @@ class Test_entra_policy_restricts_user_consent_for_apps:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_policy_restricts_user_consent_for_apps.entra_policy_restricts_user_consent_for_apps.entra_client",
"prowler.providers.m365.services.entra.entra_policy_restricts_user_consent_for_apps.entra_policy_restricts_user_consent_for_apps.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_policy_restricts_user_consent_for_apps.entra_policy_restricts_user_consent_for_apps import (
from prowler.providers.m365.services.entra.entra_policy_restricts_user_consent_for_apps.entra_policy_restricts_user_consent_for_apps import (
entra_policy_restricts_user_consent_for_apps,
)
@@ -116,14 +114,14 @@ class Test_entra_policy_restricts_user_consent_for_apps:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_policy_restricts_user_consent_for_apps.entra_policy_restricts_user_consent_for_apps.entra_client",
"prowler.providers.m365.services.entra.entra_policy_restricts_user_consent_for_apps.entra_policy_restricts_user_consent_for_apps.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_policy_restricts_user_consent_for_apps.entra_policy_restricts_user_consent_for_apps import (
from prowler.providers.m365.services.entra.entra_policy_restricts_user_consent_for_apps.entra_policy_restricts_user_consent_for_apps import (
entra_policy_restricts_user_consent_for_apps,
)
@@ -1,13 +1,10 @@
from unittest import mock
from uuid import uuid4
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
DefaultUserRolePermissions,
)
from tests.providers.microsoft365.microsoft365_fixtures import (
DOMAIN,
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
class Test_entra_thirdparty_integrated_apps_not_allowed:
@@ -18,14 +15,14 @@ class Test_entra_thirdparty_integrated_apps_not_allowed:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_thirdparty_integrated_apps_not_allowed.entra_thirdparty_integrated_apps_not_allowed.entra_client",
"prowler.providers.m365.services.entra.entra_thirdparty_integrated_apps_not_allowed.entra_thirdparty_integrated_apps_not_allowed.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_thirdparty_integrated_apps_not_allowed.entra_thirdparty_integrated_apps_not_allowed import (
from prowler.providers.m365.services.entra.entra_thirdparty_integrated_apps_not_allowed.entra_thirdparty_integrated_apps_not_allowed import (
entra_thirdparty_integrated_apps_not_allowed,
)
@@ -44,17 +41,17 @@ class Test_entra_thirdparty_integrated_apps_not_allowed:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_thirdparty_integrated_apps_not_allowed.entra_thirdparty_integrated_apps_not_allowed.entra_client",
"prowler.providers.m365.services.entra.entra_thirdparty_integrated_apps_not_allowed.entra_thirdparty_integrated_apps_not_allowed.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
AuthorizationPolicy,
)
from prowler.providers.microsoft365.services.entra.entra_thirdparty_integrated_apps_not_allowed.entra_thirdparty_integrated_apps_not_allowed import (
from prowler.providers.m365.services.entra.entra_thirdparty_integrated_apps_not_allowed.entra_thirdparty_integrated_apps_not_allowed import (
entra_thirdparty_integrated_apps_not_allowed,
)
@@ -88,17 +85,17 @@ class Test_entra_thirdparty_integrated_apps_not_allowed:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_thirdparty_integrated_apps_not_allowed.entra_thirdparty_integrated_apps_not_allowed.entra_client",
"prowler.providers.m365.services.entra.entra_thirdparty_integrated_apps_not_allowed.entra_thirdparty_integrated_apps_not_allowed.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
AuthorizationPolicy,
)
from prowler.providers.microsoft365.services.entra.entra_thirdparty_integrated_apps_not_allowed.entra_thirdparty_integrated_apps_not_allowed import (
from prowler.providers.m365.services.entra.entra_thirdparty_integrated_apps_not_allowed.entra_thirdparty_integrated_apps_not_allowed import (
entra_thirdparty_integrated_apps_not_allowed,
)
@@ -1,7 +1,7 @@
from unittest import mock
from uuid import uuid4
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.services.entra.entra_service import (
ApplicationsConditions,
ConditionalAccessGrantControl,
ConditionalAccessPolicy,
@@ -15,10 +15,7 @@ from prowler.providers.microsoft365.services.entra.entra_service import (
SignInFrequencyInterval,
UsersConditions,
)
from tests.providers.microsoft365.microsoft365_fixtures import (
DOMAIN,
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
class Test_entra_users_mfa_enabled:
@@ -31,14 +28,14 @@ class Test_entra_users_mfa_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_users_mfa_enabled.entra_users_mfa_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_users_mfa_enabled.entra_users_mfa_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_users_mfa_enabled.entra_users_mfa_enabled import (
from prowler.providers.m365.services.entra.entra_users_mfa_enabled.entra_users_mfa_enabled import (
entra_users_mfa_enabled,
)
@@ -67,14 +64,14 @@ class Test_entra_users_mfa_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_users_mfa_enabled.entra_users_mfa_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_users_mfa_enabled.entra_users_mfa_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_users_mfa_enabled.entra_users_mfa_enabled import (
from prowler.providers.m365.services.entra.entra_users_mfa_enabled.entra_users_mfa_enabled import (
entra_users_mfa_enabled,
)
@@ -148,14 +145,14 @@ class Test_entra_users_mfa_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_users_mfa_enabled.entra_users_mfa_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_users_mfa_enabled.entra_users_mfa_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_users_mfa_enabled.entra_users_mfa_enabled import (
from prowler.providers.m365.services.entra.entra_users_mfa_enabled.entra_users_mfa_enabled import (
entra_users_mfa_enabled,
)
@@ -227,14 +224,14 @@ class Test_entra_users_mfa_enabled:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.entra.entra_users_mfa_enabled.entra_users_mfa_enabled.entra_client",
"prowler.providers.m365.services.entra.entra_users_mfa_enabled.entra_users_mfa_enabled.entra_client",
new=entra_client,
),
):
from prowler.providers.microsoft365.services.entra.entra_users_mfa_enabled.entra_users_mfa_enabled import (
from prowler.providers.m365.services.entra.entra_users_mfa_enabled.entra_users_mfa_enabled import (
entra_users_mfa_enabled,
)
@@ -1,7 +1,7 @@
from unittest.mock import patch
from prowler.providers.microsoft365.models import Microsoft365IdentityInfo
from prowler.providers.microsoft365.services.entra.entra_service import (
from prowler.providers.m365.models import M365IdentityInfo
from prowler.providers.m365.services.entra.entra_service import (
AdminConsentPolicy,
AdminRoles,
ApplicationsConditions,
@@ -27,10 +27,7 @@ from prowler.providers.microsoft365.services.entra.entra_service import (
UserAction,
UsersConditions,
)
from tests.providers.microsoft365.microsoft365_fixtures import (
DOMAIN,
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
async def mock_entra_get_authorization_policy(_):
@@ -153,18 +150,16 @@ async def mock_entra_get_organization(_):
class Test_Entra_Service:
def test_get_client(self):
admincenter_client = Entra(
set_mocked_microsoft365_provider(
identity=Microsoft365IdentityInfo(tenant_domain=DOMAIN)
)
set_mocked_m365_provider(identity=M365IdentityInfo(tenant_domain=DOMAIN))
)
assert admincenter_client.client.__class__.__name__ == "GraphServiceClient"
@patch(
"prowler.providers.microsoft365.services.entra.entra_service.Entra._get_authorization_policy",
"prowler.providers.m365.services.entra.entra_service.Entra._get_authorization_policy",
new=mock_entra_get_authorization_policy,
)
def test_get_authorization_policy(self):
entra_client = Entra(set_mocked_microsoft365_provider())
entra_client = Entra(set_mocked_m365_provider())
assert entra_client.authorization_policy.id == "id-1"
assert entra_client.authorization_policy.name == "Name 1"
assert entra_client.authorization_policy.description == "Description 1"
@@ -188,11 +183,11 @@ class Test_Entra_Service:
)
@patch(
"prowler.providers.microsoft365.services.entra.entra_service.Entra._get_conditional_access_policies",
"prowler.providers.m365.services.entra.entra_service.Entra._get_conditional_access_policies",
new=mock_entra_get_conditional_access_policies,
)
def test_get_conditional_access_policies(self):
entra_client = Entra(set_mocked_microsoft365_provider())
entra_client = Entra(set_mocked_m365_provider())
assert entra_client.conditional_access_policies == {
"id-1": ConditionalAccessPolicy(
id="id-1",
@@ -234,11 +229,11 @@ class Test_Entra_Service:
}
@patch(
"prowler.providers.microsoft365.services.entra.entra_service.Entra._get_groups",
"prowler.providers.m365.services.entra.entra_service.Entra._get_groups",
new=mock_entra_get_groups,
)
def test_get_groups(self):
entra_client = Entra(set_mocked_microsoft365_provider())
entra_client = Entra(set_mocked_m365_provider())
assert len(entra_client.groups) == 2
assert entra_client.groups[0]["id"] == "id-1"
assert entra_client.groups[0]["name"] == "group1"
@@ -250,33 +245,33 @@ class Test_Entra_Service:
assert entra_client.groups[1]["membershipRule"] == ""
@patch(
"prowler.providers.microsoft365.services.entra.entra_service.Entra._get_admin_consent_policy",
"prowler.providers.m365.services.entra.entra_service.Entra._get_admin_consent_policy",
new=mock_entra_get_admin_consent_policy,
)
def test_get_admin_consent_policy(self):
entra_client = Entra(set_mocked_microsoft365_provider())
entra_client = Entra(set_mocked_m365_provider())
assert entra_client.admin_consent_policy.admin_consent_enabled
assert entra_client.admin_consent_policy.notify_reviewers
assert entra_client.admin_consent_policy.email_reminders_to_reviewers is False
assert entra_client.admin_consent_policy.duration_in_days == 30
@patch(
"prowler.providers.microsoft365.services.entra.entra_service.Entra._get_organization",
"prowler.providers.m365.services.entra.entra_service.Entra._get_organization",
new=mock_entra_get_organization,
)
def test_get_organization(self):
entra_client = Entra(set_mocked_microsoft365_provider())
entra_client = Entra(set_mocked_m365_provider())
assert len(entra_client.organizations) == 1
assert entra_client.organizations[0].id == "org1"
assert entra_client.organizations[0].name == "Organization 1"
assert entra_client.organizations[0].on_premises_sync_enabled
@patch(
"prowler.providers.microsoft365.services.entra.entra_service.Entra._get_users",
"prowler.providers.m365.services.entra.entra_service.Entra._get_users",
new=mock_entra_get_users,
)
def test_get_users(self):
entra_client = Entra(set_mocked_microsoft365_provider())
entra_client = Entra(set_mocked_m365_provider())
assert len(entra_client.users) == 3
assert entra_client.users["user-1"].id == "user-1"
assert entra_client.users["user-1"].name == "User 1"
@@ -0,0 +1,82 @@
from unittest import mock
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
class Test_purview_audit_log_search_enabled:
def test_audit_log_search_disabled(self):
purview_client = mock.MagicMock()
purview_client.audited_tenant = "audited_tenant"
purview_client.audited_domain = DOMAIN
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.m365.lib.powershell.m365_powershell.M365PowerShell.connect_exchange_online"
),
mock.patch(
"prowler.providers.m365.services.purview.purview_audit_log_search_enabled.purview_audit_log_search_enabled.purview_client",
new=purview_client,
),
):
from prowler.providers.m365.services.purview.purview_audit_log_search_enabled.purview_audit_log_search_enabled import (
purview_audit_log_search_enabled,
)
from prowler.providers.m365.services.purview.purview_service import (
AuditLogConfig,
)
purview_client.audit_log_config = AuditLogConfig(audit_log_search=False)
check = purview_audit_log_search_enabled()
result = check.execute()
assert len(result) == 1
assert result[0].status == "FAIL"
assert (
result[0].status_extended == "Purview audit log search is not enabled."
)
assert result[0].resource == purview_client.audit_log_config.dict()
assert result[0].resource_name == "Purview Settings"
assert result[0].resource_id == "purviewSettings"
assert result[0].location == "global"
purview_client.powershell.close()
def test_audit_log_search_enabled(self):
purview_client = mock.MagicMock()
purview_client.audited_tenant = "audited_tenant"
purview_client.audited_domain = DOMAIN
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.m365.lib.powershell.m365_powershell.M365PowerShell.connect_exchange_online"
),
mock.patch(
"prowler.providers.m365.services.purview.purview_audit_log_search_enabled.purview_audit_log_search_enabled.purview_client",
new=purview_client,
),
):
from prowler.providers.m365.services.purview.purview_audit_log_search_enabled.purview_audit_log_search_enabled import (
purview_audit_log_search_enabled,
)
from prowler.providers.m365.services.purview.purview_service import (
AuditLogConfig,
)
purview_client.audit_log_config = AuditLogConfig(audit_log_search=True)
check = purview_audit_log_search_enabled()
result = check.execute()
assert len(result) == 1
assert result[0].status == "PASS"
assert result[0].status_extended == "Purview audit log search is enabled."
assert result[0].resource == purview_client.audit_log_config.dict()
assert result[0].resource_name == "Purview Settings"
assert result[0].resource_id == "purviewSettings"
assert result[0].location == "global"
@@ -0,0 +1,48 @@
from unittest import mock
from unittest.mock import patch
from prowler.providers.m365.models import M365IdentityInfo
from prowler.providers.m365.services.purview.purview_service import (
AuditLogConfig,
Purview,
)
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
def mock_get_audit_log_config(_):
return AuditLogConfig(audit_log_search=True)
class Test_Purview_Service:
def test_get_client(self):
with (
mock.patch(
"prowler.providers.m365.lib.powershell.m365_powershell.M365PowerShell.connect_exchange_online"
),
):
purview_client = Purview(
set_mocked_m365_provider(
identity=M365IdentityInfo(tenant_domain=DOMAIN)
)
)
assert purview_client.client.__class__.__name__ == "GraphServiceClient"
assert purview_client.powershell.__class__.__name__ == "M365PowerShell"
@patch(
"prowler.providers.m365.services.purview.purview_service.Purview._get_audit_log_config",
new=mock_get_audit_log_config,
)
def test_get_settings(self):
with (
mock.patch(
"prowler.providers.m365.lib.powershell.m365_powershell.M365PowerShell.connect_exchange_online"
),
):
purview_client = Purview(
set_mocked_m365_provider(
identity=M365IdentityInfo(tenant_domain=DOMAIN)
)
)
assert purview_client.audit_log_config == AuditLogConfig(
audit_log_search=True
)
@@ -1,12 +1,9 @@
from unittest import mock
from prowler.providers.microsoft365.services.sharepoint.sharepoint_service import (
from prowler.providers.m365.services.sharepoint.sharepoint_service import (
SharePointSettings,
)
from tests.providers.microsoft365.microsoft365_fixtures import (
DOMAIN,
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
class Test_sharepoint_external_sharing_managed:
@@ -20,14 +17,14 @@ class Test_sharepoint_external_sharing_managed:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed.sharepoint_client",
"prowler.providers.m365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed.sharepoint_client",
new=sharepoint_client,
),
):
from prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed import (
from prowler.providers.m365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed import (
sharepoint_external_sharing_managed,
)
@@ -65,14 +62,14 @@ class Test_sharepoint_external_sharing_managed:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed.sharepoint_client",
"prowler.providers.m365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed.sharepoint_client",
new=sharepoint_client,
),
):
from prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed import (
from prowler.providers.m365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed import (
sharepoint_external_sharing_managed,
)
@@ -110,14 +107,14 @@ class Test_sharepoint_external_sharing_managed:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed.sharepoint_client",
"prowler.providers.m365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed.sharepoint_client",
new=sharepoint_client,
),
):
from prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed import (
from prowler.providers.m365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed import (
sharepoint_external_sharing_managed,
)
@@ -155,14 +152,14 @@ class Test_sharepoint_external_sharing_managed:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed.sharepoint_client",
"prowler.providers.m365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed.sharepoint_client",
new=sharepoint_client,
),
):
from prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed import (
from prowler.providers.m365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed import (
sharepoint_external_sharing_managed,
)
@@ -200,14 +197,14 @@ class Test_sharepoint_external_sharing_managed:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed.sharepoint_client",
"prowler.providers.m365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed.sharepoint_client",
new=sharepoint_client,
),
):
from prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed import (
from prowler.providers.m365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed import (
sharepoint_external_sharing_managed,
)
@@ -247,14 +244,14 @@ class Test_sharepoint_external_sharing_managed:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed.sharepoint_client",
"prowler.providers.m365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed.sharepoint_client",
new=sharepoint_client,
),
):
from prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed import (
from prowler.providers.m365.services.sharepoint.sharepoint_external_sharing_managed.sharepoint_external_sharing_managed import (
sharepoint_external_sharing_managed,
)
@@ -1,12 +1,9 @@
from unittest import mock
from prowler.providers.microsoft365.services.sharepoint.sharepoint_service import (
from prowler.providers.m365.services.sharepoint.sharepoint_service import (
SharePointSettings,
)
from tests.providers.microsoft365.microsoft365_fixtures import (
DOMAIN,
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
class Test_sharepoint_external_sharing_restricted:
@@ -20,14 +17,14 @@ class Test_sharepoint_external_sharing_restricted:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_restricted.sharepoint_external_sharing_restricted.sharepoint_client",
"prowler.providers.m365.services.sharepoint.sharepoint_external_sharing_restricted.sharepoint_external_sharing_restricted.sharepoint_client",
new=sharepoint_client,
),
):
from prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_restricted.sharepoint_external_sharing_restricted import (
from prowler.providers.m365.services.sharepoint.sharepoint_external_sharing_restricted.sharepoint_external_sharing_restricted import (
sharepoint_external_sharing_restricted,
)
@@ -63,14 +60,14 @@ class Test_sharepoint_external_sharing_restricted:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_restricted.sharepoint_external_sharing_restricted.sharepoint_client",
"prowler.providers.m365.services.sharepoint.sharepoint_external_sharing_restricted.sharepoint_external_sharing_restricted.sharepoint_client",
new=sharepoint_client,
),
):
from prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_restricted.sharepoint_external_sharing_restricted import (
from prowler.providers.m365.services.sharepoint.sharepoint_external_sharing_restricted.sharepoint_external_sharing_restricted import (
sharepoint_external_sharing_restricted,
)
@@ -108,14 +105,14 @@ class Test_sharepoint_external_sharing_restricted:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_restricted.sharepoint_external_sharing_restricted.sharepoint_client",
"prowler.providers.m365.services.sharepoint.sharepoint_external_sharing_restricted.sharepoint_external_sharing_restricted.sharepoint_client",
new=sharepoint_client,
),
):
from prowler.providers.microsoft365.services.sharepoint.sharepoint_external_sharing_restricted.sharepoint_external_sharing_restricted import (
from prowler.providers.m365.services.sharepoint.sharepoint_external_sharing_restricted.sharepoint_external_sharing_restricted import (
sharepoint_external_sharing_restricted,
)
@@ -1,12 +1,9 @@
from unittest import mock
from prowler.providers.microsoft365.services.sharepoint.sharepoint_service import (
from prowler.providers.m365.services.sharepoint.sharepoint_service import (
SharePointSettings,
)
from tests.providers.microsoft365.microsoft365_fixtures import (
DOMAIN,
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
class Test_sharepoint_guest_sharing_restricted:
@@ -20,14 +17,14 @@ class Test_sharepoint_guest_sharing_restricted:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.sharepoint.sharepoint_guest_sharing_restricted.sharepoint_guest_sharing_restricted.sharepoint_client",
"prowler.providers.m365.services.sharepoint.sharepoint_guest_sharing_restricted.sharepoint_guest_sharing_restricted.sharepoint_client",
new=sharepoint_client,
),
):
from prowler.providers.microsoft365.services.sharepoint.sharepoint_guest_sharing_restricted.sharepoint_guest_sharing_restricted import (
from prowler.providers.m365.services.sharepoint.sharepoint_guest_sharing_restricted.sharepoint_guest_sharing_restricted import (
sharepoint_guest_sharing_restricted,
)
@@ -64,14 +61,14 @@ class Test_sharepoint_guest_sharing_restricted:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.sharepoint.sharepoint_guest_sharing_restricted.sharepoint_guest_sharing_restricted.sharepoint_client",
"prowler.providers.m365.services.sharepoint.sharepoint_guest_sharing_restricted.sharepoint_guest_sharing_restricted.sharepoint_client",
new=sharepoint_client,
),
):
from prowler.providers.microsoft365.services.sharepoint.sharepoint_guest_sharing_restricted.sharepoint_guest_sharing_restricted import (
from prowler.providers.m365.services.sharepoint.sharepoint_guest_sharing_restricted.sharepoint_guest_sharing_restricted import (
sharepoint_guest_sharing_restricted,
)
@@ -110,14 +107,14 @@ class Test_sharepoint_guest_sharing_restricted:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.sharepoint.sharepoint_guest_sharing_restricted.sharepoint_guest_sharing_restricted.sharepoint_client",
"prowler.providers.m365.services.sharepoint.sharepoint_guest_sharing_restricted.sharepoint_guest_sharing_restricted.sharepoint_client",
new=sharepoint_client,
),
):
from prowler.providers.microsoft365.services.sharepoint.sharepoint_guest_sharing_restricted.sharepoint_guest_sharing_restricted import (
from prowler.providers.m365.services.sharepoint.sharepoint_guest_sharing_restricted.sharepoint_guest_sharing_restricted import (
sharepoint_guest_sharing_restricted,
)
@@ -1,9 +1,6 @@
from unittest import mock
from tests.providers.microsoft365.microsoft365_fixtures import (
DOMAIN,
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
class Test_sharepoint_modern_authentication_required:
@@ -17,17 +14,17 @@ class Test_sharepoint_modern_authentication_required:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.sharepoint.sharepoint_modern_authentication_required.sharepoint_modern_authentication_required.sharepoint_client",
"prowler.providers.m365.services.sharepoint.sharepoint_modern_authentication_required.sharepoint_modern_authentication_required.sharepoint_client",
new=sharepoint_client,
),
):
from prowler.providers.microsoft365.services.sharepoint.sharepoint_modern_authentication_required.sharepoint_modern_authentication_required import (
from prowler.providers.m365.services.sharepoint.sharepoint_modern_authentication_required.sharepoint_modern_authentication_required import (
sharepoint_modern_authentication_required,
)
from prowler.providers.microsoft365.services.sharepoint.sharepoint_service import (
from prowler.providers.m365.services.sharepoint.sharepoint_service import (
SharePointSettings,
)
@@ -63,17 +60,17 @@ class Test_sharepoint_modern_authentication_required:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.sharepoint.sharepoint_modern_authentication_required.sharepoint_modern_authentication_required.sharepoint_client",
"prowler.providers.m365.services.sharepoint.sharepoint_modern_authentication_required.sharepoint_modern_authentication_required.sharepoint_client",
new=sharepoint_client,
),
):
from prowler.providers.microsoft365.services.sharepoint.sharepoint_modern_authentication_required.sharepoint_modern_authentication_required import (
from prowler.providers.m365.services.sharepoint.sharepoint_modern_authentication_required.sharepoint_modern_authentication_required import (
sharepoint_modern_authentication_required,
)
from prowler.providers.microsoft365.services.sharepoint.sharepoint_service import (
from prowler.providers.m365.services.sharepoint.sharepoint_service import (
SharePointSettings,
)
@@ -111,14 +108,14 @@ class Test_sharepoint_modern_authentication_required:
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_microsoft365_provider(),
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.microsoft365.services.sharepoint.sharepoint_modern_authentication_required.sharepoint_modern_authentication_required.sharepoint_client",
"prowler.providers.m365.services.sharepoint.sharepoint_modern_authentication_required.sharepoint_modern_authentication_required.sharepoint_client",
new=sharepoint_client,
),
):
from prowler.providers.microsoft365.services.sharepoint.sharepoint_modern_authentication_required.sharepoint_modern_authentication_required import (
from prowler.providers.m365.services.sharepoint.sharepoint_modern_authentication_required.sharepoint_modern_authentication_required import (
sharepoint_modern_authentication_required,
)
@@ -1,14 +1,11 @@
from unittest.mock import patch
from prowler.providers.microsoft365.models import Microsoft365IdentityInfo
from prowler.providers.microsoft365.services.sharepoint.sharepoint_service import (
from prowler.providers.m365.models import M365IdentityInfo
from prowler.providers.m365.services.sharepoint.sharepoint_service import (
SharePoint,
SharePointSettings,
)
from tests.providers.microsoft365.microsoft365_fixtures import (
DOMAIN,
set_mocked_microsoft365_provider,
)
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
async def mock_sharepoint_get_settings(_):
@@ -23,20 +20,18 @@ async def mock_sharepoint_get_settings(_):
@patch(
"prowler.providers.microsoft365.services.sharepoint.sharepoint_service.SharePoint._get_settings",
"prowler.providers.m365.services.sharepoint.sharepoint_service.SharePoint._get_settings",
new=mock_sharepoint_get_settings,
)
class Test_SharePoint_Service:
def test_get_client(self):
sharepoint_client = SharePoint(
set_mocked_microsoft365_provider(
identity=Microsoft365IdentityInfo(tenant_domain=DOMAIN)
)
set_mocked_m365_provider(identity=M365IdentityInfo(tenant_domain=DOMAIN))
)
assert sharepoint_client.client.__class__.__name__ == "GraphServiceClient"
def test_get_settings(self):
sharepoint_client = SharePoint(set_mocked_microsoft365_provider())
sharepoint_client = SharePoint(set_mocked_m365_provider())
settings = sharepoint_client.settings
assert settings.sharingCapability == "ExternalUserAndGuestSharing"
assert settings.sharingAllowedDomainList == ["allowed-domain.com"]
@@ -0,0 +1,121 @@
from unittest import mock
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
class Test_teams_external_file_sharing_restricted:
def test_file_sharing_no_restricted(self):
teams_client = mock.MagicMock()
teams_client.audited_tenant = "audited_tenant"
teams_client.audited_domain = DOMAIN
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.m365.lib.powershell.m365_powershell.M365PowerShell.connect_microsoft_teams"
),
mock.patch(
"prowler.providers.m365.services.teams.teams_external_file_sharing_restricted.teams_external_file_sharing_restricted.teams_client",
new=teams_client,
),
):
from prowler.providers.m365.services.teams.teams_external_file_sharing_restricted.teams_external_file_sharing_restricted import (
teams_external_file_sharing_restricted,
)
from prowler.providers.m365.services.teams.teams_service import (
CloudStorageSettings,
TeamsSettings,
)
teams_client.teams_settings = TeamsSettings(
cloud_storage_settings=CloudStorageSettings(
allow_box=True,
allow_drop_box=True,
allow_egnyte=True,
allow_google_drive=True,
allow_share_file=True,
)
)
teams_client.audit_config = {"allowed_cloud_storage_services": []}
check = teams_external_file_sharing_restricted()
result = check.execute()
assert len(result) == 1
assert result[0].status == "FAIL"
assert (
result[0].status_extended
== "External file sharing is not restricted to only approved cloud storage services."
)
assert (
result[0].resource
== teams_client.teams_settings.cloud_storage_settings.dict()
)
assert result[0].resource_name == "Cloud Storage Settings"
assert result[0].resource_id == "cloudStorageSettings"
assert result[0].location == "global"
def test_file_sharing_restricted(self):
teams_client = mock.MagicMock()
teams_client.audited_tenant = "audited_tenant"
teams_client.audited_domain = DOMAIN
with (
mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=set_mocked_m365_provider(),
),
mock.patch(
"prowler.providers.m365.lib.powershell.m365_powershell.M365PowerShell.connect_microsoft_teams"
),
mock.patch(
"prowler.providers.m365.services.teams.teams_external_file_sharing_restricted.teams_external_file_sharing_restricted.teams_client",
new=teams_client,
),
):
from prowler.providers.m365.services.teams.teams_external_file_sharing_restricted.teams_external_file_sharing_restricted import (
teams_external_file_sharing_restricted,
)
from prowler.providers.m365.services.teams.teams_service import (
CloudStorageSettings,
TeamsSettings,
)
teams_client.teams_settings = TeamsSettings(
cloud_storage_settings=CloudStorageSettings(
allow_box=True,
allow_drop_box=True,
allow_egnyte=False,
allow_google_drive=True,
allow_share_file=True,
)
)
teams_client.audit_config = {
"allowed_cloud_storage_services": [
"allow_box",
"allow_drop_box",
# "allow_egnyte",
"allow_google_drive",
"allow_share_file",
]
}
check = teams_external_file_sharing_restricted()
result = check.execute()
assert len(result) == 1
assert result[0].status == "PASS"
assert (
result[0].status_extended
== "External file sharing is restricted to only approved cloud storage services."
)
assert (
result[0].resource
== teams_client.teams_settings.cloud_storage_settings.dict()
)
assert result[0].resource_name == "Cloud Storage Settings"
assert result[0].resource_id == "cloudStorageSettings"
assert result[0].location == "global"
@@ -0,0 +1,65 @@
from unittest import mock
from unittest.mock import patch
from prowler.providers.m365.models import M365IdentityInfo
from prowler.providers.m365.services.teams.teams_service import (
CloudStorageSettings,
Teams,
TeamsSettings,
)
from tests.providers.m365.m365_fixtures import DOMAIN, set_mocked_m365_provider
def mock_get_teams_client_configuration(_):
return TeamsSettings(
cloud_storage_settings=CloudStorageSettings(
allow_box=False,
allow_drop_box=False,
allow_egnyte=False,
allow_google_drive=False,
allow_share_file=False,
)
)
class Test_Teams_Service:
def test_get_client(self):
with (
mock.patch(
"prowler.providers.m365.lib.powershell.m365_powershell.M365PowerShell.connect_microsoft_teams"
),
):
teams_client = Teams(
set_mocked_m365_provider(
identity=M365IdentityInfo(tenant_domain=DOMAIN)
)
)
assert teams_client.client.__class__.__name__ == "GraphServiceClient"
assert teams_client.powershell.__class__.__name__ == "M365PowerShell"
teams_client.powershell.close()
@patch(
"prowler.providers.m365.services.teams.teams_service.Teams._get_teams_client_configuration",
new=mock_get_teams_client_configuration,
)
def test_get_settings(self):
with (
mock.patch(
"prowler.providers.m365.lib.powershell.m365_powershell.M365PowerShell.connect_microsoft_teams"
),
):
teams_client = Teams(
set_mocked_m365_provider(
identity=M365IdentityInfo(tenant_domain=DOMAIN)
)
)
assert teams_client.teams_settings == TeamsSettings(
cloud_storage_settings=CloudStorageSettings(
allow_box=False,
allow_drop_box=False,
allow_egnyte=False,
allow_google_drive=False,
allow_share_file=False,
)
)
teams_client.powershell.close()
@@ -1,312 +0,0 @@
from unittest.mock import patch
from uuid import uuid4
import pytest
from azure.core.credentials import AccessToken
from azure.identity import (
ClientSecretCredential,
DefaultAzureCredential,
InteractiveBrowserCredential,
)
from mock import MagicMock
from prowler.config.config import (
default_config_file_path,
default_fixer_config_file_path,
load_and_validate_config_file,
)
from prowler.providers.common.models import Connection
from prowler.providers.microsoft365.exceptions.exceptions import (
Microsoft365HTTPResponseError,
Microsoft365NoAuthenticationMethodError,
)
from prowler.providers.microsoft365.microsoft365_provider import Microsoft365Provider
from prowler.providers.microsoft365.models import (
Microsoft365IdentityInfo,
Microsoft365RegionConfig,
)
from tests.providers.microsoft365.microsoft365_fixtures import (
CLIENT_ID,
CLIENT_SECRET,
DOMAIN,
IDENTITY_ID,
IDENTITY_TYPE,
LOCATION,
TENANT_ID,
)
class TestMicrosoft365Provider:
def test_microsoft365_provider(self):
tenant_id = None
client_id = None
client_secret = None
fixer_config = load_and_validate_config_file(
"microsoft365", default_fixer_config_file_path
)
azure_region = "Microsoft365Global"
with (
patch(
"prowler.providers.microsoft365.microsoft365_provider.Microsoft365Provider.setup_session",
return_value=ClientSecretCredential(
client_id=CLIENT_ID,
tenant_id=TENANT_ID,
client_secret=CLIENT_SECRET,
),
),
patch(
"prowler.providers.microsoft365.microsoft365_provider.Microsoft365Provider.setup_identity",
return_value=Microsoft365IdentityInfo(
identity_id=IDENTITY_ID,
identity_type=IDENTITY_TYPE,
tenant_id=TENANT_ID,
tenant_domain=DOMAIN,
location=LOCATION,
),
),
):
microsoft365_provider = Microsoft365Provider(
sp_env_auth=True,
az_cli_auth=False,
browser_auth=False,
tenant_id=tenant_id,
client_id=client_id,
client_secret=client_secret,
region=azure_region,
config_path=default_config_file_path,
fixer_config=fixer_config,
)
assert microsoft365_provider.region_config == Microsoft365RegionConfig(
name="Microsoft365Global",
authority=None,
base_url="https://graph.microsoft.com",
credential_scopes=["https://graph.microsoft.com/.default"],
)
assert microsoft365_provider.identity == Microsoft365IdentityInfo(
identity_id=IDENTITY_ID,
identity_type=IDENTITY_TYPE,
tenant_id=TENANT_ID,
tenant_domain=DOMAIN,
location=LOCATION,
)
def test_microsoft365_provider_cli_auth(self):
"""Test Microsoft365 Provider initialization with CLI authentication"""
azure_region = "Microsoft365Global"
fixer_config = load_and_validate_config_file(
"microsoft365", default_fixer_config_file_path
)
with (
patch(
"prowler.providers.microsoft365.microsoft365_provider.Microsoft365Provider.setup_session",
return_value=DefaultAzureCredential(
exclude_environment_credential=True,
exclude_cli_credential=False,
exclude_managed_identity_credential=True,
exclude_visual_studio_code_credential=True,
exclude_shared_token_cache_credential=True,
exclude_powershell_credential=True,
exclude_browser_credential=True,
),
),
patch(
"prowler.providers.microsoft365.microsoft365_provider.Microsoft365Provider.setup_identity",
return_value=Microsoft365IdentityInfo(
identity_id=IDENTITY_ID,
identity_type="User",
tenant_id=TENANT_ID,
tenant_domain=DOMAIN,
location=LOCATION,
),
),
):
microsoft365_provider = Microsoft365Provider(
sp_env_auth=False,
az_cli_auth=True,
browser_auth=False,
region=azure_region,
config_path=default_config_file_path,
fixer_config=fixer_config,
)
assert microsoft365_provider.region_config == Microsoft365RegionConfig(
name="Microsoft365Global",
authority=None,
base_url="https://graph.microsoft.com",
credential_scopes=["https://graph.microsoft.com/.default"],
)
assert microsoft365_provider.identity == Microsoft365IdentityInfo(
identity_id=IDENTITY_ID,
identity_type="User",
tenant_id=TENANT_ID,
tenant_domain=DOMAIN,
location=LOCATION,
)
assert isinstance(microsoft365_provider.session, DefaultAzureCredential)
def test_microsoft365_provider_browser_auth(self):
"""Test Microsoft365 Provider initialization with Browser authentication"""
azure_region = "Microsoft365Global"
fixer_config = load_and_validate_config_file(
"microsoft365", default_fixer_config_file_path
)
with (
patch(
"prowler.providers.microsoft365.microsoft365_provider.Microsoft365Provider.setup_session",
return_value=InteractiveBrowserCredential(
tenant_id=TENANT_ID,
),
),
patch(
"prowler.providers.microsoft365.microsoft365_provider.Microsoft365Provider.setup_identity",
return_value=Microsoft365IdentityInfo(
identity_id=IDENTITY_ID,
identity_type="User",
tenant_id=TENANT_ID,
tenant_domain=DOMAIN,
location=LOCATION,
),
),
):
microsoft365_provider = Microsoft365Provider(
sp_env_auth=False,
az_cli_auth=False,
browser_auth=True,
tenant_id=TENANT_ID,
region=azure_region,
config_path=default_config_file_path,
fixer_config=fixer_config,
)
assert microsoft365_provider.region_config == Microsoft365RegionConfig(
name="Microsoft365Global",
authority=None,
base_url="https://graph.microsoft.com",
credential_scopes=["https://graph.microsoft.com/.default"],
)
assert microsoft365_provider.identity == Microsoft365IdentityInfo(
identity_id=IDENTITY_ID,
identity_type="User",
tenant_id=TENANT_ID,
tenant_domain=DOMAIN,
location=LOCATION,
)
assert isinstance(
microsoft365_provider.session, InteractiveBrowserCredential
)
def test_test_connection_browser_auth(self):
with (
patch(
"prowler.providers.microsoft365.microsoft365_provider.DefaultAzureCredential"
) as mock_default_credential,
patch(
"prowler.providers.microsoft365.microsoft365_provider.Microsoft365Provider.setup_session"
) as mock_setup_session,
patch(
"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(
token="fake_token", expires_on=9999999999
)
mock_default_credential.return_value = mock_credentials
# Mock setup_session to return a mocked session object
mock_session = MagicMock()
mock_setup_session.return_value = mock_session
# Mock GraphServiceClient to avoid real API calls
mock_client = MagicMock()
mock_graph_client.return_value = mock_client
test_connection = Microsoft365Provider.test_connection(
browser_auth=True,
tenant_id=str(uuid4()),
region="Microsoft365Global",
raise_on_exception=False,
)
assert isinstance(test_connection, Connection)
assert test_connection.is_connected
assert test_connection.error is None
def test_test_connection_tenant_id_client_id_client_secret(self):
with (
patch(
"prowler.providers.microsoft365.microsoft365_provider.Microsoft365Provider.setup_session"
) as mock_setup_session,
patch(
"prowler.providers.microsoft365.microsoft365_provider.Microsoft365Provider.validate_static_credentials"
) as mock_validate_static_credentials,
):
# Mock setup_session to return a mocked session object
mock_session = MagicMock()
mock_setup_session.return_value = mock_session
# Mock ValidateStaticCredentials to avoid real API calls
mock_validate_static_credentials.return_value = None
test_connection = Microsoft365Provider.test_connection(
tenant_id=str(uuid4()),
region="Microsoft365Global",
raise_on_exception=False,
client_id=str(uuid4()),
client_secret=str(uuid4()),
)
assert isinstance(test_connection, Connection)
assert test_connection.is_connected
assert test_connection.error is None
def test_test_connection_with_httpresponseerror(self):
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"
)
with pytest.raises(Microsoft365HTTPResponseError) as exception:
Microsoft365Provider.test_connection(
az_cli_auth=True,
raise_on_exception=True,
)
assert exception.type == Microsoft365HTTPResponseError
assert (
exception.value.args[0]
== "[6003] Error in HTTP response from Microsoft365 - Simulated HttpResponseError"
)
def test_test_connection_with_exception(self):
with patch(
"prowler.providers.microsoft365.microsoft365_provider.Microsoft365Provider.setup_session"
) as mock_setup_session:
mock_setup_session.side_effect = Exception("Simulated Exception")
with pytest.raises(Exception) as exception:
Microsoft365Provider.test_connection(
sp_env_auth=True,
raise_on_exception=True,
)
assert exception.type is Exception
assert exception.value.args[0] == "Simulated Exception"
def test_test_connection_without_any_method(self):
with pytest.raises(Microsoft365NoAuthenticationMethodError) as exception:
Microsoft365Provider.test_connection()
assert exception.type == Microsoft365NoAuthenticationMethodError
assert (
"Microsoft365 provider requires at least one authentication method set: [--az-cli-auth | --sp-env-auth | --browser-auth]"
in exception.value.args[0]
)