From 7eee9d2422e7001d547e9d5347a7cd8fa598a4e7 Mon Sep 17 00:00:00 2001 From: Chris Date: Sun, 27 Jul 2014 12:58:09 -0400 Subject: SQS module: add support for profile_name --- boto/sqs/__init__.py | 4 +++- boto/sqs/connection.py | 5 +++-- 2 files changed, 6 insertions(+), 3 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): -- cgit v1.2.1 From 274cf287c7233d2c35e51cfc0ee43c2627ec4ab5 Mon Sep 17 00:00:00 2001 From: Chris Date: Sat, 9 Aug 2014 18:28:28 -0700 Subject: Add nose tags to SQS tests. --- tests/unit/sqs/test_connection.py | 18 +++++++++++++----- tests/unit/sqs/test_message.py | 11 +++++++++-- tests/unit/sqs/test_queue.py | 4 +++- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/tests/unit/sqs/test_connection.py b/tests/unit/sqs/test_connection.py index 62dce12b..6d7eac85 100644 --- a/tests/unit/sqs/test_connection.py +++ b/tests/unit/sqs/test_connection.py @@ -30,6 +30,7 @@ from boto.sqs.regioninfo import SQSRegionInfo from boto.sqs.message import RawMessage from boto.sqs.queue import Queue +from nose.plugins.attrib import attr class SQSAuthParams(AWSMockServiceTestCase): connection_class = SQSConnection @@ -50,6 +51,7 @@ class SQSAuthParams(AWSMockServiceTestCase): """ + @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 +63,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 +75,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 +88,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,11 +102,12 @@ 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() @@ -143,6 +148,7 @@ class SQSMessageAttributesParsing(AWSMockServiceTestCase): """ + @attr(sqs=True) def test_message_attribute_response(self): self.set_http_response(status_code=200) @@ -187,6 +193,7 @@ class SQSSendMessageAttributes(AWSMockServiceTestCase): """ + @attr(sqs=True) def test_send_message_attributes(self): self.set_http_response(status_code=200) @@ -242,6 +249,7 @@ class SQSSendBatchMessageAttributes(AWSMockServiceTestCase): """ + @attr(sqs=True) def test_send_message_attributes(self): self.set_http_response(status_code=200) 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' -- cgit v1.2.1 From d4a1d954d4852d5419fde91176bc1bdf268dae0d Mon Sep 17 00:00:00 2001 From: Chris Date: Sun, 10 Aug 2014 19:46:25 -0400 Subject: Add a unit test to confirm that passing a succeeds --- tests/unit/sqs/test_connection.py | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/tests/unit/sqs/test_connection.py b/tests/unit/sqs/test_connection.py index 6d7eac85..08ad7f18 100644 --- a/tests/unit/sqs/test_connection.py +++ b/tests/unit/sqs/test_connection.py @@ -22,13 +22,15 @@ # 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 @@ -113,6 +115,34 @@ class SQSAuthParams(AWSMockServiceTestCase): 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) + @attr(chris=True) + def test_profile_name_gets_passed(self): + + query_mock = AWSQueryConnection() + query_mock.__init__ = mock.Mock(wraps=AWSQueryConnection.__init__) + + 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) class SQSMessageAttributesParsing(AWSMockServiceTestCase): connection_class = SQSConnection @@ -281,6 +311,5 @@ class SQSSendBatchMessageAttributes(AWSMockServiceTestCase): 'Version': '2012-11-05' }) - if __name__ == '__main__': unittest.main() -- cgit v1.2.1 From 195c7651ad11fdb5dd5837acf7fe577b5a761f7c Mon Sep 17 00:00:00 2001 From: Chris Date: Sun, 10 Aug 2014 19:51:00 -0400 Subject: remove extra tag --- tests/unit/sqs/test_connection.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/unit/sqs/test_connection.py b/tests/unit/sqs/test_connection.py index 08ad7f18..a06fb3e5 100644 --- a/tests/unit/sqs/test_connection.py +++ b/tests/unit/sqs/test_connection.py @@ -129,7 +129,6 @@ class SQSProfileName(MockServiceWithConfigTestCase): } @attr(sqs=True) - @attr(chris=True) def test_profile_name_gets_passed(self): query_mock = AWSQueryConnection() -- cgit v1.2.1 From d4d03cc24361ef865af7990c8169d5032e3fff51 Mon Sep 17 00:00:00 2001 From: Chris Date: Tue, 12 Aug 2014 18:18:57 -0400 Subject: Fix for python 3.4 --- tests/unit/sqs/test_connection.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/tests/unit/sqs/test_connection.py b/tests/unit/sqs/test_connection.py index a06fb3e5..cc0ec536 100644 --- a/tests/unit/sqs/test_connection.py +++ b/tests/unit/sqs/test_connection.py @@ -131,9 +131,6 @@ class SQSProfileName(MockServiceWithConfigTestCase): @attr(sqs=True) def test_profile_name_gets_passed(self): - query_mock = AWSQueryConnection() - query_mock.__init__ = mock.Mock(wraps=AWSQueryConnection.__init__) - region = SQSRegionInfo(name='us-west-2', endpoint='us-west-2.queue.amazonaws.com') self.service_connection = SQSConnection( -- cgit v1.2.1 From 57bc7f408a020149b04d02f033d815b08d968d7e Mon Sep 17 00:00:00 2001 From: Chris Date: Wed, 13 Aug 2014 18:05:44 -0400 Subject: Add an assertion to confirm profile_name is properly passed through. --- tests/unit/sqs/test_connection.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/unit/sqs/test_connection.py b/tests/unit/sqs/test_connection.py index cc0ec536..b1735de1 100644 --- a/tests/unit/sqs/test_connection.py +++ b/tests/unit/sqs/test_connection.py @@ -140,6 +140,8 @@ class SQSProfileName(MockServiceWithConfigTestCase): 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 -- cgit v1.2.1