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")
							 |