fix(iam): handle no arn serial numbers for MFA devices (#4710)

Co-authored-by: Pedro Martín <pedromarting3@gmail.com>
Co-authored-by: Sergio <sergio@prowler.com>
This commit is contained in:
github-actions[bot]
2024-08-09 14:41:29 -04:00
committed by GitHub
parent 0d56f468de
commit 2de94df159
2 changed files with 32 additions and 4 deletions
@@ -374,9 +374,10 @@ class IAM(AWSService):
for page in list_mfa_devices_paginator.paginate(UserName=user.name):
for mfa_device in page["MFADevices"]:
mfa_serial_number = mfa_device["SerialNumber"]
mfa_type = (
mfa_device["SerialNumber"].split(":")[5].split("/")[0]
)
try:
mfa_type = mfa_serial_number.split(":")[5].split("/")[0]
except IndexError:
mfa_type = "hardware"
mfa_devices.append(
MFADevice(serial_number=mfa_serial_number, type=mfa_type)
)
@@ -424,7 +424,7 @@ class Test_IAM_Service:
# Test IAM List MFA Device
@mock_aws
def test__list_mfa_devices__(self):
def test__list_mfa_devices_arn__(self):
# Generate IAM Client
iam_client = client("iam")
# Generate IAM user
@@ -455,6 +455,33 @@ class Test_IAM_Service:
)
assert iam.users[0].mfa_devices[0].type == "mfa"
# Test IAM List MFA Device
@mock_aws
def test__list_mfa_devices_number__(self):
# Generate IAM Client
iam_client = client("iam")
# Generate IAM user
iam_client.create_user(
UserName="user1",
)
# Create Unknown MFA device
hardware_mfa_devide = "XXXXXXXXX"
iam_client.enable_mfa_device(
UserName="user1",
SerialNumber=hardware_mfa_devide,
AuthenticationCode1="123456",
AuthenticationCode2="123456",
)
# IAM client for this test class
audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
iam = IAM(audit_info)
assert len(iam.users) == 1
assert len(iam.users[0].mfa_devices) == 1
assert iam.users[0].mfa_devices[0].serial_number == hardware_mfa_devide
assert iam.users[0].mfa_devices[0].type == "hardware"
# Test IAM List Virtual MFA Device
@mock_aws
def test__list_virtual_mfa_devices__(self):