diff options
author | Daniel G. Taylor <dan@programmer-art.org> | 2014-08-25 10:05:56 -0700 |
---|---|---|
committer | Daniel G. Taylor <dan@programmer-art.org> | 2014-08-25 10:05:56 -0700 |
commit | 383795119e2638fa19e45d50cfad343ab937dfcc (patch) | |
tree | 3767d3a3eaedf8affa9ebde5df74772c3fc1bdbf | |
parent | 7f907b7ab720c7f304c9278fc936dd831cb592fa (diff) | |
parent | 57bc7f408a020149b04d02f033d815b08d968d7e (diff) | |
download | boto-383795119e2638fa19e45d50cfad343ab937dfcc.tar.gz |
Merge pull request #2459 from behanceops/develop
Add profile_name support to SQS. Fixes #2459.
-rw-r--r-- | boto/sqs/__init__.py | 4 | ||||
-rw-r--r-- | boto/sqs/connection.py | 5 | ||||
-rw-r--r-- | tests/unit/sqs/test_connection.py | 51 | ||||
-rw-r--r-- | tests/unit/sqs/test_message.py | 11 | ||||
-rw-r--r-- | tests/unit/sqs/test_queue.py | 4 |
5 files changed, 61 insertions, 14 deletions
diff --git a/boto/sqs/__init__.py b/boto/sqs/__init__.py index 29bd3cfd..ccad732e 100644 --- a/boto/sqs/__init__.py +++ b/boto/sqs/__init__.py @@ -31,9 +31,11 @@ def regions(): :rtype: list :return: A list of :class:`boto.sqs.regioninfo.RegionInfo` """ + from boto.sqs.connection import SQSConnection return get_regions( 'sqs', - region_cls=SQSRegionInfo + region_cls=SQSRegionInfo, + connection_cls=SQSConnection ) diff --git a/boto/sqs/connection.py b/boto/sqs/connection.py index f4341e32..e2f59d79 100644 --- a/boto/sqs/connection.py +++ b/boto/sqs/connection.py @@ -45,7 +45,7 @@ class SQSConnection(AWSQueryConnection): is_secure=True, port=None, proxy=None, proxy_port=None, proxy_user=None, proxy_pass=None, debug=0, https_connection_factory=None, region=None, path='/', - security_token=None, validate_certs=True): + security_token=None, validate_certs=True, profile_name=None): if not region: region = SQSRegionInfo(self, self.DefaultRegionName, self.DefaultRegionEndpoint) @@ -58,7 +58,8 @@ class SQSConnection(AWSQueryConnection): self.region.endpoint, debug, https_connection_factory, path, security_token=security_token, - validate_certs=validate_certs) + validate_certs=validate_certs, + profile_name=profile_name) self.auth_region_name = self.region.name def _required_auth_capability(self): diff --git a/tests/unit/sqs/test_connection.py b/tests/unit/sqs/test_connection.py index 62dce12b..b1735de1 100644 --- a/tests/unit/sqs/test_connection.py +++ b/tests/unit/sqs/test_connection.py @@ -22,14 +22,17 @@ # IN THE SOFTWARE. # -from tests.unit import unittest -from tests.unit import AWSMockServiceTestCase +from tests.unit import AWSMockServiceTestCase, MockServiceWithConfigTestCase + +from tests.compat import mock from boto.sqs.connection import SQSConnection from boto.sqs.regioninfo import SQSRegionInfo from boto.sqs.message import RawMessage from boto.sqs.queue import Queue +from boto.connection import AWSQueryConnection +from nose.plugins.attrib import attr class SQSAuthParams(AWSMockServiceTestCase): connection_class = SQSConnection @@ -50,6 +53,7 @@ class SQSAuthParams(AWSMockServiceTestCase): </ResponseMetadata> </CreateQueueResponse>""" + @attr(sqs=True) def test_auth_service_name_override(self): self.set_http_response(status_code=200) # We can use the auth_service_name to change what service @@ -61,6 +65,7 @@ class SQSAuthParams(AWSMockServiceTestCase): self.assertIn('us-east-1/service_override/aws4_request', self.actual_request.headers['Authorization']) + @attr(sqs=True) def test_class_attribute_can_set_service_name(self): self.set_http_response(status_code=200) # The SQS class has an 'AuthServiceName' param of 'sqs': @@ -72,6 +77,7 @@ class SQSAuthParams(AWSMockServiceTestCase): self.assertIn('us-east-1/sqs/aws4_request', self.actual_request.headers['Authorization']) + @attr(sqs=True) def test_auth_region_name_is_automatically_updated(self): region = SQSRegionInfo(name='us-west-2', endpoint='us-west-2.queue.amazonaws.com') @@ -84,12 +90,12 @@ class SQSAuthParams(AWSMockServiceTestCase): self.set_http_response(status_code=200) self.service_connection.create_queue('my_queue') - + # Note the region name below is 'us-west-2'. self.assertIn('us-west-2/sqs/aws4_request', self.actual_request.headers['Authorization']) - - + + @attr(sqs=True) def test_set_get_auth_service_and_region_names(self): self.service_connection.auth_service_name = 'service_name' self.service_connection.auth_region_name = 'region_name' @@ -98,16 +104,43 @@ class SQSAuthParams(AWSMockServiceTestCase): 'service_name') self.assertEqual(self.service_connection.auth_region_name, 'region_name') + @attr(sqs=True) def test_get_queue_with_owner_account_id_returns_queue(self): - + self.set_http_response(status_code=200) self.service_connection.create_queue('my_queue') - + self.service_connection.get_queue('my_queue', '599169622985') assert 'QueueOwnerAWSAccountId' in self.actual_request.params.keys() self.assertEquals(self.actual_request.params['QueueOwnerAWSAccountId'], '599169622985') +class SQSProfileName(MockServiceWithConfigTestCase): + connection_class = SQSConnection + profile_name = 'prod' + + def setUp(self): + super(SQSProfileName, self).setUp() + self.config = { + "profile prod": { + 'aws_access_key_id': 'access_key', + 'aws_secret_access_key': 'secret_access', + } + } + + @attr(sqs=True) + def test_profile_name_gets_passed(self): + + region = SQSRegionInfo(name='us-west-2', + endpoint='us-west-2.queue.amazonaws.com') + self.service_connection = SQSConnection( + https_connection_factory=self.https_connection_factory, + region=region, + profile_name=self.profile_name) + self.initialize_service_connection() + self.set_http_response(status_code=200) + + self.assertEquals(self.service_connection.profile_name, self.profile_name) class SQSMessageAttributesParsing(AWSMockServiceTestCase): connection_class = SQSConnection @@ -143,6 +176,7 @@ class SQSMessageAttributesParsing(AWSMockServiceTestCase): </ResponseMetadata> </ReceiveMessageResponse>""" + @attr(sqs=True) def test_message_attribute_response(self): self.set_http_response(status_code=200) @@ -187,6 +221,7 @@ class SQSSendMessageAttributes(AWSMockServiceTestCase): </SendMessageResponse> """ + @attr(sqs=True) def test_send_message_attributes(self): self.set_http_response(status_code=200) @@ -242,6 +277,7 @@ class SQSSendBatchMessageAttributes(AWSMockServiceTestCase): </SendMessageBatchResponse> """ + @attr(sqs=True) def test_send_message_attributes(self): self.set_http_response(status_code=200) @@ -273,6 +309,5 @@ class SQSSendBatchMessageAttributes(AWSMockServiceTestCase): 'Version': '2012-11-05' }) - if __name__ == '__main__': unittest.main() diff --git a/tests/unit/sqs/test_message.py b/tests/unit/sqs/test_message.py index 337460f1..cc63cfa1 100644 --- a/tests/unit/sqs/test_message.py +++ b/tests/unit/sqs/test_message.py @@ -26,8 +26,11 @@ from boto.sqs.message import RawMessage from boto.sqs.bigmessage import BigMessage from boto.exception import SQSDecodeError +from nose.plugins.attrib import attr class TestMHMessage(unittest.TestCase): + + @attr(sqs=True) def test_contains(self): msg = MHMessage() msg.update({'hello': 'world'}) @@ -35,11 +38,14 @@ class TestMHMessage(unittest.TestCase): class DecodeExceptionRaisingMessage(RawMessage): + + @attr(sqs=True) def decode(self, message): raise SQSDecodeError('Sample decode error', self) class TestEncodeMessage(unittest.TestCase): + @attr(sqs=True) def test_message_id_available(self): import xml.sax from boto.resultset import ResultSet @@ -65,7 +71,8 @@ class TestEncodeMessage(unittest.TestCase): class TestBigMessage(unittest.TestCase): - + + @attr(sqs=True) def test_s3url_parsing(self): msg = BigMessage() # Try just a bucket name @@ -89,6 +96,6 @@ class TestBigMessage(unittest.TestCase): bucket, key = msg._get_bucket_key('foo/bar') - + if __name__ == '__main__': unittest.main() diff --git a/tests/unit/sqs/test_queue.py b/tests/unit/sqs/test_queue.py index b903cbf7..63ac308e 100644 --- a/tests/unit/sqs/test_queue.py +++ b/tests/unit/sqs/test_queue.py @@ -24,9 +24,11 @@ from mock import Mock from boto.sqs.queue import Queue +from nose.plugins.attrib import attr class TestQueue(unittest.TestCase): + @attr(sqs=True) def test_queue_arn(self): connection = Mock() connection.region.name = 'us-east-1' @@ -35,7 +37,7 @@ class TestQueue(unittest.TestCase): url='https://sqs.us-east-1.amazonaws.com/id/queuename') self.assertEqual(q.arn, 'arn:aws:sqs:us-east-1:id:queuename') - + @attr(sqs=True) def test_queue_name(self): connection = Mock() connection.region.name = 'us-east-1' |