summaryrefslogtreecommitdiffstats
path: root/webapp/django/test/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/django/test/utils.py')
-rw-r--r--webapp/django/test/utils.py67
1 files changed, 67 insertions, 0 deletions
diff --git a/webapp/django/test/utils.py b/webapp/django/test/utils.py
new file mode 100644
index 0000000000..69bd25bc12
--- /dev/null
+++ b/webapp/django/test/utils.py
@@ -0,0 +1,67 @@
+import sys, time, os
+from django.conf import settings
+from django.db import connection
+from django.core import mail
+from django.test import signals
+from django.template import Template
+from django.utils.translation import deactivate
+
+def instrumented_test_render(self, context):
+ """
+ An instrumented Template render method, providing a signal
+ that can be intercepted by the test system Client
+ """
+ signals.template_rendered.send(sender=self, template=self, context=context)
+ return self.nodelist.render(context)
+
+class TestSMTPConnection(object):
+ """A substitute SMTP connection for use during test sessions.
+ The test connection stores email messages in a dummy outbox,
+ rather than sending them out on the wire.
+
+ """
+ def __init__(*args, **kwargs):
+ pass
+ def open(self):
+ "Mock the SMTPConnection open() interface"
+ pass
+ def close(self):
+ "Mock the SMTPConnection close() interface"
+ pass
+ def send_messages(self, messages):
+ "Redirect messages to the dummy outbox"
+ mail.outbox.extend(messages)
+ return len(messages)
+
+def setup_test_environment():
+ """Perform any global pre-test setup. This involves:
+
+ - Installing the instrumented test renderer
+ - Diverting the email sending functions to a test buffer
+ - Setting the active locale to match the LANGUAGE_CODE setting.
+ """
+ Template.original_render = Template.render
+ Template.render = instrumented_test_render
+
+ mail.original_SMTPConnection = mail.SMTPConnection
+ mail.SMTPConnection = TestSMTPConnection
+
+ mail.outbox = []
+
+ deactivate()
+
+def teardown_test_environment():
+ """Perform any global post-test teardown. This involves:
+
+ - Restoring the original test renderer
+ - Restoring the email sending functions
+
+ """
+ Template.render = Template.original_render
+ del Template.original_render
+
+ mail.SMTPConnection = mail.original_SMTPConnection
+ del mail.original_SMTPConnection
+
+ del mail.outbox
+