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.