summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel G. Taylor <dan@programmer-art.org>2014-08-25 10:05:56 -0700
committerDaniel G. Taylor <dan@programmer-art.org>2014-08-25 10:05:56 -0700
commit383795119e2638fa19e45d50cfad343ab937dfcc (patch)
tree3767d3a3eaedf8affa9ebde5df74772c3fc1bdbf
parent7f907b7ab720c7f304c9278fc936dd831cb592fa (diff)
parent57bc7f408a020149b04d02f033d815b08d968d7e (diff)
downloadboto-383795119e2638fa19e45d50cfad343ab937dfcc.tar.gz
Merge pull request #2459 from behanceops/develop
Add profile_name support to SQS. Fixes #2459.
-rw-r--r--boto/sqs/__init__.py4
-rw-r--r--boto/sqs/connection.py5
-rw-r--r--tests/unit/sqs/test_connection.py51
-rw-r--r--tests/unit/sqs/test_message.py11
-rw-r--r--tests/unit/sqs/test_queue.py4
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'