Examples

This package can be used to work with SMTP servers or for all kind of test that need a simple simulated SMTP server.

Simulating an SMTP Server

If you want to write test, but a smtp server is needed, that can be read by the tests, you can use the following features.

import balder
from tests.lib.setup_features import AiosmtpdServerFeature


class SetupSimple(balder.Setup):

    ...

    class SmtpServer(balder.Device):
        server = AiosmtpdServerFeature()

    ...

Many scenarios use the balderhub.email.lib.scenario_features.EmailReaderFeature. This package provides implementations for this feature without the need to set up IMAP/POP3 servers. The balderhub.smtp.lib.setup_features.LocalSmtpReader and balderhub.smtp.lib.setup_features.ProxySmtpReader access the SMTP server directly and return the messages from the outbox.

Access messages within same device

import balder
from tests.lib.setup_features import AiosmtpdServerFeature


class SetupSimple(balder.Setup):

    ...

    class SmtpServer(balder.Device):
        server = AiosmtpdServerFeature()
        mail = LocalSmtpReader()
    ...

    def test_do_something(self):
        new_mail = self.SmtpServer.mail.wait_for_new_mail()
        ...

Access messages from other device

import balder
from tests.lib.setup_features import AiosmtpdServerFeature


class SetupSimple(balder.Setup):

    ...

    class SmtpServer(balder.Device):
        server = AiosmtpdServerFeature()

    @balder.connect('SmtpServer', over_connection=balder.Connection)
    class MyDevice(balder.Device):
        mail = ProxySmtpReader(SmtpServer="SmtpServer")

    ...

    def test_do_something(self):
        new_mail = self.MyDevice.mail.wait_for_new_mail()
        ...