Index: third_party/gsutil/third_party/boto/tests/unit/vpc/test_networkacl.py |
diff --git a/third_party/gsutil/third_party/boto/tests/unit/vpc/test_networkacl.py b/third_party/gsutil/third_party/boto/tests/unit/vpc/test_networkacl.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d399b22d43cef47d5a98341171da0b03444d8dd5 |
--- /dev/null |
+++ b/third_party/gsutil/third_party/boto/tests/unit/vpc/test_networkacl.py |
@@ -0,0 +1,521 @@ |
+from tests.unit import unittest |
+from tests.unit import AWSMockServiceTestCase |
+ |
+from boto.vpc import VPCConnection |
+ |
+ |
+class TestDescribeNetworkAcls(AWSMockServiceTestCase): |
+ |
+ connection_class = VPCConnection |
+ |
+ def default_body(self): |
+ return b""" |
+ <DescribeNetworkAclsResponse xmlns="http://ec2.amazonaws.com/doc/2013-10-01/"> |
+ <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> |
+ <networkAclSet> |
+ <item> |
+ <networkAclId>acl-5566953c</networkAclId> |
+ <vpcId>vpc-5266953b</vpcId> |
+ <default>true</default> |
+ <entrySet> |
+ <item> |
+ <ruleNumber>100</ruleNumber> |
+ <protocol>all</protocol> |
+ <ruleAction>allow</ruleAction> |
+ <egress>true</egress> |
+ <cidrBlock>0.0.0.0/0</cidrBlock> |
+ </item> |
+ <item> |
+ <ruleNumber>32767</ruleNumber> |
+ <protocol>all</protocol> |
+ <ruleAction>deny</ruleAction> |
+ <egress>true</egress> |
+ <cidrBlock>0.0.0.0/0</cidrBlock> |
+ </item> |
+ <item> |
+ <ruleNumber>100</ruleNumber> |
+ <protocol>all</protocol> |
+ <ruleAction>allow</ruleAction> |
+ <egress>false</egress> |
+ <cidrBlock>0.0.0.0/0</cidrBlock> |
+ </item> |
+ <item> |
+ <ruleNumber>32767</ruleNumber> |
+ <protocol>all</protocol> |
+ <ruleAction>deny</ruleAction> |
+ <egress>false</egress> |
+ <cidrBlock>0.0.0.0/0</cidrBlock> |
+ </item> |
+ </entrySet> |
+ <associationSet/> |
+ <tagSet/> |
+ </item> |
+ <item> |
+ <networkAclId>acl-5d659634</networkAclId> |
+ <vpcId>vpc-5266953b</vpcId> |
+ <default>false</default> |
+ <entrySet> |
+ <item> |
+ <ruleNumber>110</ruleNumber> |
+ <protocol>6</protocol> |
+ <ruleAction>allow</ruleAction> |
+ <egress>true</egress> |
+ <cidrBlock>0.0.0.0/0</cidrBlock> |
+ <portRange> |
+ <from>49152</from> |
+ <to>65535</to> |
+ </portRange> |
+ </item> |
+ <item> |
+ <ruleNumber>32767</ruleNumber> |
+ <protocol>all</protocol> |
+ <ruleAction>deny</ruleAction> |
+ <egress>true</egress> |
+ <cidrBlock>0.0.0.0/0</cidrBlock> |
+ </item> |
+ <item> |
+ <ruleNumber>110</ruleNumber> |
+ <protocol>6</protocol> |
+ <ruleAction>allow</ruleAction> |
+ <egress>false</egress> |
+ <cidrBlock>0.0.0.0/0</cidrBlock> |
+ <portRange> |
+ <from>80</from> |
+ <to>80</to> |
+ </portRange> |
+ </item> |
+ <item> |
+ <ruleNumber>120</ruleNumber> |
+ <protocol>6</protocol> |
+ <ruleAction>allow</ruleAction> |
+ <egress>false</egress> |
+ <cidrBlock>0.0.0.0/0</cidrBlock> |
+ <portRange> |
+ <from>443</from> |
+ <to>443</to> |
+ </portRange> |
+ </item> |
+ <item> |
+ <ruleNumber>32767</ruleNumber> |
+ <protocol>all</protocol> |
+ <ruleAction>deny</ruleAction> |
+ <egress>false</egress> |
+ <cidrBlock>0.0.0.0/0</cidrBlock> |
+ </item> |
+ </entrySet> |
+ <associationSet> |
+ <item> |
+ <networkAclAssociationId>aclassoc-5c659635</networkAclAssociationId> |
+ <networkAclId>acl-5d659634</networkAclId> |
+ <subnetId>subnet-ff669596</subnetId> |
+ </item> |
+ <item> |
+ <networkAclAssociationId>aclassoc-c26596ab</networkAclAssociationId> |
+ <networkAclId>acl-5d659634</networkAclId> |
+ <subnetId>subnet-f0669599</subnetId> |
+ </item> |
+ </associationSet> |
+ <tagSet/> |
+ </item> |
+ </networkAclSet> |
+ </DescribeNetworkAclsResponse> |
+ """ |
+ |
+ def test_get_all_network_acls(self): |
+ self.set_http_response(status_code=200) |
+ response = self.service_connection.get_all_network_acls(['acl-5566953c', 'acl-5d659634'], |
+ [('vpc-id', 'vpc-5266953b')]) |
+ self.assert_request_parameters({ |
+ 'Action': 'DescribeNetworkAcls', |
+ 'NetworkAclId.1': 'acl-5566953c', |
+ 'NetworkAclId.2': 'acl-5d659634', |
+ 'Filter.1.Name': 'vpc-id', |
+ 'Filter.1.Value.1': 'vpc-5266953b'}, |
+ ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', |
+ 'SignatureVersion', 'Timestamp', |
+ 'Version']) |
+ self.assertEqual(len(response), 2) |
+ |
+ |
+class TestReplaceNetworkAclAssociation(AWSMockServiceTestCase): |
+ |
+ connection_class = VPCConnection |
+ |
+ get_all_network_acls_vpc_body = b""" |
+ <DescribeNetworkAclsResponse xmlns="http://ec2.amazonaws.com/doc/2013-10-01/"> |
+ <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> |
+ <networkAclSet> |
+ <item> |
+ <networkAclId>acl-5566953c</networkAclId> |
+ <vpcId>vpc-5266953b</vpcId> |
+ <default>true</default> |
+ <entrySet> |
+ <item> |
+ <ruleNumber>100</ruleNumber> |
+ <protocol>all</protocol> |
+ <ruleAction>allow</ruleAction> |
+ <egress>true</egress> |
+ <cidrBlock>0.0.0.0/0</cidrBlock> |
+ </item> |
+ <item> |
+ <ruleNumber>32767</ruleNumber> |
+ <protocol>all</protocol> |
+ <ruleAction>deny</ruleAction> |
+ <egress>true</egress> |
+ <cidrBlock>0.0.0.0/0</cidrBlock> |
+ </item> |
+ <item> |
+ <ruleNumber>100</ruleNumber> |
+ <protocol>all</protocol> |
+ <ruleAction>allow</ruleAction> |
+ <egress>false</egress> |
+ <cidrBlock>0.0.0.0/0</cidrBlock> |
+ </item> |
+ <item> |
+ <ruleNumber>32767</ruleNumber> |
+ <protocol>all</protocol> |
+ <ruleAction>deny</ruleAction> |
+ <egress>false</egress> |
+ <cidrBlock>0.0.0.0/0</cidrBlock> |
+ </item> |
+ </entrySet> |
+ <associationSet/> |
+ <tagSet/> |
+ </item> |
+ |
+ </networkAclSet> |
+ </DescribeNetworkAclsResponse> |
+ """ |
+ |
+ get_all_network_acls_subnet_body = b""" |
+ <DescribeNetworkAclsResponse xmlns="http://ec2.amazonaws.com/doc/2013-10-01/"> |
+ <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> |
+ <networkAclSet> |
+ <item> |
+ <networkAclId>acl-5d659634</networkAclId> |
+ <vpcId>vpc-5266953b</vpcId> |
+ <default>false</default> |
+ <entrySet> |
+ <item> |
+ <ruleNumber>110</ruleNumber> |
+ <protocol>6</protocol> |
+ <ruleAction>allow</ruleAction> |
+ <egress>true</egress> |
+ <cidrBlock>0.0.0.0/0</cidrBlock> |
+ <portRange> |
+ <from>49152</from> |
+ <to>65535</to> |
+ </portRange> |
+ </item> |
+ </entrySet> |
+ <associationSet> |
+ <item> |
+ <networkAclAssociationId>aclassoc-c26596ab</networkAclAssociationId> |
+ <networkAclId>acl-5d659634</networkAclId> |
+ <subnetId>subnet-f0669599</subnetId> |
+ </item> |
+ <item> |
+ <networkAclAssociationId>aclassoc-5c659635</networkAclAssociationId> |
+ <networkAclId>acl-5d659634</networkAclId> |
+ <subnetId>subnet-ff669596</subnetId> |
+ </item> |
+ </associationSet> |
+ <tagSet/> |
+ </item> |
+ </networkAclSet> |
+ </DescribeNetworkAclsResponse> |
+ """ |
+ |
+ def default_body(self): |
+ return b""" |
+ <ReplaceNetworkAclAssociationResponse xmlns="http://ec2.amazonaws.com/doc/2013-10-01/"> |
+ <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> |
+ <newAssociationId>aclassoc-17b85d7e</newAssociationId> |
+ </ReplaceNetworkAclAssociationResponse> |
+ """ |
+ |
+ def test_associate_network_acl(self): |
+ self.https_connection.getresponse.side_effect = [ |
+ self.create_response(status_code=200, body=self.get_all_network_acls_subnet_body), |
+ self.create_response(status_code=200) |
+ ] |
+ response = self.service_connection.associate_network_acl('acl-5fb85d36', 'subnet-ff669596') |
+ # Note: Not testing proper call to get_all_network_acls! |
+ self.assert_request_parameters({ |
+ 'Action': 'ReplaceNetworkAclAssociation', |
+ 'NetworkAclId': 'acl-5fb85d36', |
+ 'AssociationId': 'aclassoc-5c659635'}, |
+ ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', |
+ 'SignatureVersion', 'Timestamp', |
+ 'Version']) |
+ self.assertEqual(response, 'aclassoc-17b85d7e') |
+ |
+ def test_disassociate_network_acl(self): |
+ self.https_connection.getresponse.side_effect = [ |
+ self.create_response(status_code=200, body=self.get_all_network_acls_vpc_body), |
+ self.create_response(status_code=200, body=self.get_all_network_acls_subnet_body), |
+ self.create_response(status_code=200) |
+ ] |
+ response = self.service_connection.disassociate_network_acl('subnet-ff669596', |
+ 'vpc-5266953b') |
+ # Note: Not testing proper call to either call to get_all_network_acls! |
+ self.assert_request_parameters({ |
+ 'Action': 'ReplaceNetworkAclAssociation', |
+ 'NetworkAclId': 'acl-5566953c', |
+ 'AssociationId': 'aclassoc-5c659635'}, |
+ ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', |
+ 'SignatureVersion', 'Timestamp', |
+ 'Version']) |
+ self.assertEqual(response, 'aclassoc-17b85d7e') |
+ |
+ |
+class TestCreateNetworkAcl(AWSMockServiceTestCase): |
+ |
+ connection_class = VPCConnection |
+ |
+ def default_body(self): |
+ return b""" |
+ <CreateNetworkAclResponse xmlns="http://ec2.amazonaws.com/doc/2013-10-01/"> |
+ <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> |
+ <networkAcl> |
+ <networkAclId>acl-5fb85d36</networkAclId> |
+ <vpcId>vpc-11ad4878</vpcId> |
+ <default>false</default> |
+ <entrySet> |
+ <item> |
+ <ruleNumber>32767</ruleNumber> |
+ <protocol>all</protocol> |
+ <ruleAction>deny</ruleAction> |
+ <egress>true</egress> |
+ <cidrBlock>0.0.0.0/0</cidrBlock> |
+ </item> |
+ <item> |
+ <ruleNumber>32767</ruleNumber> |
+ <protocol>all</protocol> |
+ <ruleAction>deny</ruleAction> |
+ <egress>false</egress> |
+ <cidrBlock>0.0.0.0/0</cidrBlock> |
+ </item> |
+ </entrySet> |
+ <associationSet/> |
+ <tagSet/> |
+ </networkAcl> |
+ </CreateNetworkAclResponse> |
+ """ |
+ |
+ def test_create_network_acl(self): |
+ self.set_http_response(status_code=200) |
+ response = self.service_connection.create_network_acl('vpc-11ad4878') |
+ self.assert_request_parameters({ |
+ 'Action': 'CreateNetworkAcl', |
+ 'VpcId': 'vpc-11ad4878'}, |
+ ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', |
+ 'SignatureVersion', 'Timestamp', |
+ 'Version']) |
+ self.assertEqual(response.id, 'acl-5fb85d36') |
+ |
+ |
+class DeleteCreateNetworkAcl(AWSMockServiceTestCase): |
+ |
+ connection_class = VPCConnection |
+ |
+ def default_body(self): |
+ return b""" |
+ <DeleteNetworkAclResponse xmlns="http://ec2.amazonaws.com/doc/2013-10-01/"> |
+ <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> |
+ <return>true</return> |
+ </DeleteNetworkAclResponse> |
+ """ |
+ |
+ def test_delete_network_acl(self): |
+ self.set_http_response(status_code=200) |
+ response = self.service_connection.delete_network_acl('acl-2cb85d45') |
+ self.assert_request_parameters({ |
+ 'Action': 'DeleteNetworkAcl', |
+ 'NetworkAclId': 'acl-2cb85d45'}, |
+ ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', |
+ 'SignatureVersion', 'Timestamp', |
+ 'Version']) |
+ self.assertEqual(response, True) |
+ |
+ |
+class TestCreateNetworkAclEntry(AWSMockServiceTestCase): |
+ |
+ connection_class = VPCConnection |
+ |
+ def default_body(self): |
+ return b""" |
+ <CreateNetworkAclEntryResponse xmlns="http://ec2.amazonaws.com/doc/2013-10-01/"> |
+ <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> |
+ <return>true</return> |
+ </CreateNetworkAclEntryResponse> |
+ """ |
+ |
+ def test_create_network_acl(self): |
+ self.set_http_response(status_code=200) |
+ response = self.service_connection.create_network_acl_entry( |
+ 'acl-2cb85d45', 110, 'udp', 'allow', '0.0.0.0/0', egress=False, |
+ port_range_from=53, port_range_to=53) |
+ self.assert_request_parameters({ |
+ 'Action': 'CreateNetworkAclEntry', |
+ 'NetworkAclId': 'acl-2cb85d45', |
+ 'RuleNumber': 110, |
+ 'Protocol': 'udp', |
+ 'RuleAction': 'allow', |
+ 'Egress': 'false', |
+ 'CidrBlock': '0.0.0.0/0', |
+ 'PortRange.From': 53, |
+ 'PortRange.To': 53}, |
+ ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', |
+ 'SignatureVersion', 'Timestamp', |
+ 'Version']) |
+ self.assertEqual(response, True) |
+ |
+ def test_create_network_acl_icmp(self): |
+ self.set_http_response(status_code=200) |
+ response = self.service_connection.create_network_acl_entry( |
+ 'acl-2cb85d45', 110, 'udp', 'allow', '0.0.0.0/0', egress='true', |
+ icmp_code=-1, icmp_type=8) |
+ self.assert_request_parameters({ |
+ 'Action': 'CreateNetworkAclEntry', |
+ 'NetworkAclId': 'acl-2cb85d45', |
+ 'RuleNumber': 110, |
+ 'Protocol': 'udp', |
+ 'RuleAction': 'allow', |
+ 'Egress': 'true', |
+ 'CidrBlock': '0.0.0.0/0', |
+ 'Icmp.Code': -1, |
+ 'Icmp.Type': 8}, |
+ ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', |
+ 'SignatureVersion', 'Timestamp', |
+ 'Version']) |
+ self.assertEqual(response, True) |
+ |
+ |
+class TestReplaceNetworkAclEntry(AWSMockServiceTestCase): |
+ |
+ connection_class = VPCConnection |
+ |
+ def default_body(self): |
+ return b""" |
+ <ReplaceNetworkAclEntryResponse xmlns="http://ec2.amazonaws.com/doc/2013-10-01/"> |
+ <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> |
+ <return>true</return> |
+ </ReplaceNetworkAclEntryResponse> |
+ """ |
+ |
+ def test_replace_network_acl(self): |
+ self.set_http_response(status_code=200) |
+ response = self.service_connection.replace_network_acl_entry( |
+ 'acl-2cb85d45', 110, 'tcp', 'deny', '0.0.0.0/0', egress=False, |
+ port_range_from=139, port_range_to=139) |
+ self.assert_request_parameters({ |
+ 'Action': 'ReplaceNetworkAclEntry', |
+ 'NetworkAclId': 'acl-2cb85d45', |
+ 'RuleNumber': 110, |
+ 'Protocol': 'tcp', |
+ 'RuleAction': 'deny', |
+ 'Egress': 'false', |
+ 'CidrBlock': '0.0.0.0/0', |
+ 'PortRange.From': 139, |
+ 'PortRange.To': 139}, |
+ ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', |
+ 'SignatureVersion', 'Timestamp', |
+ 'Version']) |
+ self.assertEqual(response, True) |
+ |
+ def test_replace_network_acl_icmp(self): |
+ self.set_http_response(status_code=200) |
+ response = self.service_connection.replace_network_acl_entry( |
+ 'acl-2cb85d45', 110, 'tcp', 'deny', '0.0.0.0/0', |
+ icmp_code=-1, icmp_type=8) |
+ self.assert_request_parameters({ |
+ 'Action': 'ReplaceNetworkAclEntry', |
+ 'NetworkAclId': 'acl-2cb85d45', |
+ 'RuleNumber': 110, |
+ 'Protocol': 'tcp', |
+ 'RuleAction': 'deny', |
+ 'CidrBlock': '0.0.0.0/0', |
+ 'Icmp.Code': -1, |
+ 'Icmp.Type': 8}, |
+ ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', |
+ 'SignatureVersion', 'Timestamp', |
+ 'Version']) |
+ self.assertEqual(response, True) |
+ |
+ |
+class TestDeleteNetworkAclEntry(AWSMockServiceTestCase): |
+ |
+ connection_class = VPCConnection |
+ |
+ def default_body(self): |
+ return b""" |
+ <DeleteNetworkAclEntryResponse xmlns="http://ec2.amazonaws.com/doc/2013-10-01/"> |
+ <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> |
+ <return>true</return> |
+ </DeleteNetworkAclEntryResponse> |
+ """ |
+ |
+ def test_delete_network_acl(self): |
+ self.set_http_response(status_code=200) |
+ response = self.service_connection.delete_network_acl_entry('acl-2cb85d45', 100, |
+ egress=False) |
+ self.assert_request_parameters({ |
+ 'Action': 'DeleteNetworkAclEntry', |
+ 'NetworkAclId': 'acl-2cb85d45', |
+ 'RuleNumber': 100, |
+ 'Egress': 'false'}, |
+ ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', |
+ 'SignatureVersion', 'Timestamp', |
+ 'Version']) |
+ self.assertEqual(response, True) |
+ |
+ |
+class TestGetNetworkAclAssociations(AWSMockServiceTestCase): |
+ |
+ connection_class = VPCConnection |
+ |
+ def default_body(self): |
+ return b""" |
+ <DescribeNetworkAclsResponse xmlns="http://ec2.amazonaws.com/doc/2013-10-01/"> |
+ <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> |
+ <networkAclSet> |
+ <item> |
+ <networkAclId>acl-5d659634</networkAclId> |
+ <vpcId>vpc-5266953b</vpcId> |
+ <default>false</default> |
+ <entrySet> |
+ <item> |
+ <ruleNumber>110</ruleNumber> |
+ <protocol>6</protocol> |
+ <ruleAction>allow</ruleAction> |
+ <egress>true</egress> |
+ <cidrBlock>0.0.0.0/0</cidrBlock> |
+ <portRange> |
+ <from>49152</from> |
+ <to>65535</to> |
+ </portRange> |
+ </item> |
+ </entrySet> |
+ <associationSet> |
+ <item> |
+ <networkAclAssociationId>aclassoc-c26596ab</networkAclAssociationId> |
+ <networkAclId>acl-5d659634</networkAclId> |
+ <subnetId>subnet-f0669599</subnetId> |
+ </item> |
+ </associationSet> |
+ <tagSet/> |
+ </item> |
+ </networkAclSet> |
+ </DescribeNetworkAclsResponse> |
+ """ |
+ |
+ def test_get_network_acl_associations(self): |
+ self.set_http_response(status_code=200) |
+ api_response = self.service_connection.get_all_network_acls() |
+ association = api_response[0].associations[0] |
+ self.assertEqual(association.network_acl_id, 'acl-5d659634') |
+ |
+ |
+if __name__ == '__main__': |
+ unittest.main() |