diff --git a/doc/source/enforcer.py b/doc/source/enforcer.py index bfbf47c34..b8dc182b7 100644 --- a/doc/source/enforcer.py +++ b/doc/source/enforcer.py @@ -37,7 +37,6 @@ def get_proxy_methods(): "openstack.image.v2._proxy", "openstack.key_manager.v1._proxy", "openstack.load_balancer.v2._proxy", - "openstack.message.v1._proxy", "openstack.message.v2._proxy", "openstack.network.v2._proxy", "openstack.object_store.v1._proxy", diff --git a/doc/source/user/index.rst b/doc/source/user/index.rst index 93f979e4e..fac178079 100644 --- a/doc/source/user/index.rst +++ b/doc/source/user/index.rst @@ -91,7 +91,6 @@ provided by the SDK. Image v2 Key Manager Load Balancer - Message v1 Message v2 Network Object Store diff --git a/doc/source/user/proxies/message_v1.rst b/doc/source/user/proxies/message_v1.rst deleted file mode 100644 index 42ed3ff7b..000000000 --- a/doc/source/user/proxies/message_v1.rst +++ /dev/null @@ -1,30 +0,0 @@ -Message API v1 -============== - -For details on how to use message, see :doc:`/user/guides/message` - -.. automodule:: openstack.message.v1._proxy - -The Message v1 Class --------------------- - -The message high-level interface is available through the ``message`` member -of a :class:`~openstack.connection.Connection` object. The ``message`` -member will only be added if the service is detected. - -Message Operations -^^^^^^^^^^^^^^^^^^ - -.. autoclass:: openstack.message.v1._proxy.Proxy - - .. automethod:: openstack.message.v1._proxy.Proxy.claim_messages - .. automethod:: openstack.message.v1._proxy.Proxy.create_messages - .. automethod:: openstack.message.v1._proxy.Proxy.delete_message - -Queue Operations -^^^^^^^^^^^^^^^^ - -.. autoclass:: openstack.message.v1._proxy.Proxy - - .. automethod:: openstack.message.v1._proxy.Proxy.create_queue - .. automethod:: openstack.message.v1._proxy.Proxy.delete_queue diff --git a/openstack/message/message_service.py b/openstack/message/message_service.py index e74bf80bb..c9f57ad60 100644 --- a/openstack/message/message_service.py +++ b/openstack/message/message_service.py @@ -16,8 +16,7 @@ from openstack import service_filter class MessageService(service_filter.ServiceFilter): """The message service.""" - valid_versions = [service_filter.ValidVersion('v1'), - service_filter.ValidVersion('v2')] + valid_versions = [service_filter.ValidVersion('v2')] def __init__(self, version=None): """Create a message service.""" diff --git a/openstack/message/v1/__init__.py b/openstack/message/v1/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/openstack/message/v1/_proxy.py b/openstack/message/v1/_proxy.py deleted file mode 100644 index 86a3af367..000000000 --- a/openstack/message/v1/_proxy.py +++ /dev/null @@ -1,93 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from openstack.message.v1 import claim -from openstack.message.v1 import message -from openstack.message.v1 import queue -from openstack import proxy -from openstack import utils - - -class Proxy(proxy.BaseProxy): - - @utils.deprecated(deprecated_in="0.9.16", removed_in="0.9.17", - details="Message v1 is deprecated since 2014. Use v2.") - def create_queue(self, **attrs): - """Create a new queue from attributes - - :param dict attrs: Keyword arguments which will be used to create - a :class:`~openstack.message.v1.queue.Queue`, - comprised of the properties on the Queue class. - - :returns: The results of queue creation - :rtype: :class:`~openstack.message.v1.queue.Queue` - """ - return self._create(queue.Queue, **attrs) - - @utils.deprecated(deprecated_in="0.9.16", removed_in="0.9.17", - details="Message v1 is deprecated since 2014. Use v2.") - def delete_queue(self, value, ignore_missing=True): - """Delete a queue - - :param value: The value can be either the name of a queue or a - :class:`~openstack.message.v1.queue.Queue` instance. - :param bool ignore_missing: When set to ``False`` - :class:`~openstack.exceptions.ResourceNotFound` will be - raised when the queue does not exist. - When set to ``True``, no exception will be set when - attempting to delete a nonexistent queue. - - :returns: ``None`` - """ - return self._delete(queue.Queue, value, ignore_missing=ignore_missing) - - @utils.deprecated(deprecated_in="0.9.16", removed_in="0.9.17", - details="Message v1 is deprecated since 2014. Use v2.") - def create_messages(self, values): - """Create new messages - - :param values: The list of - :class:`~openstack.message.v1.message.Message` objects - to create. - :type values: :py:class:`list` - - :returns: The list of - :class:`~openstack.message.v1.message.Message` objects - that were created. - """ - return message.Message.create_messages(self, values) - - @utils.deprecated(deprecated_in="0.9.16", removed_in="0.9.17", - details="Message v1 is deprecated since 2014. Use v2.") - def claim_messages(self, value): - """Claims a set of messages. - - :param value: The value must be a - :class:`~openstack.message.v1.claim.Claim` instance. - - :returns: The list of - :class:`~openstack.message.v1.message.Message` objects - that were claimed. - """ - return claim.Claim.claim_messages(self, value) - - @utils.deprecated(deprecated_in="0.9.16", removed_in="0.9.17", - details="Message v1 is deprecated since 2014. Use v2.") - def delete_message(self, value): - """Delete a message - - :param value: The value must be a - :class:`~openstack.message.v1.message.Message` instance. - - :returns: ``None`` - """ - message.Message.delete_by_id(self, value) diff --git a/openstack/message/v1/claim.py b/openstack/message/v1/claim.py deleted file mode 100644 index d993a443f..000000000 --- a/openstack/message/v1/claim.py +++ /dev/null @@ -1,87 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import json - -from openstack import exceptions -from openstack.message import message_service -from openstack.message.v1 import message -from openstack import resource - - -class Claim(resource.Resource): - resources_key = 'claims' - base_path = "/queues/%(queue_name)s/claims" - service = message_service.MessageService() - - # capabilities - allow_create = True - allow_list = False - allow_retrieve = False - allow_delete = False - - #: A ID for each client instance. The ID must be submitted in its - #: canonical form (for example, 3381af92-2b9e-11e3-b191-71861300734c). - #: The client generates this ID once. The client ID persists between - #: restarts of the client so the client should reuse that same ID. - #: All message-related operations require the use of the client ID in - #: the headers to ensure that messages are not echoed back to the client - #: that posted them, unless the client explicitly requests this. - client_id = None - - #: The name of the queue this Claim belongs to. - queue_name = None - - #: Specifies the number of Messages to return. - limit = None - - #: Specifies how long the server waits before releasing the claim, - #: in seconds. - ttl = resource.prop("ttl") - - #: Specifies the message grace period, in seconds. - grace = resource.prop("grace") - - @classmethod - def claim_messages(cls, session, claim): - """Create a remote resource from this instance.""" - url = cls._get_url({'queue_name': claim.queue_name}) - headers = {'Client-ID': claim.client_id} - params = {'limit': claim.limit} if claim.limit else None - body = [] - - try: - resp = session.post(url, - headers=headers, - data=json.dumps(claim, cls=ClaimEncoder), - params=params) - body = resp.json() - except exceptions.InvalidResponse as e: - # The Message Service will respond with a 204 and no content in - # the body when there are no messages to claim. The transport - # layer doesn't like that and we have to correct for it here. - # Ultimately it's a bug in the v1.0 Message Service API. - # TODO(etoews): API is fixed in v1.1 so fix this for message.v1_1 - # https://wiki.openstack.org/wiki/Zaqar/specs/api/v1.1 - if e.response.status_code != 204: - raise e - - for message_attrs in body: - yield message.Message.new( - client_id=claim.client_id, - queue_name=claim.queue_name, - **message_attrs) - - -class ClaimEncoder(json.JSONEncoder): - def default(self, claim): - return {'ttl': claim.ttl, 'grace': claim.grace} diff --git a/openstack/message/v1/message.py b/openstack/message/v1/message.py deleted file mode 100644 index 6d6f703f0..000000000 --- a/openstack/message/v1/message.py +++ /dev/null @@ -1,107 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import json - -from six.moves.urllib import parse - -from openstack.message import message_service -from openstack import resource - - -class Message(resource.Resource): - resources_key = 'messages' - base_path = "/queues/%(queue_name)s/messages" - service = message_service.MessageService() - - # capabilities - allow_create = True - allow_list = False - allow_retrieve = False - allow_delete = False - - #: A ID for each client instance. The ID must be submitted in its - #: canonical form (for example, 3381af92-2b9e-11e3-b191-71861300734c). - #: The client generates this ID once. The client ID persists between - #: restarts of the client so the client should reuse that same ID. - #: All message-related operations require the use of the client ID in - #: the headers to ensure that messages are not echoed back to the client - #: that posted them, unless the client explicitly requests this. - client_id = None - - #: The name of the queue this Message belongs to. - queue_name = None - - #: A relative href that references this Message. - href = resource.prop("href") - - #: An arbitrary JSON document that constitutes the body of the message - #: being sent. - body = resource.prop("body") - - #: Specifies how long the server waits, in seconds, before marking the - #: message as expired and removing it from the queue. - ttl = resource.prop("ttl") - - #: Specifies how long the message has been in the queue, in seconds. - age = resource.prop("age") - - @classmethod - def create_messages(cls, session, messages): - if len(messages) == 0: - raise ValueError('messages cannot be empty') - - for i, message in enumerate(messages, -1): - if message.queue_name != messages[i].queue_name: - raise ValueError('All queues in messages must be equal') - if message.client_id != messages[i].client_id: - raise ValueError('All clients in messages must be equal') - - url = cls._get_url({'queue_name': messages[0].queue_name}) - headers = {'Client-ID': messages[0].client_id} - - resp = session.post(url, headers=headers, - data=json.dumps(messages, cls=MessageEncoder)) - resp = resp.json() - - messages_created = [] - hrefs = resp['resources'] - - for i, href in enumerate(hrefs): - message = Message.existing(**messages[i]) - message.href = href - messages_created.append(message) - - return messages_created - - @classmethod - def _strip_version(cls, href): - path = parse.urlparse(href).path - - if path.startswith('/v'): - return href[href.find('/', 1):] - else: - return href - - @classmethod - def delete_by_id(cls, session, message, path_args=None): - url = cls._strip_version(message.href) - headers = { - 'Client-ID': message.client_id, - 'Accept': '', - } - session.delete(url, headers=headers) - - -class MessageEncoder(json.JSONEncoder): - def default(self, message): - return {'body': message.body, 'ttl': message.ttl} diff --git a/openstack/message/v1/queue.py b/openstack/message/v1/queue.py deleted file mode 100644 index 034ce3c2a..000000000 --- a/openstack/message/v1/queue.py +++ /dev/null @@ -1,34 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from openstack.message import message_service -from openstack import resource - - -class Queue(resource.Resource): - id_attribute = 'name' - resources_key = 'queues' - base_path = '/queues' - service = message_service.MessageService() - - # capabilities - allow_create = True - allow_list = False - allow_retrieve = False - allow_delete = True - - @classmethod - def create_by_id(cls, session, attrs, resource_id=None, path_args=None): - url = cls._get_url(path_args, resource_id) - headers = {'Accept': ''} - session.put(url, headers=headers) - return {cls.id_attribute: resource_id} diff --git a/openstack/message/version.py b/openstack/message/version.py index 431fd239d..831effac7 100644 --- a/openstack/message/version.py +++ b/openstack/message/version.py @@ -11,7 +11,7 @@ # under the License. from openstack.message import message_service -from openstack import resource +from openstack import resource2 as resource class Version(resource.Resource): @@ -26,5 +26,5 @@ class Version(resource.Resource): allow_list = True # Properties - links = resource.prop('links') - status = resource.prop('status') + links = resource.Body('links') + status = resource.Body('status') diff --git a/openstack/tests/unit/message/test_message_service.py b/openstack/tests/unit/message/test_message_service.py index 66d074fc1..877a47a5d 100644 --- a/openstack/tests/unit/message/test_message_service.py +++ b/openstack/tests/unit/message/test_message_service.py @@ -23,8 +23,6 @@ class TestMessageService(testtools.TestCase): self.assertEqual('public', sot.interface) self.assertIsNone(sot.region) self.assertIsNone(sot.service_name) - self.assertEqual(2, len(sot.valid_versions)) - self.assertEqual('v1', sot.valid_versions[0].module) - self.assertEqual('v1', sot.valid_versions[0].path) - self.assertEqual('v2', sot.valid_versions[1].module) - self.assertEqual('v2', sot.valid_versions[1].path) + self.assertEqual(1, len(sot.valid_versions)) + self.assertEqual('v2', sot.valid_versions[0].module) + self.assertEqual('v2', sot.valid_versions[0].path) diff --git a/openstack/tests/unit/message/test_version.py b/openstack/tests/unit/message/test_version.py index bf9662e17..aea10840e 100644 --- a/openstack/tests/unit/message/test_version.py +++ b/openstack/tests/unit/message/test_version.py @@ -31,13 +31,13 @@ class TestVersion(testtools.TestCase): self.assertEqual('/', sot.base_path) self.assertEqual('messaging', sot.service.service_type) self.assertFalse(sot.allow_create) - self.assertFalse(sot.allow_retrieve) + self.assertFalse(sot.allow_get) self.assertFalse(sot.allow_update) self.assertFalse(sot.allow_delete) self.assertTrue(sot.allow_list) def test_make_it(self): - sot = version.Version(EXAMPLE) + sot = version.Version(**EXAMPLE) self.assertEqual(EXAMPLE['id'], sot.id) self.assertEqual(EXAMPLE['links'], sot.links) self.assertEqual(EXAMPLE['status'], sot.status) diff --git a/openstack/tests/unit/message/v1/__init__.py b/openstack/tests/unit/message/v1/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/openstack/tests/unit/message/v1/test_claim.py b/openstack/tests/unit/message/v1/test_claim.py deleted file mode 100644 index f6490a3d0..000000000 --- a/openstack/tests/unit/message/v1/test_claim.py +++ /dev/null @@ -1,97 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import json -import mock -import testtools - -from openstack import exceptions -from openstack.message.v1 import claim - -CLIENT = '3381af92-2b9e-11e3-b191-71861300734c' -QUEUE = 'test_queue' -LIMIT = 2 -FAKE = { - 'ttl': 300, - 'grace': 60 -} - - -class TestClaim(testtools.TestCase): - - def test_basic(self): - sot = claim.Claim() - self.assertEqual('claims', sot.resources_key) - self.assertEqual('/queues/%(queue_name)s/claims', sot.base_path) - self.assertEqual('messaging', sot.service.service_type) - self.assertTrue(sot.allow_create) - self.assertFalse(sot.allow_retrieve) - self.assertFalse(sot.allow_update) - self.assertFalse(sot.allow_delete) - self.assertFalse(sot.allow_list) - - def test_make_it(self): - sot = claim.Claim.new(client_id=CLIENT, - queue_name=QUEUE, - limit=LIMIT, - **FAKE) - self.assertEqual(CLIENT, sot.client_id) - self.assertEqual(QUEUE, sot.queue_name) - self.assertEqual(LIMIT, sot.limit) - self.assertEqual(FAKE['ttl'], sot.ttl) - self.assertEqual(FAKE['grace'], sot.grace) - - def test_create(self): - sess = mock.Mock() - obj = mock.Mock() - fake_attrs = [{'foo': 'bar'}, {'zoo': 'lah'}] - obj.json = mock.Mock(return_value=fake_attrs) - sess.post = mock.Mock(return_value=obj) - sot = claim.Claim() - - c = claim.Claim.new(client_id=CLIENT, queue_name=QUEUE, **FAKE) - list(sot.claim_messages(sess, c)) - - url = '/queues/%s/claims' % QUEUE - sess.post.assert_called_with( - url, - headers={'Client-ID': CLIENT}, params=None, - data=json.dumps(FAKE, cls=claim.ClaimEncoder)) - - def test_claim_messages_no_invalid_response(self): - sess = mock.Mock() - resp = mock.Mock() - resp.status_code = 204 - sess.post = mock.Mock( - side_effect=exceptions.InvalidResponse(response=resp)) - sot = claim.Claim() - - messages = list(sot.claim_messages( - sess, claim.Claim.new(client_id=CLIENT, queue_name=QUEUE, **FAKE))) - - self.assertEqual(0, len(messages)) - - def test_claim_messages_invalid_response(self): - sess = mock.Mock() - resp = mock.Mock() - resp.status_code = 400 - sess.post = mock.Mock( - side_effect=exceptions.InvalidResponse(response=resp)) - sot = claim.Claim() - - try: - list(sot.claim_messages( - sess, claim.Claim.new(client_id=CLIENT, - queue_name=QUEUE, - **FAKE))) - except exceptions.InvalidResponse as e: - self.assertEqual(400, e.response.status_code) diff --git a/openstack/tests/unit/message/v1/test_message.py b/openstack/tests/unit/message/v1/test_message.py deleted file mode 100644 index e3cd59a7f..000000000 --- a/openstack/tests/unit/message/v1/test_message.py +++ /dev/null @@ -1,85 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import json - -import mock -import testtools - -from openstack.message.v1 import message - -CLIENT = '3381af92-2b9e-11e3-b191-71861300734c' -QUEUE = 'test_queue' -FAKE = { - 'ttl': 300, - 'body': {'key': 'value'} -} -FAKE_HREF = { - 'href': '/v1/queues/test_queue/messages/1234', - 'ttl': 300, - 'body': {'key': 'value'} -} - - -class TestMessage(testtools.TestCase): - - def test_basic(self): - sot = message.Message() - self.assertEqual('messages', sot.resources_key) - self.assertEqual('/queues/%(queue_name)s/messages', sot.base_path) - self.assertEqual('messaging', sot.service.service_type) - self.assertTrue(sot.allow_create) - self.assertFalse(sot.allow_retrieve) - self.assertFalse(sot.allow_update) - self.assertFalse(sot.allow_delete) - self.assertFalse(sot.allow_list) - - def test_make_it(self): - sot = message.Message(FAKE) - self.assertEqual(FAKE['ttl'], sot.ttl) - self.assertEqual(FAKE['body'], sot.body) - - def test_create(self): - sess = mock.Mock() - obj = mock.Mock() - obj.json = mock.Mock(return_value={'resources': {'k': 'v'}}) - sess.post = mock.Mock(return_value=obj) - sot = message.Message() - - msg = message.Message.new(client_id=CLIENT, queue_name=QUEUE, **FAKE) - sot.create_messages(sess, [msg]) - - url = '/queues/%s/messages' % QUEUE - sess.post.assert_called_with( - url, - headers={'Client-ID': CLIENT}, - data=mock.ANY) - - args, kwargs = sess.post.call_args - self.assertIn("data", kwargs) - self.assertDictEqual(json.loads(kwargs["data"])[0], FAKE) - - def test_delete(self): - sess = mock.Mock() - sess.delete = mock.Mock() - sess.delete.return_value = mock.Mock() - sot = message.Message() - - sot.delete_by_id( - sess, message.Message.new(client_id=CLIENT, - queue_name=QUEUE, - **FAKE_HREF)) - - url = '/queues/%s/messages/1234' % QUEUE - sess.delete.assert_called_with( - url, - headers={'Client-ID': CLIENT, 'Accept': ''}) diff --git a/openstack/tests/unit/message/v1/test_proxy.py b/openstack/tests/unit/message/v1/test_proxy.py deleted file mode 100644 index 6f3c4a5ee..000000000 --- a/openstack/tests/unit/message/v1/test_proxy.py +++ /dev/null @@ -1,55 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from openstack.message.v1 import _proxy -from openstack.message.v1 import claim -from openstack.message.v1 import message -from openstack.message.v1 import queue -from openstack.tests.unit import test_proxy_base - -CLIENT_ID = '3381af92-2b9e-11e3-b191-71861300734c' -QUEUE_NAME = 'test_queue' - - -class TestMessageProxy(test_proxy_base.TestProxyBase): - def setUp(self): - super(TestMessageProxy, self).setUp() - self.proxy = _proxy.Proxy(self.session) - - def test_queue_create_attrs(self): - self.verify_create(self.proxy.create_queue, queue.Queue) - - def test_queue_delete(self): - self.verify_delete(self.proxy.delete_queue, queue.Queue, False) - - def test_queue_delete_ignore(self): - self.verify_delete(self.proxy.delete_queue, queue.Queue, True) - - def test_messages_create(self): - self._verify2("openstack.message.v1.message.Message.create_messages", - self.proxy.create_messages, - expected_result="result", - method_args=[[]], - expected_args=[self.proxy, []]) - - def test_messages_claim(self): - self._verify2("openstack.message.v1.claim.Claim.claim_messages", - self.proxy.claim_messages, - expected_result="result", - method_args=[claim.Claim], - expected_args=[self.proxy, claim.Claim]) - - def test_message_delete(self): - self._verify2("openstack.message.v1.message.Message.delete_by_id", - self.proxy.delete_message, - method_args=[message.Message], - expected_args=[self.proxy, message.Message]) diff --git a/openstack/tests/unit/message/v1/test_queue.py b/openstack/tests/unit/message/v1/test_queue.py deleted file mode 100644 index 0e62b0fec..000000000 --- a/openstack/tests/unit/message/v1/test_queue.py +++ /dev/null @@ -1,55 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import mock -import testtools - -from openstack.message.v1 import queue - - -FAKE_NAME = 'test_queue' -FAKE = { - 'name': FAKE_NAME, -} - - -class TestQueue(testtools.TestCase): - - def test_basic(self): - sot = queue.Queue() - self.assertEqual('queues', sot.resources_key) - self.assertEqual('/queues', sot.base_path) - self.assertEqual('messaging', sot.service.service_type) - self.assertTrue(sot.allow_create) - self.assertFalse(sot.allow_retrieve) - self.assertFalse(sot.allow_update) - self.assertTrue(sot.allow_delete) - self.assertFalse(sot.allow_list) - - def test_make_it(self): - sot = queue.Queue(FAKE) - self.assertEqual(FAKE['name'], sot.name) - - def test_create(self): - sess = mock.Mock() - sess.put = mock.Mock() - sess.put.return_value = mock.Mock() - sot = queue.Queue(FAKE) - - sot.create(sess) - - url = 'queues/%s' % FAKE_NAME - headers = {'Accept': ''} - sess.put.assert_called_with(url, - headers=headers) - self.assertEqual(FAKE_NAME, sot.id) - self.assertEqual(FAKE_NAME, sot.name)