Test mixin for unit testing milter applications. More...
Public Member Functions | |
| def | __init__ |
| def | log |
| def | setsymval |
| Set a macro value. | |
| def | getsymval |
| def | replacebody |
| def | chgheader |
| def | addheader |
| def | delrcpt |
| def | addrcpt |
| def | setreply |
| Save the reply codes and messages in self._reply. | |
| def | setsymlist |
| def | feedFile |
| Feed a file like object to the milter. | |
| def | feedMsg |
| Feed an email contained in a file to the milter. | |
| def | connect |
| Call the connect and helo callbacks. | |
Public Attributes | |
| logfp | |
Private Attributes | |
| _protocol | |
| _delrcpt | |
| List of recipients deleted. | |
| _addrcpt | |
| List of recipients added. | |
| _macros | |
| Macros defined. | |
| _body | |
| The message body. | |
| _bodyreplaced | |
| True if the milter replaced the message body. | |
| _headerschanged | |
| True if the milter changed any headers. | |
| _reply | |
| Reply codes and messages set by the milter. | |
| _msg | |
| The rfc822 message object for the current email being fed to the milter. | |
| _symlist | |
Test mixin for unit testing milter applications.
This mixin overrides many Milter.MilterBase methods with stub versions that simply record what was done.
| def Milter.test.TestBase.connect | ( | self, | ||
host = 'localhost', |
||||
helo = 'spamrelay', |
||||
ip = '1.2.3.4' | ||||
| ) |
Call the connect and helo callbacks.
The helo callback is not called if connect does not return CONTINUE.
| host | the hostname passed to the connect callback | |
| helo | the hostname passed to the helo callback | |
| ip | the IP address passed to the connect callback |
| def Milter.test.TestBase.feedFile | ( | self, | ||
| fp, | ||||
sender = "spam@adv.com", |
||||
rcpt = "victim@lamb.com", |
||||
| rcpts | ||||
| ) |
Feed a file like object to the milter.
Calls envfrom, envrcpt for each recipient, header for each header field, body for each body block, and finally eom. A return code from the milter other than CONTINUE returns immediately with that return code.
This is a convenience method, a test could invoke the callbacks in sequence on its own - and for some complex tests, this may be necessary.
| fp | the file with rfc2822 message stream | |
| sender | the MAIL FROM | |
| rcpt | RCPT TO - additional recipients may follow |
| def Milter.test.TestBase.feedMsg | ( | self, | ||
| fname, | ||||
sender = "spam@adv.com", |
||||
| rcpts | ||||
| ) |
Feed an email contained in a file to the milter.
This is a convenience method that invokes feedFile .
| sender | MAIL FROM | |
| rcpts | RCPT TO, multiple recipients may be supplied |
| def Milter.test.TestBase.setreply | ( | self, | ||
| rcode, | ||||
| xcode, | ||||
| msg | ||||
| ) |
Save the reply codes and messages in self._reply.
| def Milter.test.TestBase.setsymval | ( | self, | ||
| name, | ||||
| val | ||||
| ) |
Set a macro value.
These are retrieved by the milter with getsymval.
| name | the macro name, as passed to getsymval | |
| val | the macro value |
Milter.test.TestBase._body [private] |
The message body.
Milter.test.TestBase._bodyreplaced [private] |
True if the milter replaced the message body.
Milter.test.TestBase._headerschanged [private] |
True if the milter changed any headers.
Milter.test.TestBase._msg [private] |
The rfc822 message object for the current email being fed to the milter.
1.6.1