diff options
Diffstat (limited to 'tests/unit/ec2/test_ec2object.py')
-rw-r--r-- | tests/unit/ec2/test_ec2object.py | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/tests/unit/ec2/test_ec2object.py b/tests/unit/ec2/test_ec2object.py new file mode 100644 index 00000000..e4091bef --- /dev/null +++ b/tests/unit/ec2/test_ec2object.py @@ -0,0 +1,145 @@ +#!/usr/bin/env python + +from tests.unit import unittest +from tests.unit import AWSMockServiceTestCase + +from boto.ec2.connection import EC2Connection +from boto.ec2.ec2object import TaggedEC2Object + + +CREATE_TAGS_RESPONSE = r"""<?xml version="1.0" encoding="UTF-8"?> +<CreateTagsResponse xmlns="http://ec2.amazonaws.com/doc/2014-05-01/"> + <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId> + <return>true</return> +</CreateTagsResponse> +""" + + +DELETE_TAGS_RESPONSE = r"""<?xml version="1.0" encoding="UTF-8"?> +<DeleteTagsResponse xmlns="http://ec2.amazonaws.com/doc/2014-05-01/"> + <requestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</requestId> + <return>true</return> +</DeleteTagsResponse> +""" + + +class TestAddTags(AWSMockServiceTestCase): + connection_class = EC2Connection + + def default_body(self): + return CREATE_TAGS_RESPONSE + + def test_add_tag(self): + self.set_http_response(status_code=200) + taggedEC2Object = TaggedEC2Object(self.service_connection) + taggedEC2Object.id = "i-abcd1234" + taggedEC2Object.tags["already_present_key"] = "already_present_value" + + taggedEC2Object.add_tag("new_key", "new_value") + + self.assert_request_parameters({ + 'ResourceId.1': 'i-abcd1234', + 'Action': 'CreateTags', + 'Tag.1.Key': 'new_key', + 'Tag.1.Value': 'new_value'}, + ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', + 'SignatureVersion', 'Timestamp', + 'Version']) + + self.assertEqual(taggedEC2Object.tags, { + "already_present_key":"already_present_value", + "new_key":"new_value"}) + + def test_add_tags(self): + self.set_http_response(status_code=200) + taggedEC2Object = TaggedEC2Object(self.service_connection) + taggedEC2Object.id = "i-abcd1234" + taggedEC2Object.tags["already_present_key"] = "already_present_value" + + taggedEC2Object.add_tags({"key1":"value1", "key2":"value2"}) + + self.assert_request_parameters({ + 'ResourceId.1': 'i-abcd1234', + 'Action': 'CreateTags', + 'Tag.1.Key': 'key1', + 'Tag.1.Value': 'value1', + 'Tag.2.Key': 'key2', + 'Tag.2.Value': 'value2'}, + ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', + 'SignatureVersion', 'Timestamp', + 'Version']) + + self.assertEqual(taggedEC2Object.tags, { + "already_present_key":"already_present_value", + "key1":"value1", + "key2": "value2"}) + + +class TestRemoveTags(AWSMockServiceTestCase): + connection_class = EC2Connection + + def default_body(self): + return DELETE_TAGS_RESPONSE + + def test_remove_tag(self): + self.set_http_response(status_code=200) + taggedEC2Object = TaggedEC2Object(self.service_connection) + taggedEC2Object.id = "i-abcd1234" + taggedEC2Object.tags["key1"] = "value1" + taggedEC2Object.tags["key2"] = "value2" + + taggedEC2Object.remove_tag("key1", "value1") + + self.assert_request_parameters({ + 'ResourceId.1': 'i-abcd1234', + 'Action': 'DeleteTags', + 'Tag.1.Key': 'key1', + 'Tag.1.Value': 'value1'}, + ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', + 'SignatureVersion', 'Timestamp', + 'Version']) + + self.assertEqual(taggedEC2Object.tags, {"key2":"value2"}) + + def test_remove_tag_no_value(self): + self.set_http_response(status_code=200) + taggedEC2Object = TaggedEC2Object(self.service_connection) + taggedEC2Object.id = "i-abcd1234" + taggedEC2Object.tags["key1"] = "value1" + taggedEC2Object.tags["key2"] = "value2" + + taggedEC2Object.remove_tag("key1") + + self.assert_request_parameters({ + 'ResourceId.1': 'i-abcd1234', + 'Action': 'DeleteTags', + 'Tag.1.Key': 'key1'}, + ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', + 'SignatureVersion', 'Timestamp', + 'Version']) + + self.assertEqual(taggedEC2Object.tags, {"key2":"value2"}) + + def test_remove_tag_empty_value(self): + self.set_http_response(status_code=200) + taggedEC2Object = TaggedEC2Object(self.service_connection) + taggedEC2Object.id = "i-abcd1234" + taggedEC2Object.tags["key1"] = "value1" + taggedEC2Object.tags["key2"] = "value2" + + taggedEC2Object.remove_tag("key1", "") + + self.assert_request_parameters({ + 'ResourceId.1': 'i-abcd1234', + 'Action': 'DeleteTags', + 'Tag.1.Key': 'key1', + 'Tag.1.Value': ''}, + ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', + 'SignatureVersion', 'Timestamp', + 'Version']) + + self.assertEqual(taggedEC2Object.tags, {"key2":"value2"}) + + +if __name__ == '__main__': + unittest.main() |