102 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import pytest
 | |
| from botocore.exceptions import ClientError
 | |
| 
 | |
| from . import fixture_ec2, fixture_efs  # noqa # pylint: disable=unused-import
 | |
| 
 | |
| 
 | |
| @pytest.fixture(scope="function", name="file_system")
 | |
| def fixture_file_system(efs):
 | |
|     create_fs_resp = efs.create_file_system(CreationToken="foobarbaz")
 | |
|     create_fs_resp.pop("ResponseMetadata")
 | |
|     yield create_fs_resp
 | |
| 
 | |
| 
 | |
| @pytest.fixture(scope="function", name="subnet")
 | |
| def fixture_subnet(ec2):
 | |
|     desc_sn_resp = ec2.describe_subnets()
 | |
|     subnet = desc_sn_resp["Subnets"][0]
 | |
|     yield subnet
 | |
| 
 | |
| 
 | |
| def test_describe_mount_target_security_groups__unknown(efs):
 | |
|     with pytest.raises(ClientError) as exc_info:
 | |
|         efs.describe_mount_target_security_groups(MountTargetId="mt-asdf1234asdf")
 | |
|     err = exc_info.value.response["Error"]
 | |
|     assert err["Code"] == "MountTargetNotFound"
 | |
|     assert err["Message"] == "Mount target 'mt-asdf1234asdf' does not exist."
 | |
| 
 | |
| 
 | |
| def test_describe_mount_target_security_groups(efs, ec2, file_system, subnet):
 | |
|     subnet_id = subnet["SubnetId"]
 | |
|     file_system_id = file_system["FileSystemId"]
 | |
| 
 | |
|     desc_sg_resp = ec2.describe_security_groups()
 | |
|     security_group_id = desc_sg_resp["SecurityGroups"][0]["GroupId"]
 | |
| 
 | |
|     # Create Mount Target
 | |
|     sample_input = {
 | |
|         "FileSystemId": file_system_id,
 | |
|         "SubnetId": subnet_id,
 | |
|         "SecurityGroups": [security_group_id],
 | |
|     }
 | |
|     create_mt_resp = efs.create_mount_target(**sample_input)
 | |
|     mount_target_id = create_mt_resp["MountTargetId"]
 | |
| 
 | |
|     # Describe it's Security Groups
 | |
|     resp = efs.describe_mount_target_security_groups(MountTargetId=mount_target_id)
 | |
|     assert resp["SecurityGroups"] == [security_group_id]
 | |
| 
 | |
| 
 | |
| def test_modify_mount_target_security_groups__unknown(efs):
 | |
|     with pytest.raises(ClientError) as exc_info:
 | |
|         efs.modify_mount_target_security_groups(
 | |
|             MountTargetId="mt-asdf1234asdf", SecurityGroups=[]
 | |
|         )
 | |
|     err = exc_info.value.response["Error"]
 | |
|     assert err["Code"] == "MountTargetNotFound"
 | |
|     assert err["Message"] == "Mount target 'mt-asdf1234asdf' does not exist."
 | |
| 
 | |
| 
 | |
| def test_modify_mount_target_security_groups(efs, ec2, file_system, subnet):
 | |
|     subnet_id = subnet["SubnetId"]
 | |
|     file_system_id = file_system["FileSystemId"]
 | |
| 
 | |
|     desc_sg_resp = ec2.describe_security_groups()["SecurityGroups"]
 | |
|     security_group_id = desc_sg_resp[0]["GroupId"]
 | |
| 
 | |
|     # Create Mount Target
 | |
|     sample_input = {
 | |
|         "FileSystemId": file_system_id,
 | |
|         "SubnetId": subnet_id,
 | |
|         "SecurityGroups": [security_group_id],
 | |
|     }
 | |
|     create_mt_resp = efs.create_mount_target(**sample_input)
 | |
|     mount_target_id = create_mt_resp["MountTargetId"]
 | |
|     network_interface_id = create_mt_resp["NetworkInterfaceId"]
 | |
| 
 | |
|     # Create alternative security groups
 | |
|     sg_id_2 = ec2.create_security_group(
 | |
|         VpcId=subnet["VpcId"], GroupName="sg-2", Description="SG-2"
 | |
|     )["GroupId"]
 | |
|     sg_id_3 = ec2.create_security_group(
 | |
|         VpcId=subnet["VpcId"], GroupName="sg-3", Description="SG-3"
 | |
|     )["GroupId"]
 | |
| 
 | |
|     # Modify it's Security Groups
 | |
|     efs.modify_mount_target_security_groups(
 | |
|         MountTargetId=mount_target_id, SecurityGroups=[sg_id_2, sg_id_3]
 | |
|     )
 | |
| 
 | |
|     # Describe it's Security Groups
 | |
|     resp = efs.describe_mount_target_security_groups(MountTargetId=mount_target_id)
 | |
|     assert resp["SecurityGroups"] == [sg_id_2, sg_id_3]
 | |
| 
 | |
|     # Verify EC2 reflects this change
 | |
|     resp = ec2.describe_network_interfaces(NetworkInterfaceIds=[network_interface_id])
 | |
|     network_interface = resp["NetworkInterfaces"][0]
 | |
|     assert len(network_interface["Groups"]) == 2
 | |
|     assert set([sg["GroupId"] for sg in network_interface["Groups"]]) == {
 | |
|         sg_id_2,
 | |
|         sg_id_3,
 | |
|     }
 |