import datetime import os import boto3 import pytest from moto import mock_ses, mock_iam from user_access_revoker.handler import get_all_users, get_tags_for_user, \ get_tag_value_by_key, get_user_access_keys from user_access_revoker.utils import days_diff @pytest.fixture def aws_credentials(): """Mocked AWS Credentials for moto.""" os.environ["AWS_ACCESS_KEY_ID"] = "testing" os.environ["AWS_SECRET_ACCESS_KEY"] = "testing" os.environ["AWS_SECURITY_TOKEN"] = "testing" os.environ["AWS_SESSION_TOKEN"] = "testing" @pytest.fixture def iam_client(aws_credentials): with mock_iam(): conn = boto3.client("iam", region_name="us-east-1") yield conn @pytest.fixture def sse_client(aws_credentials): with mock_ses(): conn = boto3.client("ses", region_name="us-east-1") yield conn @pytest.fixture def iam_user_name(): return "bbabii" @pytest.fixture def iam_user_tags(): return [ {"Key": "Name", "Value": "Borys Babii"}, {"Key": "Email", "Value": "boris.babii.sme@sonymusic.com"} ] @pytest.fixture def iam_test(iam_client): user1 = iam_client.create_user( UserName='user1', Tags=[ {"Key": "Name", "Value": "Shannon R. Larson"}, {"Key": "Email", "Value": "user1@sonymusic.com"}, {"Key": "watchdog_enabled", "Value": "always"}, {"Key": "notification_enabled", "Value": "always"} ] ) user2 = iam_client.create_user( UserName='user2', Tags=[ {"Key": "Name", "Value": "James M. McClanahan"}, {"Key": "Email", "Value": "user2@sonymusic.com"}, {"Key": "watchdog_enabled", "Value": "always"}, {"Key": "notification_enabled", "Value": "always"} ] ) user3 = iam_client.create_user( UserName='user3', Tags=[ {"Key": "Name", "Value": "James M. McClanahan"}, {"Key": "Email", "Value": "user2@sonymusic.com"} ] ) access_key = iam_client.create_access_key( UserName='user1' ) password = iam_client.create_login_profile( UserName='user2', Password='12345', PasswordResetRequired=False ) yield def test_get_all_users(iam_client, iam_test): users = get_all_users(iam_client) assert len(users) == 3 def test_get_user_tags(iam_client, iam_test): tags_user_1 = get_tags_for_user(iam_client, 'user1') tags_user_2 = get_tags_for_user(iam_client, 'user2') tags_user_3 = get_tags_for_user(iam_client, 'user3') assert len(tags_user_1) == 4 assert len(tags_user_2) == 4 assert len(tags_user_3) == 2 def test_get_tag_value_by_key(): tags = [ {"Key": "Name", "Value": "James M. McClanahan"}, {"Key": "Email", "Value": "user2@sonymusic.com"} ] value = get_tag_value_by_key(tags, 'Name') assert value == 'James M. McClanahan' def test_get_user_access_keys(iam_client, iam_test): access_keys_user1 = get_user_access_keys(iam_client, 'user1') access_keys_user2 = get_user_access_keys(iam_client, 'user2') assert access_keys_user2 == [] assert len(access_keys_user1) == 1 def test_days_diff(): start_date = datetime.datetime.now() end_date = start_date - datetime.timedelta(days=90) assert days_diff(start_date, end_date) == 90