Index: third_party/gsutil/third_party/boto/tests/unit/vpc/test_vpc.py |
diff --git a/third_party/gsutil/third_party/boto/tests/unit/vpc/test_vpc.py b/third_party/gsutil/third_party/boto/tests/unit/vpc/test_vpc.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f8adaf8aa652342a63e72ed2542fe0ee9e8f6fe1 |
--- /dev/null |
+++ b/third_party/gsutil/third_party/boto/tests/unit/vpc/test_vpc.py |
@@ -0,0 +1,367 @@ |
+# -*- coding: UTF-8 -*- |
+from tests.unit import unittest |
+from tests.unit import AWSMockServiceTestCase |
+ |
+from boto.vpc import VPCConnection, VPC |
+from boto.ec2.securitygroup import SecurityGroup |
+ |
+ |
+DESCRIBE_VPCS = b'''<?xml version="1.0" encoding="UTF-8"?> |
+<DescribeVpcsResponse xmlns="http://ec2.amazonaws.com/doc/2013-02-01/"> |
+ <requestId>623040d1-b51c-40bc-8080-93486f38d03d</requestId> |
+ <vpcSet> |
+ <item> |
+ <vpcId>vpc-12345678</vpcId> |
+ <state>available</state> |
+ <cidrBlock>172.16.0.0/16</cidrBlock> |
+ <dhcpOptionsId>dopt-12345678</dhcpOptionsId> |
+ <instanceTenancy>default</instanceTenancy> |
+ <isDefault>false</isDefault> |
+ </item> |
+ </vpcSet> |
+</DescribeVpcsResponse>''' |
+ |
+ |
+class TestDescribeVPCs(AWSMockServiceTestCase): |
+ |
+ connection_class = VPCConnection |
+ |
+ def default_body(self): |
+ return DESCRIBE_VPCS |
+ |
+ def test_get_vpcs(self): |
+ self.set_http_response(status_code=200) |
+ |
+ api_response = self.service_connection.get_all_vpcs() |
+ self.assertEqual(len(api_response), 1) |
+ |
+ vpc = api_response[0] |
+ self.assertFalse(vpc.is_default) |
+ self.assertEqual(vpc.instance_tenancy, 'default') |
+ |
+ |
+class TestCreateVpc(AWSMockServiceTestCase): |
+ |
+ connection_class = VPCConnection |
+ |
+ def default_body(self): |
+ return b""" |
+ <CreateVpcResponse xmlns="http://ec2.amazonaws.com/doc/2013-10-01/"> |
+ <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId> |
+ <vpc> |
+ <vpcId>vpc-1a2b3c4d</vpcId> |
+ <state>pending</state> |
+ <cidrBlock>10.0.0.0/16</cidrBlock> |
+ <dhcpOptionsId>dopt-1a2b3c4d2</dhcpOptionsId> |
+ <instanceTenancy>default</instanceTenancy> |
+ <tagSet/> |
+ </vpc> |
+ </CreateVpcResponse> |
+ """ |
+ |
+ def test_create_vpc(self): |
+ self.set_http_response(status_code=200) |
+ api_response = self.service_connection.create_vpc('10.0.0.0/16', 'default') |
+ self.assert_request_parameters({ |
+ 'Action': 'CreateVpc', |
+ 'InstanceTenancy': 'default', |
+ 'CidrBlock': '10.0.0.0/16'}, |
+ ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', |
+ 'SignatureVersion', 'Timestamp', |
+ 'Version']) |
+ self.assertIsInstance(api_response, VPC) |
+ self.assertEquals(api_response.id, 'vpc-1a2b3c4d') |
+ self.assertEquals(api_response.state, 'pending') |
+ self.assertEquals(api_response.cidr_block, '10.0.0.0/16') |
+ self.assertEquals(api_response.dhcp_options_id, 'dopt-1a2b3c4d2') |
+ self.assertEquals(api_response.instance_tenancy, 'default') |
+ |
+ |
+class TestDeleteVpc(AWSMockServiceTestCase): |
+ |
+ connection_class = VPCConnection |
+ |
+ def default_body(self): |
+ return b""" |
+ <DeleteVpcResponse xmlns="http://ec2.amazonaws.com/doc/2013-10-01/"> |
+ <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId> |
+ <return>true</return> |
+ </DeleteVpcResponse> |
+ """ |
+ |
+ def test_delete_vpc(self): |
+ self.set_http_response(status_code=200) |
+ api_response = self.service_connection.delete_vpc('vpc-1a2b3c4d') |
+ self.assert_request_parameters({ |
+ 'Action': 'DeleteVpc', |
+ 'VpcId': 'vpc-1a2b3c4d'}, |
+ ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', |
+ 'SignatureVersion', 'Timestamp', |
+ 'Version']) |
+ self.assertEquals(api_response, True) |
+ |
+ |
+class TestModifyVpcAttribute(AWSMockServiceTestCase): |
+ |
+ connection_class = VPCConnection |
+ |
+ def default_body(self): |
+ return b""" |
+ <ModifyVpcAttributeResponse xmlns="http://ec2.amazonaws.com/doc/2013-10-01/"> |
+ <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId> |
+ <return>true</return> |
+ </ModifyVpcAttributeResponse> |
+ """ |
+ |
+ def test_modify_vpc_attribute_dns_support(self): |
+ self.set_http_response(status_code=200) |
+ api_response = self.service_connection.modify_vpc_attribute( |
+ 'vpc-1a2b3c4d', enable_dns_support=True) |
+ self.assert_request_parameters({ |
+ 'Action': 'ModifyVpcAttribute', |
+ 'VpcId': 'vpc-1a2b3c4d', |
+ 'EnableDnsSupport.Value': 'true'}, |
+ ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', |
+ 'SignatureVersion', 'Timestamp', |
+ 'Version']) |
+ self.assertEquals(api_response, True) |
+ |
+ def test_modify_vpc_attribute_dns_hostnames(self): |
+ self.set_http_response(status_code=200) |
+ api_response = self.service_connection.modify_vpc_attribute( |
+ 'vpc-1a2b3c4d', enable_dns_hostnames=True) |
+ self.assert_request_parameters({ |
+ 'Action': 'ModifyVpcAttribute', |
+ 'VpcId': 'vpc-1a2b3c4d', |
+ 'EnableDnsHostnames.Value': 'true'}, |
+ ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', |
+ 'SignatureVersion', 'Timestamp', |
+ 'Version']) |
+ self.assertEquals(api_response, True) |
+ |
+ |
+class TestGetAllClassicLinkVpc(AWSMockServiceTestCase): |
+ |
+ connection_class = VPCConnection |
+ |
+ def default_body(self): |
+ return b""" |
+ <DescribeVpcClassicLinkResponse xmlns="http://ec2.amazonaws.com/doc/2014-09-01/"> |
+ <requestId>2484655d-d669-4950-bf55-7ba559805d36</requestId> |
+ <vpcSet> |
+ <item> |
+ <vpcId>vpc-6226ab07</vpcId> |
+ <classicLinkEnabled>false</classicLinkEnabled> |
+ <tagSet> |
+ <item> |
+ <key>Name</key> |
+ <value>hello</value>[ |
+ </item> |
+ </tagSet> |
+ </item> |
+ <item> |
+ <vpcId>vpc-9d24f8f8</vpcId> |
+ <classicLinkEnabled>true</classicLinkEnabled> |
+ <tagSet/> |
+ </item> |
+ </vpcSet> |
+ </DescribeVpcClassicLinkResponse> |
+ """ |
+ |
+ def test_get_all_classic_link_vpcs(self): |
+ self.set_http_response(status_code=200) |
+ response = self.service_connection.get_all_classic_link_vpcs() |
+ self.assertEqual(len(response), 2) |
+ vpc = response[0] |
+ self.assertEqual(vpc.id, 'vpc-6226ab07') |
+ self.assertEqual(vpc.classic_link_enabled, 'false') |
+ self.assertEqual(vpc.tags, {'Name': 'hello'}) |
+ |
+ def test_get_all_classic_link_vpcs_params(self): |
+ self.set_http_response(status_code=200) |
+ self.service_connection.get_all_classic_link_vpcs( |
+ vpc_ids=['id1', 'id2'], |
+ filters={'GroupId': 'sg-9b4343fe'}, |
+ dry_run=True, |
+ ) |
+ self.assert_request_parameters({ |
+ 'Action': 'DescribeVpcClassicLink', |
+ 'VpcId.1': 'id1', |
+ 'VpcId.2': 'id2', |
+ 'Filter.1.Name': 'GroupId', |
+ 'Filter.1.Value.1': 'sg-9b4343fe', |
+ 'DryRun': 'true'}, |
+ ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', |
+ 'SignatureVersion', 'Timestamp', 'Version']) |
+ |
+ |
+class TestVpcClassicLink(AWSMockServiceTestCase): |
+ connection_class = VPCConnection |
+ |
+ def setUp(self): |
+ super(TestVpcClassicLink, self).setUp() |
+ self.vpc = VPC(self.service_connection) |
+ self.vpc_id = 'myid' |
+ self.vpc.id = self.vpc_id |
+ |
+ |
+class TestAttachClassicLinkVpc(TestVpcClassicLink): |
+ def default_body(self): |
+ return b""" |
+ <AttachClassicLinkVpcResponse xmlns="http://ec2.amazonaws.com/doc/2014-09-01/"> |
+ <requestId>88673bdf-cd16-40bf-87a1-6132fec47257</requestId> |
+ <return>true</return> |
+ </AttachClassicLinkVpcResponse> |
+ """ |
+ |
+ def test_attach_classic_link_instance_string_groups(self): |
+ groups = ['sg-foo', 'sg-bar'] |
+ |
+ self.set_http_response(status_code=200) |
+ response = self.vpc.attach_classic_instance( |
+ instance_id='my_instance_id', |
+ groups=groups, |
+ dry_run=True |
+ ) |
+ self.assertTrue(response) |
+ self.assert_request_parameters({ |
+ 'Action': 'AttachClassicLinkVpc', |
+ 'VpcId': self.vpc_id, |
+ 'InstanceId': 'my_instance_id', |
+ 'SecurityGroupId.1': 'sg-foo', |
+ 'SecurityGroupId.2': 'sg-bar', |
+ 'DryRun': 'true'}, |
+ ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', |
+ 'SignatureVersion', 'Timestamp', 'Version']) |
+ |
+ def test_attach_classic_link_instance_object_groups(self): |
+ sec_group_1 = SecurityGroup() |
+ sec_group_1.id = 'sg-foo' |
+ |
+ sec_group_2 = SecurityGroup() |
+ sec_group_2.id = 'sg-bar' |
+ |
+ groups = [sec_group_1, sec_group_2] |
+ |
+ self.set_http_response(status_code=200) |
+ response = self.vpc.attach_classic_instance( |
+ instance_id='my_instance_id', |
+ groups=groups, |
+ dry_run=True |
+ ) |
+ self.assertTrue(response) |
+ self.assert_request_parameters({ |
+ 'Action': 'AttachClassicLinkVpc', |
+ 'VpcId': self.vpc_id, |
+ 'InstanceId': 'my_instance_id', |
+ 'SecurityGroupId.1': 'sg-foo', |
+ 'SecurityGroupId.2': 'sg-bar', |
+ 'DryRun': 'true'}, |
+ ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', |
+ 'SignatureVersion', 'Timestamp', 'Version']) |
+ |
+ |
+class TestDetachClassicLinkVpc(TestVpcClassicLink): |
+ def default_body(self): |
+ return b""" |
+ <DetachClassicLinkVpcResponse xmlns="http://ec2.amazonaws.com/doc/2014-09-01/"> |
+ <requestId>5565033d-1321-4eef-b121-6aa46f152ed7</requestId> |
+ <return>true</return> |
+ </DetachClassicLinkVpcResponse> |
+ """ |
+ |
+ def test_detach_classic_link_instance(self): |
+ self.set_http_response(status_code=200) |
+ response = self.vpc.detach_classic_instance( |
+ instance_id='my_instance_id', |
+ dry_run=True |
+ ) |
+ self.assertTrue(response) |
+ self.assert_request_parameters({ |
+ 'Action': 'DetachClassicLinkVpc', |
+ 'VpcId': self.vpc_id, |
+ 'InstanceId': 'my_instance_id', |
+ 'DryRun': 'true'}, |
+ ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', |
+ 'SignatureVersion', 'Timestamp', 'Version']) |
+ |
+ |
+class TestEnableClassicLinkVpc(TestVpcClassicLink): |
+ def default_body(self): |
+ return b""" |
+ <EnableVpcClassicLinkResponse xmlns="http://ec2.amazonaws.com/doc/2014-09-01/"> |
+ <requestId>4ab2b2b3-a267-4366-a070-bab853b5927d</requestId> |
+ <return>true</return> |
+ </EnableVpcClassicLinkResponse> |
+ """ |
+ |
+ def test_enable_classic_link(self): |
+ self.set_http_response(status_code=200) |
+ response = self.vpc.enable_classic_link( |
+ dry_run=True |
+ ) |
+ self.assertTrue(response) |
+ self.assert_request_parameters({ |
+ 'Action': 'EnableVpcClassicLink', |
+ 'VpcId': self.vpc_id, |
+ 'DryRun': 'true'}, |
+ ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', |
+ 'SignatureVersion', 'Timestamp', 'Version']) |
+ |
+ |
+class TestDisableClassicLinkVpc(TestVpcClassicLink): |
+ def default_body(self): |
+ return b""" |
+ <DisableVpcClassicLinkResponse xmlns="http://ec2.amazonaws.com/doc/2014-09-01/"> |
+ <requestId>4ab2b2b3-a267-4366-a070-bab853b5927d</requestId> |
+ <return>true</return> |
+ </DisableVpcClassicLinkResponse> |
+ """ |
+ |
+ def test_enable_classic_link(self): |
+ self.set_http_response(status_code=200) |
+ response = self.vpc.disable_classic_link( |
+ dry_run=True |
+ ) |
+ self.assertTrue(response) |
+ self.assert_request_parameters({ |
+ 'Action': 'DisableVpcClassicLink', |
+ 'VpcId': self.vpc_id, |
+ 'DryRun': 'true'}, |
+ ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', |
+ 'SignatureVersion', 'Timestamp', 'Version']) |
+ |
+ |
+class TestUpdateClassicLinkVpc(TestVpcClassicLink): |
+ def default_body(self): |
+ return b""" |
+ <DescribeVpcClassicLinkResponse xmlns="http://ec2.amazonaws.com/doc/2014-09-01/"> |
+ <requestId>2484655d-d669-4950-bf55-7ba559805d36</requestId> |
+ <vpcSet> |
+ <item> |
+ <vpcId>myid</vpcId> |
+ <classicLinkEnabled>true</classicLinkEnabled> |
+ <tagSet/> |
+ </item> |
+ </vpcSet> |
+ </DescribeVpcClassicLinkResponse> |
+ """ |
+ |
+ def test_vpc_update_classic_link_enabled(self): |
+ self.vpc.classic_link_enabled = False |
+ self.set_http_response(status_code=200) |
+ self.vpc.update_classic_link_enabled( |
+ dry_run=True, |
+ validate=True |
+ ) |
+ self.assert_request_parameters({ |
+ 'Action': 'DescribeVpcClassicLink', |
+ 'VpcId.1': self.vpc_id, |
+ 'DryRun': 'true'}, |
+ ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', |
+ 'SignatureVersion', 'Timestamp', 'Version']) |
+ self.assertEqual(self.vpc.classic_link_enabled, 'true') |
+ |
+ |
+if __name__ == '__main__': |
+ unittest.main() |