1
# Copyright 2013 Canonical Ltd. This software is licensed under the
2
# GNU Affero General Public License version 3 (see the file LICENSE).
4
"""Longpoll-related views tests."""
6
from __future__ import (
17
from unittest import skip
19
from django.conf import settings
20
from maasserver import messages
21
from maasserver.exceptions import NoRabbit
22
from maasserver.testing.factory import factory
23
from maasserver.testing.rabbit import uses_rabbit_fixture
24
from maasserver.testing.testcase import MAASServerTestCase
25
from maasserver.views.nodes import get_longpoll_context
28
class TestGetLongpollContext(MAASServerTestCase):
30
def test_get_longpoll_context_empty_if_rabbitmq_publish_is_none(self):
31
self.patch(settings, 'RABBITMQ_PUBLISH', None)
32
messages.MESSAGING.reset()
33
self.assertEqual({}, get_longpoll_context())
35
def test_get_longpoll_context_returns_empty_if_rabbit_not_running(self):
38
"""Fake :class:`RabbitMessaging`: fail with `NoRabbit`."""
40
def getQueue(self, *args, **kwargs):
41
raise NoRabbit("Pretending not to have a rabbit.")
43
self.patch(messages.MESSAGING, '_cached_messaging', FakeMessaging())
44
self.assertEqual({}, get_longpoll_context())
46
def test_get_longpoll_context_empty_if_longpoll_url_is_None(self):
47
self.patch(settings, 'LONGPOLL_PATH', None)
48
messages.MESSAGING.reset()
49
self.assertEqual({}, get_longpoll_context())
52
"XXX: GavinPanella 2012-09-27 bug=1057250: Causes test "
53
"failures in unrelated parts of the test suite.")
55
def test_get_longpoll_context(self):
56
longpoll = factory.getRandomString()
57
self.patch(settings, 'LONGPOLL_PATH', longpoll)
58
self.patch(settings, 'RABBITMQ_PUBLISH', True)
59
messages.MESSAGING.reset()
60
context = get_longpoll_context()
61
self.assertItemsEqual(
62
['LONGPOLL_PATH', 'longpoll_queue'], context)
63
self.assertEqual(longpoll, context['LONGPOLL_PATH'])