37 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			37 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | import unittest | ||
|  | import boto3 | ||
|  | from moto import mock_sts, mock_sqs | ||
|  | from uuid import uuid4 | ||
|  | 
 | ||
|  | 
 | ||
|  | class TestStsAssumeRole(unittest.TestCase): | ||
|  |     @mock_sqs | ||
|  |     @mock_sts | ||
|  |     def test_list_queues_in_different_account(self): | ||
|  | 
 | ||
|  |         sqs = boto3.client("sqs", region_name="us-east-1") | ||
|  |         queue_url = sqs.create_queue(QueueName=str(uuid4()))["QueueUrl"] | ||
|  | 
 | ||
|  |         # verify function exists | ||
|  |         all_urls = sqs.list_queues()["QueueUrls"] | ||
|  |         all_urls.should.contain(queue_url) | ||
|  | 
 | ||
|  |         # assume role to another aws account | ||
|  |         account_b = "111111111111" | ||
|  |         sts = boto3.client("sts", region_name="us-east-1") | ||
|  |         response = sts.assume_role( | ||
|  |             RoleArn=f"arn:aws:iam::{account_b}:role/my-role", | ||
|  |             RoleSessionName="test-session-name", | ||
|  |             ExternalId="test-external-id", | ||
|  |         ) | ||
|  |         client2 = boto3.client( | ||
|  |             "sqs", | ||
|  |             aws_access_key_id=response["Credentials"]["AccessKeyId"], | ||
|  |             aws_secret_access_key=response["Credentials"]["SecretAccessKey"], | ||
|  |             aws_session_token=response["Credentials"]["SessionToken"], | ||
|  |             region_name="us-east-1", | ||
|  |         ) | ||
|  | 
 | ||
|  |         # client2 belongs to another account, where there are no queues | ||
|  |         client2.list_queues().shouldnt.have.key("QueueUrls") |