Test out py26 with new HTTPretty
This commit is contained in:
		
							parent
							
								
									fe1f3ec06c
								
							
						
					
					
						commit
						3bddbb4af3
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1,4 +1,5 @@ | |||||||
| moto.egg-info/* | moto.egg-info/* | ||||||
| dist/* | dist/* | ||||||
|  | .tox | ||||||
| .coverage | .coverage | ||||||
| *.pyc | *.pyc | ||||||
|  | |||||||
| @ -1,5 +1,6 @@ | |||||||
| language: python | language: python | ||||||
| python: | python: | ||||||
|  |   - 2.6 | ||||||
|   - 2.7 |   - 2.7 | ||||||
| env: | env: | ||||||
|     matrix: |     matrix: | ||||||
| @ -12,6 +13,7 @@ env: | |||||||
|       - BOTO_VERSION=2.7 |       - BOTO_VERSION=2.7 | ||||||
| install: | install: | ||||||
|   - pip install boto==$BOTO_VERSION |   - pip install boto==$BOTO_VERSION | ||||||
|  |   - pip install https://github.com/gabrielfalcao/HTTPretty/tarball/8bbbdfc14326678b1aeba6a2d81af0d835a2cd6f | ||||||
|   - pip install . |   - pip install . | ||||||
|   - pip install -r requirements.txt |   - pip install -r requirements.txt | ||||||
| script: | script: | ||||||
|  | |||||||
| @ -46,7 +46,7 @@ class BaseResponse(object): | |||||||
|                 status = new_headers.pop('status', 200) |                 status = new_headers.pop('status', 200) | ||||||
|                 headers.update(new_headers) |                 headers.update(new_headers) | ||||||
|                 return status, headers, body |                 return status, headers, body | ||||||
|         raise NotImplementedError("The {} action has not been implemented".format(action)) |         raise NotImplementedError("The {0} action has not been implemented".format(action)) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def metadata_response(request, full_url, headers): | def metadata_response(request, full_url, headers): | ||||||
|  | |||||||
| @ -31,7 +31,7 @@ def get_random_hex(length=8): | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def get_random_message_id(): | def get_random_message_id(): | ||||||
|     return '{}-{}-{}-{}-{}'.format(get_random_hex(8), get_random_hex(4), get_random_hex(4), get_random_hex(4), get_random_hex(12)) |     return '{0}-{1}-{2}-{3}-{4}'.format(get_random_hex(8), get_random_hex(4), get_random_hex(4), get_random_hex(4), get_random_hex(12)) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def convert_regex_to_flask_path(url_path): | def convert_regex_to_flask_path(url_path): | ||||||
| @ -61,7 +61,7 @@ class convert_flask_to_httpretty_response(object): | |||||||
|             outer = self.callback.im_class.__name__ |             outer = self.callback.im_class.__name__ | ||||||
|         else: |         else: | ||||||
|             outer = self.callback.__module__ |             outer = self.callback.__module__ | ||||||
|         return "{}.{}".format(outer, self.callback.__name__) |         return "{0}.{1}".format(outer, self.callback.__name__) | ||||||
| 
 | 
 | ||||||
|     def __call__(self, args=None, **kwargs): |     def __call__(self, args=None, **kwargs): | ||||||
|         headers = dict(request.headers) |         headers = dict(request.headers) | ||||||
|  | |||||||
| @ -1,7 +1,14 @@ | |||||||
| from collections import defaultdict, OrderedDict | from collections import defaultdict | ||||||
| import datetime | import datetime | ||||||
| import json | import json | ||||||
| 
 | 
 | ||||||
|  | try: | ||||||
|  |         from collections import OrderedDict | ||||||
|  | except ImportError: | ||||||
|  |         # python 2.6 or earlier, use backport | ||||||
|  |         from ordereddict import OrderedDict | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| from moto.core import BaseBackend | from moto.core import BaseBackend | ||||||
| from .comparisons import get_comparison_func | from .comparisons import get_comparison_func | ||||||
| from .utils import unix_time | from .utils import unix_time | ||||||
| @ -36,7 +43,7 @@ class DynamoType(object): | |||||||
|         ) |         ) | ||||||
| 
 | 
 | ||||||
|     def __repr__(self): |     def __repr__(self): | ||||||
|         return "DynamoType: {}".format(self.to_json()) |         return "DynamoType: {0}".format(self.to_json()) | ||||||
| 
 | 
 | ||||||
|     def to_json(self): |     def to_json(self): | ||||||
|         return {self.type: self.value} |         return {self.type: self.value} | ||||||
| @ -62,7 +69,7 @@ class Item(object): | |||||||
|             self.attrs[key] = DynamoType(value) |             self.attrs[key] = DynamoType(value) | ||||||
| 
 | 
 | ||||||
|     def __repr__(self): |     def __repr__(self): | ||||||
|         return "Item: {}".format(self.to_json()) |         return "Item: {0}".format(self.to_json()) | ||||||
| 
 | 
 | ||||||
|     def to_json(self): |     def to_json(self): | ||||||
|         attributes = {} |         attributes = {} | ||||||
|  | |||||||
| @ -1,7 +1,5 @@ | |||||||
| import datetime | import calendar | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def unix_time(dt): | def unix_time(dt): | ||||||
|     epoch = datetime.datetime.utcfromtimestamp(0) |     return calendar.timegm(dt.timetuple()) | ||||||
|     delta = dt - epoch |  | ||||||
|     return delta.total_seconds() |  | ||||||
|  | |||||||
| @ -280,7 +280,7 @@ class SecurityRule(object): | |||||||
| 
 | 
 | ||||||
|     @property |     @property | ||||||
|     def unique_representation(self): |     def unique_representation(self): | ||||||
|         return "{}-{}-{}-{}-{}".format( |         return "{0}-{1}-{2}-{3}-{4}".format( | ||||||
|                self.ip_protocol, |                self.ip_protocol, | ||||||
|                self.from_port, |                self.from_port, | ||||||
|                self.to_port, |                self.to_port, | ||||||
|  | |||||||
| @ -12,7 +12,7 @@ class AmisResponse(object): | |||||||
|         instance_id = instance_ids[0] |         instance_id = instance_ids[0] | ||||||
|         image = ec2_backend.create_image(instance_id, name, description) |         image = ec2_backend.create_image(instance_id, name, description) | ||||||
|         if not image: |         if not image: | ||||||
|             return "There is not instance with id {}".format(instance_id), dict(status=404) |             return "There is not instance with id {0}".format(instance_id), dict(status=404) | ||||||
|         template = Template(CREATE_IMAGE_RESPONSE) |         template = Template(CREATE_IMAGE_RESPONSE) | ||||||
|         return template.render(image=image) |         return template.render(image=image) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -39,7 +39,7 @@ class ElasticBlockStore(object): | |||||||
|         success = ec2_backend.delete_snapshot(snapshot_id) |         success = ec2_backend.delete_snapshot(snapshot_id) | ||||||
|         if not success: |         if not success: | ||||||
|             # Snapshot doesn't exist |             # Snapshot doesn't exist | ||||||
|             return "Snapshot with id {} does not exist".format(snapshot_id), dict(status=404) |             return "Snapshot with id {0} does not exist".format(snapshot_id), dict(status=404) | ||||||
|         return DELETE_SNAPSHOT_RESPONSE |         return DELETE_SNAPSHOT_RESPONSE | ||||||
| 
 | 
 | ||||||
|     def delete_volume(self): |     def delete_volume(self): | ||||||
| @ -47,7 +47,7 @@ class ElasticBlockStore(object): | |||||||
|         success = ec2_backend.delete_volume(volume_id) |         success = ec2_backend.delete_volume(volume_id) | ||||||
|         if not success: |         if not success: | ||||||
|             # Volume doesn't exist |             # Volume doesn't exist | ||||||
|             return "Volume with id {} does not exist".format(volume_id), dict(status=404) |             return "Volume with id {0} does not exist".format(volume_id), dict(status=404) | ||||||
|         return DELETE_VOLUME_RESPONSE |         return DELETE_VOLUME_RESPONSE | ||||||
| 
 | 
 | ||||||
|     def describe_snapshot_attribute(self): |     def describe_snapshot_attribute(self): | ||||||
| @ -77,7 +77,7 @@ class ElasticBlockStore(object): | |||||||
|         attachment = ec2_backend.detach_volume(volume_id, instance_id, device_path) |         attachment = ec2_backend.detach_volume(volume_id, instance_id, device_path) | ||||||
|         if not attachment: |         if not attachment: | ||||||
|             # Volume wasn't attached |             # Volume wasn't attached | ||||||
|             return "Volume {} can not be detached from {} because it is not attached".format(volume_id, instance_id), dict(status=404) |             return "Volume {0} can not be detached from {1} because it is not attached".format(volume_id, instance_id), dict(status=404) | ||||||
|         template = Template(DETATCH_VOLUME_RESPONSE) |         template = Template(DETATCH_VOLUME_RESPONSE) | ||||||
|         return template.render(attachment=attachment) |         return template.render(attachment=attachment) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -34,7 +34,7 @@ class SecurityGroups(object): | |||||||
|         group = ec2_backend.create_security_group(name, description) |         group = ec2_backend.create_security_group(name, description) | ||||||
|         if not group: |         if not group: | ||||||
|             # There was an exisitng group |             # There was an exisitng group | ||||||
|             return "There was an existing security group with name {}".format(name), dict(status=409) |             return "There was an existing security group with name {0}".format(name), dict(status=409) | ||||||
|         template = Template(CREATE_SECURITY_GROUP_RESPONSE) |         template = Template(CREATE_SECURITY_GROUP_RESPONSE) | ||||||
|         return template.render(group=group) |         return template.render(group=group) | ||||||
| 
 | 
 | ||||||
| @ -45,7 +45,7 @@ class SecurityGroups(object): | |||||||
| 
 | 
 | ||||||
|         if not group: |         if not group: | ||||||
|             # There was no such group |             # There was no such group | ||||||
|             return "There was no security group with name {}".format(name), dict(status=404) |             return "There was no security group with name {0}".format(name), dict(status=404) | ||||||
|         return DELETE_GROUP_RESPONSE |         return DELETE_GROUP_RESPONSE | ||||||
| 
 | 
 | ||||||
|     def describe_security_groups(self): |     def describe_security_groups(self): | ||||||
|  | |||||||
| @ -7,7 +7,7 @@ def random_id(prefix=''): | |||||||
|     chars = range(10) + ['a', 'b', 'c', 'd', 'e', 'f'] |     chars = range(10) + ['a', 'b', 'c', 'd', 'e', 'f'] | ||||||
| 
 | 
 | ||||||
|     instance_tag = ''.join(unicode(random.choice(chars)) for x in range(size)) |     instance_tag = ''.join(unicode(random.choice(chars)) for x in range(size)) | ||||||
|     return '{}-{}'.format(prefix, instance_tag) |     return '{0}-{1}'.format(prefix, instance_tag) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def random_ami_id(): | def random_ami_id(): | ||||||
| @ -60,9 +60,9 @@ def resource_ids_from_querystring(querystring_dict): | |||||||
|     for key, value in querystring_dict.iteritems(): |     for key, value in querystring_dict.iteritems(): | ||||||
|         if key.startswith(prefix): |         if key.startswith(prefix): | ||||||
|             resource_index = key.replace(prefix + ".", "") |             resource_index = key.replace(prefix + ".", "") | ||||||
|             tag_key = querystring_dict.get("Tag.{}.Key".format(resource_index))[0] |             tag_key = querystring_dict.get("Tag.{0}.Key".format(resource_index))[0] | ||||||
| 
 | 
 | ||||||
|             tag_value_key = "Tag.{}.Value".format(resource_index) |             tag_value_key = "Tag.{0}.Value".format(resource_index) | ||||||
|             if tag_value_key in querystring_dict: |             if tag_value_key in querystring_dict: | ||||||
|                 tag_value = querystring_dict.get(tag_value_key)[0] |                 tag_value = querystring_dict.get(tag_value_key)[0] | ||||||
|             else: |             else: | ||||||
| @ -78,7 +78,7 @@ def filters_from_querystring(querystring_dict): | |||||||
|         match = re.search("Filter.(\d).Name", key) |         match = re.search("Filter.(\d).Name", key) | ||||||
|         if match: |         if match: | ||||||
|             filter_index = match.groups()[0] |             filter_index = match.groups()[0] | ||||||
|             value_prefix = "Filter.{}.Value".format(filter_index) |             value_prefix = "Filter.{0}.Value".format(filter_index) | ||||||
|             filter_values = [filter_value[0] for filter_key, filter_value in querystring_dict.iteritems() if filter_key.startswith(value_prefix)] |             filter_values = [filter_value[0] for filter_key, filter_value in querystring_dict.iteritems() if filter_key.startswith(value_prefix)] | ||||||
|             response_values[value[0]] = filter_values |             response_values[value[0]] = filter_values | ||||||
|     return response_values |     return response_values | ||||||
|  | |||||||
| @ -16,11 +16,11 @@ class ELBResponse(BaseResponse): | |||||||
|         port_index = 1 |         port_index = 1 | ||||||
|         while True: |         while True: | ||||||
|             try: |             try: | ||||||
|                 protocol = self.querystring['Listeners.member.{}.Protocol'.format(port_index)][0] |                 protocol = self.querystring['Listeners.member.{0}.Protocol'.format(port_index)][0] | ||||||
|             except KeyError: |             except KeyError: | ||||||
|                 break |                 break | ||||||
|             lb_port = self.querystring['Listeners.member.{}.LoadBalancerPort'.format(port_index)][0] |             lb_port = self.querystring['Listeners.member.{0}.LoadBalancerPort'.format(port_index)][0] | ||||||
|             instance_port = self.querystring['Listeners.member.{}.InstancePort'.format(port_index)][0] |             instance_port = self.querystring['Listeners.member.{0}.InstancePort'.format(port_index)][0] | ||||||
|             ports.append([protocol, lb_port, instance_port]) |             ports.append([protocol, lb_port, instance_port]) | ||||||
|             port_index += 1 |             port_index += 1 | ||||||
|         elb_backend.create_load_balancer( |         elb_backend.create_load_balancer( | ||||||
|  | |||||||
| @ -41,7 +41,7 @@ class FakeStep(object): | |||||||
| 
 | 
 | ||||||
|         arg_index = 1 |         arg_index = 1 | ||||||
|         while True: |         while True: | ||||||
|             arg = kwargs.get('hadoop_jar_step._args.member.{}'.format(arg_index)) |             arg = kwargs.get('hadoop_jar_step._args.member.{0}'.format(arg_index)) | ||||||
|             if arg: |             if arg: | ||||||
|                 self.args.append(arg) |                 self.args.append(arg) | ||||||
|                 arg_index += 1 |                 arg_index += 1 | ||||||
|  | |||||||
| @ -14,23 +14,21 @@ class ElasticMapReduceResponse(BaseResponse): | |||||||
|         return [value[0] for key, value in self.querystring.items() if key.startswith(param_prefix)] |         return [value[0] for key, value in self.querystring.items() if key.startswith(param_prefix)] | ||||||
| 
 | 
 | ||||||
|     def _get_dict_param(self, param_prefix): |     def _get_dict_param(self, param_prefix): | ||||||
|         return { |         params = {} | ||||||
|             camelcase_to_underscores(key.replace(param_prefix, "")): value[0] |         for key, value in self.querystring.items(): | ||||||
|             for key, value |             if key.startswith(param_prefix): | ||||||
|             in self.querystring.items() |                 params[camelcase_to_underscores(key.replace(param_prefix, ""))] = value[0] | ||||||
|             if key.startswith(param_prefix) |         return params | ||||||
|         } |  | ||||||
| 
 | 
 | ||||||
|     def _get_list_prefix(self, param_prefix): |     def _get_list_prefix(self, param_prefix): | ||||||
|         results = [] |         results = [] | ||||||
|         param_index = 1 |         param_index = 1 | ||||||
|         while True: |         while True: | ||||||
|             index_prefix = "{}.{}.".format(param_prefix, param_index) |             index_prefix = "{0}.{1}.".format(param_prefix, param_index) | ||||||
|             new_items = { |             new_items = {} | ||||||
|                 camelcase_to_underscores(key.replace(index_prefix, "")): value[0] |             for key, value in self.querystring.items(): | ||||||
|                 for key, value in self.querystring.items() |                 if key.startswith(index_prefix): | ||||||
|                 if key.startswith(index_prefix) |                     new_items[camelcase_to_underscores(key.replace(index_prefix, ""))] = value[0] | ||||||
|             } |  | ||||||
|             if not new_items: |             if not new_items: | ||||||
|                 break |                 break | ||||||
|             results.append(new_items) |             results.append(new_items) | ||||||
|  | |||||||
| @ -5,10 +5,10 @@ import string | |||||||
| def random_job_id(size=13): | def random_job_id(size=13): | ||||||
|     chars = range(10) + list(string.uppercase) |     chars = range(10) + list(string.uppercase) | ||||||
|     job_tag = ''.join(unicode(random.choice(chars)) for x in range(size)) |     job_tag = ''.join(unicode(random.choice(chars)) for x in range(size)) | ||||||
|     return 'j-{}'.format(job_tag) |     return 'j-{0}'.format(job_tag) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def random_instance_group_id(size=13): | def random_instance_group_id(size=13): | ||||||
|     chars = range(10) + list(string.uppercase) |     chars = range(10) + list(string.uppercase) | ||||||
|     job_tag = ''.join(unicode(random.choice(chars)) for x in range(size)) |     job_tag = ''.join(unicode(random.choice(chars)) for x in range(size)) | ||||||
|     return 'i-{}'.format(job_tag) |     return 'i-{0}'.format(job_tag) | ||||||
|  | |||||||
| @ -116,7 +116,7 @@ class S3Backend(BaseBackend): | |||||||
|                     if delimiter and delimiter in key_without_prefix: |                     if delimiter and delimiter in key_without_prefix: | ||||||
|                         # If delimiter, we need to split out folder_results |                         # If delimiter, we need to split out folder_results | ||||||
|                         key_without_delimiter = key_without_prefix.split(delimiter)[0] |                         key_without_delimiter = key_without_prefix.split(delimiter)[0] | ||||||
|                         folder_results.add("{}{}{}".format(prefix, key_without_delimiter, delimiter)) |                         folder_results.add("{0}{1}{2}".format(prefix, key_without_delimiter, delimiter)) | ||||||
|                     else: |                     else: | ||||||
|                         key_results.add(key) |                         key_results.add(key) | ||||||
|         else: |         else: | ||||||
|  | |||||||
| @ -95,7 +95,7 @@ def _bucket_response(request, full_url, headers): | |||||||
|                 new_key.set_metadata(meta_key, metadata) |                 new_key.set_metadata(meta_key, metadata) | ||||||
|         return 200, headers, "" |         return 200, headers, "" | ||||||
|     else: |     else: | ||||||
|         raise NotImplementedError("Method {} has not been impelemented in the S3 backend yet".format(method)) |         raise NotImplementedError("Method {0} has not been impelemented in the S3 backend yet".format(method)) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def key_response(request, full_url, headers): | def key_response(request, full_url, headers): | ||||||
| @ -172,7 +172,7 @@ def _key_response(request, full_url, headers): | |||||||
|         template = Template(S3_DELETE_OBJECT_SUCCESS) |         template = Template(S3_DELETE_OBJECT_SUCCESS) | ||||||
|         return 204, headers, template.render(bucket=removed_key) |         return 204, headers, template.render(bucket=removed_key) | ||||||
|     else: |     else: | ||||||
|         raise NotImplementedError("Method {} has not been impelemented in the S3 backend yet".format(method)) |         raise NotImplementedError("Method {0} has not been impelemented in the S3 backend yet".format(method)) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| S3_ALL_BUCKETS = """<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01"> | S3_ALL_BUCKETS = """<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01"> | ||||||
|  | |||||||
| @ -42,7 +42,7 @@ class EmailResponse(BaseResponse): | |||||||
|         destination = self.querystring.get('Destination.ToAddresses.member.1')[0] |         destination = self.querystring.get('Destination.ToAddresses.member.1')[0] | ||||||
|         message = ses_backend.send_email(source, subject, body, destination) |         message = ses_backend.send_email(source, subject, body, destination) | ||||||
|         if not message: |         if not message: | ||||||
|             return "Did not have authority to send from email {}".format(source), dict(status=400) |             return "Did not have authority to send from email {0}".format(source), dict(status=400) | ||||||
|         template = Template(SEND_EMAIL_RESPONSE) |         template = Template(SEND_EMAIL_RESPONSE) | ||||||
|         return template.render(message=message) |         return template.render(message=message) | ||||||
| 
 | 
 | ||||||
| @ -53,7 +53,7 @@ class EmailResponse(BaseResponse): | |||||||
| 
 | 
 | ||||||
|         message = ses_backend.send_raw_email(source, destination, raw_data) |         message = ses_backend.send_raw_email(source, destination, raw_data) | ||||||
|         if not message: |         if not message: | ||||||
|             return "Did not have authority to send from email {}".format(source), dict(status=400) |             return "Did not have authority to send from email {0}".format(source), dict(status=400) | ||||||
|         template = Template(SEND_RAW_EMAIL_RESPONSE) |         template = Template(SEND_RAW_EMAIL_RESPONSE) | ||||||
|         return template.render(message=message) |         return template.render(message=message) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -7,7 +7,7 @@ def random_hex(length): | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def get_random_message_id(): | def get_random_message_id(): | ||||||
|     return "{}-{}-{}-{}-{}-{}-{}".format( |     return "{0}-{1}-{2}-{3}-{4}-{5}-{6}".format( | ||||||
|            random_hex(16), |            random_hex(16), | ||||||
|            random_hex(8), |            random_hex(8), | ||||||
|            random_hex(4), |            random_hex(4), | ||||||
|  | |||||||
| @ -26,7 +26,6 @@ class QueuesResponse(BaseResponse): | |||||||
|         else: |         else: | ||||||
|             return "", dict(status=404) |             return "", dict(status=404) | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
|     def list_queues(self): |     def list_queues(self): | ||||||
|         queues = sqs_backend.list_queues() |         queues = sqs_backend.list_queues() | ||||||
|         template = Template(LIST_QUEUES_RESPONSE) |         template = Template(LIST_QUEUES_RESPONSE) | ||||||
| @ -51,7 +50,7 @@ class QueueResponse(BaseResponse): | |||||||
|         queue_name = self.path.split("/")[-1] |         queue_name = self.path.split("/")[-1] | ||||||
|         queue = sqs_backend.delete_queue(queue_name) |         queue = sqs_backend.delete_queue(queue_name) | ||||||
|         if not queue: |         if not queue: | ||||||
|             return "A queue with name {} does not exist".format(queue_name), dict(status=404) |             return "A queue with name {0} does not exist".format(queue_name), dict(status=404) | ||||||
|         template = Template(DELETE_QUEUE_RESPONSE) |         template = Template(DELETE_QUEUE_RESPONSE) | ||||||
|         return template.render(queue=queue) |         return template.render(queue=queue) | ||||||
| 
 | 
 | ||||||
| @ -79,15 +78,15 @@ class QueueResponse(BaseResponse): | |||||||
|         messages = [] |         messages = [] | ||||||
|         for index in range(1, 11): |         for index in range(1, 11): | ||||||
|             # Loop through looking for messages |             # Loop through looking for messages | ||||||
|             message_key = 'SendMessageBatchRequestEntry.{}.MessageBody'.format(index) |             message_key = 'SendMessageBatchRequestEntry.{0}.MessageBody'.format(index) | ||||||
|             message_body = self.querystring.get(message_key) |             message_body = self.querystring.get(message_key) | ||||||
|             if not message_body: |             if not message_body: | ||||||
|                 # Found all messages |                 # Found all messages | ||||||
|                 break |                 break | ||||||
| 
 | 
 | ||||||
|             message_user_id_key = 'SendMessageBatchRequestEntry.{}.Id'.format(index) |             message_user_id_key = 'SendMessageBatchRequestEntry.{0}.Id'.format(index) | ||||||
|             message_user_id = self.querystring.get(message_user_id_key)[0] |             message_user_id = self.querystring.get(message_user_id_key)[0] | ||||||
|             delay_key = 'SendMessageBatchRequestEntry.{}.DelaySeconds'.format(index) |             delay_key = 'SendMessageBatchRequestEntry.{0}.DelaySeconds'.format(index) | ||||||
|             delay_seconds = self.querystring.get(delay_key, [None])[0] |             delay_seconds = self.querystring.get(delay_key, [None])[0] | ||||||
|             message = sqs_backend.send_message(queue_name, message_body[0], delay_seconds=delay_seconds) |             message = sqs_backend.send_message(queue_name, message_body[0], delay_seconds=delay_seconds) | ||||||
|             message.user_id = message_user_id |             message.user_id = message_user_id | ||||||
| @ -118,7 +117,7 @@ class QueueResponse(BaseResponse): | |||||||
|         message_ids = [] |         message_ids = [] | ||||||
|         for index in range(1, 11): |         for index in range(1, 11): | ||||||
|             # Loop through looking for messages |             # Loop through looking for messages | ||||||
|             receipt_key = 'DeleteMessageBatchRequestEntry.{}.ReceiptHandle'.format(index) |             receipt_key = 'DeleteMessageBatchRequestEntry.{0}.ReceiptHandle'.format(index) | ||||||
|             receipt_handle = self.querystring.get(receipt_key) |             receipt_handle = self.querystring.get(receipt_key) | ||||||
|             if not receipt_handle: |             if not receipt_handle: | ||||||
|                 # Found all messages |                 # Found all messages | ||||||
| @ -126,7 +125,7 @@ class QueueResponse(BaseResponse): | |||||||
| 
 | 
 | ||||||
|             sqs_backend.delete_message(queue_name, receipt_handle[0]) |             sqs_backend.delete_message(queue_name, receipt_handle[0]) | ||||||
| 
 | 
 | ||||||
|             message_user_id_key = 'DeleteMessageBatchRequestEntry.{}.Id'.format(index) |             message_user_id_key = 'DeleteMessageBatchRequestEntry.{0}.Id'.format(index) | ||||||
|             message_user_id = self.querystring.get(message_user_id_key)[0] |             message_user_id = self.querystring.get(message_user_id_key)[0] | ||||||
|             message_ids.append(message_user_id) |             message_ids.append(message_user_id) | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										20
									
								
								setup.py
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								setup.py
									
									
									
									
									
								
							| @ -2,6 +2,19 @@ | |||||||
| 
 | 
 | ||||||
| from setuptools import setup, find_packages | from setuptools import setup, find_packages | ||||||
| 
 | 
 | ||||||
|  | install_requires = [ | ||||||
|  |     "boto", | ||||||
|  |     "flask", | ||||||
|  |     "httpretty>=0.6.1", | ||||||
|  |     "Jinja2", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | import sys | ||||||
|  | 
 | ||||||
|  | if sys.version_info < (2, 7): | ||||||
|  |     # No buildint OrderedDict before 2.7 | ||||||
|  |     install_requires.append('ordereddict') | ||||||
|  | 
 | ||||||
| setup( | setup( | ||||||
|     name='moto', |     name='moto', | ||||||
|     version='0.2.9', |     version='0.2.9', | ||||||
| @ -16,10 +29,5 @@ setup( | |||||||
|         ], |         ], | ||||||
|     }, |     }, | ||||||
|     packages=find_packages(), |     packages=find_packages(), | ||||||
|     install_requires=[ |     install_requires=install_requires, | ||||||
|         "boto", |  | ||||||
|         "flask", |  | ||||||
|         "httpretty>=0.6.1", |  | ||||||
|         "Jinja2", |  | ||||||
|     ], |  | ||||||
| ) | ) | ||||||
|  | |||||||
| @ -365,7 +365,7 @@ def test_scan(): | |||||||
|         'Body': 'http://url_to_lolcat.gif', |         'Body': 'http://url_to_lolcat.gif', | ||||||
|         'SentBy': 'User B', |         'SentBy': 'User B', | ||||||
|         'ReceivedTime': '12/9/2011 11:36:03 PM', |         'ReceivedTime': '12/9/2011 11:36:03 PM', | ||||||
|         'Ids': {1, 2, 3}, |         'Ids': set([1, 2, 3]), | ||||||
|         'PK': 7, |         'PK': 7, | ||||||
|     } |     } | ||||||
|     item = table.new_item( |     item = table.new_item( | ||||||
| @ -442,7 +442,7 @@ def test_write_batch(): | |||||||
|             'Body': 'http://url_to_lolcat.gif', |             'Body': 'http://url_to_lolcat.gif', | ||||||
|             'SentBy': 'User B', |             'SentBy': 'User B', | ||||||
|             'ReceivedTime': '12/9/2011 11:36:03 PM', |             'ReceivedTime': '12/9/2011 11:36:03 PM', | ||||||
|             'Ids': {1, 2, 3}, |             'Ids': set([1, 2, 3]), | ||||||
|             'PK': 7, |             'PK': 7, | ||||||
|         }, |         }, | ||||||
|     )) |     )) | ||||||
| @ -489,7 +489,7 @@ def test_batch_read(): | |||||||
|         'Body': 'http://url_to_lolcat.gif', |         'Body': 'http://url_to_lolcat.gif', | ||||||
|         'SentBy': 'User B', |         'SentBy': 'User B', | ||||||
|         'ReceivedTime': '12/9/2011 11:36:03 PM', |         'ReceivedTime': '12/9/2011 11:36:03 PM', | ||||||
|         'Ids': {1, 2, 3}, |         'Ids': set([1, 2, 3]), | ||||||
|         'PK': 7, |         'PK': 7, | ||||||
|     } |     } | ||||||
|     item = table.new_item( |     item = table.new_item( | ||||||
|  | |||||||
| @ -282,7 +282,7 @@ def test_scan(): | |||||||
|         'Body': 'http://url_to_lolcat.gif', |         'Body': 'http://url_to_lolcat.gif', | ||||||
|         'SentBy': 'User B', |         'SentBy': 'User B', | ||||||
|         'ReceivedTime': '12/9/2011 11:36:03 PM', |         'ReceivedTime': '12/9/2011 11:36:03 PM', | ||||||
|         'Ids': {1, 2, 3}, |         'Ids': set([1, 2, 3]), | ||||||
|         'PK': 7, |         'PK': 7, | ||||||
|     } |     } | ||||||
|     item = table.new_item( |     item = table.new_item( | ||||||
| @ -356,7 +356,7 @@ def test_write_batch(): | |||||||
|             'Body': 'http://url_to_lolcat.gif', |             'Body': 'http://url_to_lolcat.gif', | ||||||
|             'SentBy': 'User B', |             'SentBy': 'User B', | ||||||
|             'ReceivedTime': '12/9/2011 11:36:03 PM', |             'ReceivedTime': '12/9/2011 11:36:03 PM', | ||||||
|             'Ids': {1, 2, 3}, |             'Ids': set([1, 2, 3]), | ||||||
|             'PK': 7, |             'PK': 7, | ||||||
|         }, |         }, | ||||||
|     )) |     )) | ||||||
| @ -401,7 +401,7 @@ def test_batch_read(): | |||||||
|         'Body': 'http://url_to_lolcat.gif', |         'Body': 'http://url_to_lolcat.gif', | ||||||
|         'SentBy': 'User B', |         'SentBy': 'User B', | ||||||
|         'ReceivedTime': '12/9/2011 11:36:03 PM', |         'ReceivedTime': '12/9/2011 11:36:03 PM', | ||||||
|         'Ids': {1, 2, 3}, |         'Ids': set([1, 2, 3]), | ||||||
|         'PK': 7, |         'PK': 7, | ||||||
|     } |     } | ||||||
|     item = table.new_item( |     item = table.new_item( | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user