Ticket #78: testmode_provider_78

File testmode_provider_78, 3.3 kB (added by fs, 4 months ago)
Line 
1diff -r 91840406d81b tests/test_debug_provider.py
2--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
3+++ b/tests/test_debug_provider.py      Mon Jul 14 21:59:43 2008 +0200
4@@ -0,0 +1,34 @@
5+#!/usr/bin/env python
6+# -*- coding: UTF-8 -*-
7+'''Test that the debug provider stores all "sent" mails.'''
8+
9+import unittest
10+
11+import turbomail
12+from turbomail.control import interface
13+from turbomail import Message
14+from turbomail.managers.immediate import ImmediateManager
15+from turbomail.providers.debug import DebugProviderFactory
16+
17+class TestDebugProviderStoresAllMail(unittest.TestCase):
18+   
19+    def setUp(self):
20+        interface.config = {'mail.on': True}
21+        manager = ImmediateManager()
22+        interface.start(manager=manager,
23+                        provider=DebugProviderFactory())
24+        self.msg = Message(sender='foo@example.com', recipient='to@example.com',
25+                           subject='Test', plain='Foo')
26+   
27+    def tearDown(self):
28+        interface.stop(force=True)
29+        interface.config = {'mail.on': False}
30+   
31+    def test_fetch_sent_messages(self):
32+        msg_string = str(self.msg)
33+        turbomail.send(self.msg)
34+       
35+        stored_mails = interface.manager.provider.get_sent_mails()
36+        self.assertEqual(1, len(stored_mails))
37+        self.assertEqual(msg_string, str(stored_mails[0]))
38+
39diff -r 91840406d81b turbomail/control.py
40--- a/turbomail/control.py      Mon Jul 14 21:59:34 2008 +0200
41+++ b/turbomail/control.py      Mon Jul 14 21:59:43 2008 +0200
42@@ -123,7 +123,6 @@
43     def send(self, message):
44         if not self.manager:
45             raise MailNotEnabledError
46-
47         return self.manager.deliver(message)
48         
49 
50diff -r 91840406d81b turbomail/providers/debug.py
51--- a/turbomail/providers/debug.py      Mon Jul 14 21:59:34 2008 +0200
52+++ b/turbomail/providers/debug.py      Mon Jul 14 21:59:43 2008 +0200
53@@ -1,16 +1,14 @@
54 # encoding: utf-8
55-
56 """TurboMail extension API."""
57 
58 __version__ = "$Revision: 84 $"
59 
60+import copy
61 import logging
62 log = logging.getLogger("turbomail.provider")
63 deliverylog = logging.getLogger("turbomail.delivery")
64 
65-import turbomail
66 from turbomail.api import ProviderFactory, Provider
67-from turbomail.exceptions import ProviderExhaustedException
68 
69 __all__ = ['load']
70 
71@@ -23,6 +21,7 @@
72     def __init__(self):
73         super(DebugProvider, self).__init__()
74         log.debug("Debug provider setup.")
75+        self._sent_mails = []
76     
77     def __del__(self):
78         if log: log.debug("Debug provider teardown.")
79@@ -30,16 +29,20 @@
80     def deliver(self, message):
81         log.info("Attempting delivery of message %s." % message.id)
82         deliverylog.info("%s DELIVER" % message.id)
83-       
84-        for i in str(message).split("\n"):
85+        msg_string = str(message)
86+        self._sent_mails.append(msg_string)
87+        for i in msg_string.split("\n"):
88             deliverylog.debug("%s BODY %s" % (message.id, str(i)))
89         
90         deliverylog.info("%s SENT" % message.id)
91         return True
92+   
93+    def get_sent_mails(self):
94+        return copy.copy(self._sent_mails)
95 
96 
97 class DebugProviderFactory(ProviderFactory):
98     name = "Debug"
99     version = "1.0"
100     url = "http://www.python-turbomail.org/wiki/DebugProvider"
101-    provider = DebugProvider
102\ No newline at end of file
103+    provider = DebugProvider