class MiddlewareTests(unittest.TestCase): def setUp(self): self.middleware = MessageMiddleware() def test_response_without_messages(self): """ MessageMiddleware is tolerant of messages not existing on request. """ request = http.HttpRequest() response = http.HttpResponse() self.middleware.process_response(request, response)
class MiddlewareTests(unittest.TestCase): def setUp(self): self.middleware = MessageMiddleware() def test_response_without_messages(self): """ MessageMiddleware is tolerant of messages not existing on request. """ request = HttpRequest() response = HttpResponse() self.middleware.process_response(request, response)
class MessageMixinTests(test.TestCase): def setUp(self): self.rf = test.RequestFactory() self.middleware = MessageMiddleware() def get_request(self, *args, **kwargs): request = self.rf.get('/') self.middleware.process_request(request) return request def get_response(self, request, view): response = view(request) self.middleware.process_response(request, response) return response def get_request_response(self, view, *args, **kwargs): request = self.get_request(*args, **kwargs) response = self.get_response(request, view) return request, response def test_add_messages(self): class TestView(MessageMixin, View): def get(self, request): self.messages.add_message(messages.SUCCESS, 'test') return HttpResponse('OK') request, response = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0].message, 'test') self.assertEqual(msg[0].level, messages.SUCCESS) def test_get_messages(self): class TestView(MessageMixin, View): def get(self, request): self.messages.add_message(messages.SUCCESS, 'success') self.messages.add_message(messages.WARNING, 'warning') content = ','.join(m.message for m in self.messages.get_messages()) return HttpResponse(content) _, response = self.get_request_response(TestView.as_view()) self.assertEqual(response.content, b"success,warning") def test_get_level(self): class TestView(MessageMixin, View): def get(self, request): return HttpResponse(self.messages.get_level()) _, response = self.get_request_response(TestView.as_view()) self.assertEqual(int(response.content), messages.INFO) # default def test_set_level(self): class TestView(MessageMixin, View): def get(self, request): self.messages.set_level(messages.WARNING) self.messages.add_message(messages.SUCCESS, 'success') self.messages.add_message(messages.WARNING, 'warning') return HttpResponse('OK') request, _ = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(msg, [Message(messages.WARNING, 'warning')]) @override_settings(MESSAGE_LEVEL=messages.DEBUG) def test_debug(self): class TestView(MessageMixin, View): def get(self, request): self.messages.debug("test") return HttpResponse('OK') request, _ = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0], Message(messages.DEBUG, 'test')) def test_info(self): class TestView(MessageMixin, View): def get(self, request): self.messages.info("test") return HttpResponse('OK') request, _ = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0], Message(messages.INFO, 'test')) def test_success(self): class TestView(MessageMixin, View): def get(self, request): self.messages.success("test") return HttpResponse('OK') request, _ = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0], Message(messages.SUCCESS, 'test')) def test_warning(self): class TestView(MessageMixin, View): def get(self, request): self.messages.warning("test") return HttpResponse('OK') request, _ = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0], Message(messages.WARNING, 'test')) def test_error(self): class TestView(MessageMixin, View): def get(self, request): self.messages.error("test") return HttpResponse('OK') request, _ = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0], Message(messages.ERROR, 'test')) def test_invalid_attribute(self): class TestView(MessageMixin, View): def get(self, request): self.messages.invalid() return HttpResponse('OK') with self.assertRaises(AttributeError): self.get_request_response(TestView.as_view()) @pytest.mark.skipif( django.VERSION < (1, 5), reason='Some features of MessageMixin are only available in ' 'Django >= 1.5') def test_wrapper_available_in_dispatch(self): """ Make sure that self.messages is available in dispatch() even before calling the parent's implementation. """ class TestView(MessageMixin, View): def dispatch(self, request): self.messages.add_message(messages.SUCCESS, 'test') return super(TestView, self).dispatch(request) def get(self, request): return HttpResponse('OK') request, response = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0].message, 'test') self.assertEqual(msg[0].level, messages.SUCCESS) def test_API(self): """ Make sure that our assumptions about messages.api are still valid. """ # This test is designed to break when django.contrib.messages.api # changes (items being added or removed). excluded_API = set() if django.VERSION >= (1, 7): excluded_API.add('MessageFailure') self.assertEqual(_MessageAPIWrapper.API | excluded_API, set(messages.api.__all__))
class MessageMixinTests(test.TestCase): def setUp(self): self.rf = test.RequestFactory() self.middleware = MessageMiddleware() def get_request(self, *args, **kwargs): request = self.rf.get("/") self.middleware.process_request(request) return request def get_response(self, request, view): response = view(request) self.middleware.process_response(request, response) return response def get_request_response(self, view, *args, **kwargs): request = self.get_request(*args, **kwargs) response = self.get_response(request, view) return request, response def test_add_messages(self): class TestView(MessageMixin, View): def get(self, request): self.messages.add_message(messages.SUCCESS, "test") return HttpResponse("OK") request, response = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0].message, "test") self.assertEqual(msg[0].level, messages.SUCCESS) def test_get_messages(self): class TestView(MessageMixin, View): def get(self, request): self.messages.add_message(messages.SUCCESS, "success") self.messages.add_message(messages.WARNING, "warning") content = ",".join(m.message for m in self.messages.get_messages()) return HttpResponse(content) _, response = self.get_request_response(TestView.as_view()) self.assertEqual(response.content, b"success,warning") def test_get_level(self): class TestView(MessageMixin, View): def get(self, request): return HttpResponse(self.messages.get_level()) _, response = self.get_request_response(TestView.as_view()) self.assertEqual(int(response.content), messages.INFO) # default def test_set_level(self): class TestView(MessageMixin, View): def get(self, request): self.messages.set_level(messages.WARNING) self.messages.add_message(messages.SUCCESS, "success") self.messages.add_message(messages.WARNING, "warning") return HttpResponse("OK") request, _ = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(msg, [Message(messages.WARNING, "warning")]) @override_settings(MESSAGE_LEVEL=messages.DEBUG) def test_debug(self): class TestView(MessageMixin, View): def get(self, request): self.messages.debug("test") return HttpResponse("OK") request, _ = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0], Message(messages.DEBUG, "test")) def test_info(self): class TestView(MessageMixin, View): def get(self, request): self.messages.info("test") return HttpResponse("OK") request, _ = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0], Message(messages.INFO, "test")) def test_success(self): class TestView(MessageMixin, View): def get(self, request): self.messages.success("test") return HttpResponse("OK") request, _ = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0], Message(messages.SUCCESS, "test")) def test_warning(self): class TestView(MessageMixin, View): def get(self, request): self.messages.warning("test") return HttpResponse("OK") request, _ = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0], Message(messages.WARNING, "test")) def test_error(self): class TestView(MessageMixin, View): def get(self, request): self.messages.error("test") return HttpResponse("OK") request, _ = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0], Message(messages.ERROR, "test")) def test_invalid_attribute(self): class TestView(MessageMixin, View): def get(self, request): self.messages.invalid() return HttpResponse("OK") with self.assertRaises(AttributeError): self.get_request_response(TestView.as_view()) @pytest.mark.skipif( django.VERSION < (1, 5), reason="Some features of MessageMixin are only available in " "Django >= 1.5" ) def test_wrapper_available_in_dispatch(self): """ Make sure that self.messages is available in dispatch() even before calling the parent's implementation. """ class TestView(MessageMixin, View): def dispatch(self, request): self.messages.add_message(messages.SUCCESS, "test") return super(TestView, self).dispatch(request) def get(self, request): return HttpResponse("OK") request, response = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0].message, "test") self.assertEqual(msg[0].level, messages.SUCCESS) def test_API(self): """ Make sure that our assumptions about messages.api are still valid. """ # This test is designed to break when django.contrib.messages.api # changes (items being added or removed). excluded_API = set() if django.VERSION >= (1, 7): excluded_API.add("MessageFailure") self.assertEqual(_MessageAPIWrapper.API | excluded_API, set(messages.api.__all__))
class MessageMixinTests(test.TestCase): """Scenarios around the messaging framework""" def setUp(self): """Create necessary objects""" self.rf = test.RequestFactory() self.middleware = MessageMiddleware("") def get_request(self, *args, **kwargs): """Generate a request that has passed through the middleware""" request = self.rf.get("/") self.middleware.process_request(request) return request def get_response(self, request, view): """Generate a response that has been passed through the middleware""" response = view(request) self.middleware.process_response(request, response) return response def get_request_response(self, view, *args, **kwargs): """Get both a request and a response, middleware-processed""" request = self.get_request(*args, **kwargs) response = self.get_response(request, view) return request, response def test_add_messages(self): """Message should be added through the class attribute""" class TestView(MessageMixin, View): def get(self, request): self.messages.add_message(messages.SUCCESS, "test") return HttpResponse("OK") request, response = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0].message, "test") self.assertEqual(msg[0].level, messages.SUCCESS) def test_get_messages(self): """get_messages should get the stored messages""" class TestView(MessageMixin, View): def get(self, request): self.messages.add_message(messages.SUCCESS, "success") self.messages.add_message(messages.WARNING, "warning") content = ",".join(m.message for m in self.messages.get_messages()) return HttpResponse(content) _, response = self.get_request_response(TestView.as_view()) self.assertEqual(response.content, b"success,warning") def test_get_level(self): """Should be able to get message levels""" class TestView(MessageMixin, View): def get(self, request): return HttpResponse(self.messages.get_level()) _, response = self.get_request_response(TestView.as_view()) self.assertEqual(int(response.content), messages.INFO) # default def test_set_level(self): """Should be able to set message levels""" class TestView(MessageMixin, View): def get(self, request): self.messages.set_level(messages.WARNING) self.messages.add_message(messages.SUCCESS, "success") self.messages.add_message(messages.WARNING, "warning") return HttpResponse("OK") request, _ = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(msg, [Message(messages.WARNING, "warning")]) @override_settings(MESSAGE_LEVEL=messages.DEBUG) def test_debug(self): """Messages should able to be set as DEBUG""" class TestView(MessageMixin, View): def get(self, request): self.messages.debug("test") return HttpResponse("OK") request, _ = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0], Message(messages.DEBUG, "test")) def test_info(self): """Messages should able to be set as INFO""" class TestView(MessageMixin, View): def get(self, request): self.messages.info("test") return HttpResponse("OK") request, _ = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0], Message(messages.INFO, "test")) def test_success(self): """Messages should able to be set as SUCCESS""" class TestView(MessageMixin, View): def get(self, request): self.messages.success("test") return HttpResponse("OK") request, _ = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0], Message(messages.SUCCESS, "test")) def test_warning(self): """Messages should able to be set as WARNING""" class TestView(MessageMixin, View): def get(self, request): self.messages.warning("test") return HttpResponse("OK") request, _ = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0], Message(messages.WARNING, "test")) def test_error(self): """Messages should able to be set as ERROR""" class TestView(MessageMixin, View): def get(self, request): self.messages.error("test") return HttpResponse("OK") request, _ = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0], Message(messages.ERROR, "test")) def test_invalid_attribute(self): """Raise an AttributeError if setting an invalid level""" class TestView(MessageMixin, View): def get(self, request): self.messages.invalid() return HttpResponse("OK") with self.assertRaises(AttributeError): self.get_request_response(TestView.as_view()) def test_wrapper_available_in_dispatch(self): """ Make sure that self.messages is available in dispatch() even before calling the parent's implementation. """ class TestView(MessageMixin, View): def dispatch(self, request): self.messages.add_message(messages.SUCCESS, "test") return super(TestView, self).dispatch(request) def get(self, request): return HttpResponse("OK") request, response = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0].message, "test") self.assertEqual(msg[0].level, messages.SUCCESS) def test_API(self): """ Make sure that our assumptions about messages.api are still valid. """ # This test is designed to break when django.contrib.messages.api # changes (items being added or removed). excluded_API = set() excluded_API.add("MessageFailure")
class MessageMixinTests(test.TestCase): def setUp(self): self.rf = test.RequestFactory() self.middleware = MessageMiddleware() def get_request(self, *args, **kwargs): request = self.rf.get('/') self.middleware.process_request(request) return request def get_response(self, request, view): response = view(request) self.middleware.process_response(request, response) return response def get_request_response(self, view, *args, **kwargs): request = self.get_request(*args, **kwargs) response = self.get_response(request, view) return request, response def test_add_messages(self): class TestView(MessageMixin, View): def get(self, request): self.messages.add_message(messages.SUCCESS, 'test') return HttpResponse('OK') request, response = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0].message, 'test') self.assertEqual(msg[0].level, messages.SUCCESS) def test_get_messages(self): class TestView(MessageMixin, View): def get(self, request): self.messages.add_message(messages.SUCCESS, 'success') self.messages.add_message(messages.WARNING, 'warning') content = ','.join( m.message for m in self.messages.get_messages()) return HttpResponse(content) _, response = self.get_request_response(TestView.as_view()) self.assertEqual(response.content, b"success,warning") def test_get_level(self): class TestView(MessageMixin, View): def get(self, request): return HttpResponse(self.messages.get_level()) _, response = self.get_request_response(TestView.as_view()) self.assertEqual(int(response.content), messages.INFO) # default def test_set_level(self): class TestView(MessageMixin, View): def get(self, request): self.messages.set_level(messages.WARNING) self.messages.add_message(messages.SUCCESS, 'success') self.messages.add_message(messages.WARNING, 'warning') return HttpResponse('OK') request, _ = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(msg, [Message(messages.WARNING, 'warning')]) @override_settings(MESSAGE_LEVEL=messages.DEBUG) def test_debug(self): class TestView(MessageMixin, View): def get(self, request): self.messages.debug("test") return HttpResponse('OK') request, _ = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0], Message(messages.DEBUG, 'test')) def test_info(self): class TestView(MessageMixin, View): def get(self, request): self.messages.info("test") return HttpResponse('OK') request, _ = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0], Message(messages.INFO, 'test')) def test_success(self): class TestView(MessageMixin, View): def get(self, request): self.messages.success("test") return HttpResponse('OK') request, _ = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0], Message(messages.SUCCESS, 'test')) def test_warning(self): class TestView(MessageMixin, View): def get(self, request): self.messages.warning("test") return HttpResponse('OK') request, _ = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0], Message(messages.WARNING, 'test')) def test_error(self): class TestView(MessageMixin, View): def get(self, request): self.messages.error("test") return HttpResponse('OK') request, _ = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0], Message(messages.ERROR, 'test')) def test_invalid_attribute(self): class TestView(MessageMixin, View): def get(self, request): self.messages.invalid() return HttpResponse('OK') with self.assertRaises(AttributeError): self.get_request_response(TestView.as_view()) def test_wrapper_available_in_dispatch(self): """ Make sure that self.messages is available in dispatch() even before calling the parent's implementation. """ class TestView(MessageMixin, View): def dispatch(self, request): self.messages.add_message(messages.SUCCESS, 'test') return super(TestView, self).dispatch(request) def get(self, request): return HttpResponse('OK') request, response = self.get_request_response(TestView.as_view()) msg = list(request._messages) self.assertEqual(len(msg), 1) self.assertEqual(msg[0].message, 'test') self.assertEqual(msg[0].level, messages.SUCCESS) def test_API(self): """ Make sure that our assumptions about messages.api are still valid. """ # This test is designed to break when django.contrib.messages.api # changes (items being added or removed). excluded_API = set() excluded_API.add('MessageFailure')