fix(vm): handle Nonetype is not iterable for extensions (#7360)

Co-authored-by: Sergio Garcia <hello@mistercloudsec.com>
This commit is contained in:
Daniel BarranqueroandSergio Garcia authored and GitHub committed 2025-03-25 12:25:15 +01:00
1 parent dd1cc2d025
commit 5d6ed640f0
2 files changed
+83 -21

No files matched your search

@@ -41,6 +41,32 @@ def mock_vm_get_virtual_machines(_):
}
def mock_vm_get_virtual_machines_with_none(_):
return {
AZURE_SUBSCRIPTION_ID: {
"vm_id-1": VirtualMachine(
resource_id="/subscriptions/resource_id",
resource_name="VMWithNoneValues",
location="location",
security_profile=None,
extensions=None,
storage_profile=None,
),
"vm_id-2": VirtualMachine(
resource_id="/subscriptions/resource_id2",
resource_name="VMWithPartialNone",
location="location",
security_profile=None,
extensions=None,
storage_profile=StorageProfile(
os_disk=None,
data_disks=None,
),
),
}
}
def mock_vm_get_disks(_):
return {
AZURE_SUBSCRIPTION_ID: {
@@ -137,3 +163,22 @@ class Test_VirtualMachines_Service:
disks[AZURE_SUBSCRIPTION_ID]["disk_id-1"].encryption_type
== "EncryptionAtRestWithPlatformKey"
)
@patch(
"prowler.providers.azure.services.vm.vm_service.VirtualMachines._get_virtual_machines",
new=mock_vm_get_virtual_machines_with_none,
)
class Test_VirtualMachines_NoneCases:
def test_virtual_machine_with_none_storage_profile(self):
virtual_machines = VirtualMachines(set_mocked_azure_provider())
vm_1 = virtual_machines.virtual_machines[AZURE_SUBSCRIPTION_ID]["vm_id-1"]
assert vm_1.storage_profile is None
assert vm_1.resource_name == "VMWithNoneValues"
def test_virtual_machine_with_partial_none_storage_profile(self):
virtual_machines = VirtualMachines(set_mocked_azure_provider())
vm_2 = virtual_machines.virtual_machines[AZURE_SUBSCRIPTION_ID]["vm_id-2"]
assert vm_2.storage_profile.os_disk is None
assert vm_2.storage_profile.data_disks is None
assert vm_2.resource_name == "VMWithPartialNone"