diff options
Diffstat (limited to 'lib/python2.7/site-packages/django/contrib/messages/tests/test_session.py')
-rw-r--r-- | lib/python2.7/site-packages/django/contrib/messages/tests/test_session.py | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/lib/python2.7/site-packages/django/contrib/messages/tests/test_session.py b/lib/python2.7/site-packages/django/contrib/messages/tests/test_session.py new file mode 100644 index 0000000..940e1c0 --- /dev/null +++ b/lib/python2.7/site-packages/django/contrib/messages/tests/test_session.py @@ -0,0 +1,53 @@ +from django.contrib.messages import constants +from django.contrib.messages.tests.base import BaseTests +from django.contrib.messages.storage.base import Message +from django.contrib.messages.storage.session import SessionStorage +from django.utils.safestring import SafeData, mark_safe +from django.test import TestCase + + +def set_session_data(storage, messages): + """ + Sets the messages into the backend request's session and remove the + backend's loaded data cache. + """ + storage.request.session[storage.session_key] = storage.serialize_messages(messages) + if hasattr(storage, '_loaded_data'): + del storage._loaded_data + + +def stored_session_messages_count(storage): + data = storage.deserialize_messages(storage.request.session.get(storage.session_key, [])) + return len(data) + + +class SessionTest(BaseTests, TestCase): + storage_class = SessionStorage + + def get_request(self): + self.session = {} + request = super(SessionTest, self).get_request() + request.session = self.session + return request + + def stored_messages_count(self, storage, response): + return stored_session_messages_count(storage) + + def test_get(self): + storage = self.storage_class(self.get_request()) + # Set initial data. + example_messages = ['test', 'me'] + set_session_data(storage, example_messages) + # Test that the message actually contains what we expect. + self.assertEqual(list(storage), example_messages) + + def test_safedata(self): + """ + Tests that a message containing SafeData is keeping its safe status when + retrieved from the message storage. + """ + storage = self.get_storage() + + message = Message(constants.DEBUG, mark_safe("<b>Hello Django!</b>")) + set_session_data(storage, [message]) + self.assertIsInstance(list(storage)[0].message, SafeData) |