| author | Sandro Knauß <knauss@netzguerilla.net> |
| Sat, 10 Mar 2012 19:00:12 +0100 | |
| branch | devel |
| changeset 219 | 4e9d79c35088 |
| parent 164 | b634a8fed51f |
| permissions | -rw-r--r-- |
|
164
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
1 |
""" |
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
2 |
A helper class which allows test code to intercept and store sent email. |
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
3 |
(from: http://lakin.weckers.net/thoughts/twisted/part1/threaded/) |
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
4 |
""" |
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
5 |
import smtpd |
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
6 |
import asyncore |
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
7 |
|
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
8 |
class TestSMTPServer(smtpd.SMTPServer): |
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
9 |
""" |
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
10 |
An SMTP Server used to allow integration tests which ensure email is sent. |
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
11 |
""" |
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
12 |
|
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
13 |
def __init__(self, localaddr): |
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
14 |
self.rcvd = [] |
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
15 |
smtpd.SMTPServer.__init__(self, localaddr, None) |
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
16 |
|
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
17 |
def start(self): |
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
18 |
import threading |
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
19 |
self.poller = threading.Thread(target=asyncore.loop, |
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
20 |
kwargs={'timeout':0.1, 'use_poll':True}) |
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
21 |
self.poller.start() |
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
22 |
|
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
23 |
def process_message(self, peer, mailfrom, rcpttos, data): |
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
24 |
self.rcvd.append((mailfrom, rcpttos, data)) |
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
25 |
|
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
26 |
def close(self): |
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
27 |
smtpd.SMTPServer.close(self) |
|
b634a8fed51f
adding tests for smtp backend
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
28 |
self.poller.join() |