Skip to main content

Used for integration testing with Plone

Project description

Introduction

collective.MockMailHost enables integration testing of email functionality from Plone. Simply add this egg to your [test] runner section, and install this product through your Layer or TestCase.

Note

THIS IS FOR TESTING PURPOSE ONLY, do not use this product on your running Plone site. It replaces the standard MailHost with a Mock MailHost that you can poke at to check email content and recipients.

Has been tested with Plone 4 but should also work with earlier versions.

Integration

Example how to integrate collective.MockMailHost to your testing setup based on plone.app.testing. Add the package to your extras_requires section in your package’s setup.py file, so buildout will automatically download the package for you.:

setup(name='my.package',
      ...
      extras_require={
        'test': [
            'plone.app.testing',
            'collective.MockMailHost',
        ]
      },
      ...
      )

Your test layer setup could look like this example below:

from plone.app.testing import helpers, layers
from plone.testing import z2


class MyLayer(helpers.PloneSandboxLayer):
    defaultBases = (layers.PLONE_FIXTURE, )

    def setUpZope(self, app, configurationContext):
        # Load zcml
        import collective.MockMailHost
        self.loadZCML(package=collective.MockMailHost)

        # Install product and call its initialize() function
        z2.installProduct(app, 'collective.MockMailHost')

        # Note: you can skip this if my.product is not a Zope 2-style
        # product, i.e. it is not in the Products.* namespace and it
        # does not have a <five:registerPackage /> directive in its
        # configure.zcml.

    def tearDownZope(self, app):
        # Uninstall product
        z2.uninstallProduct(app, 'collective.MockMailHost')

        # Note: Again, you can skip this if my.product is not a Zope 2-
        # style product

    def setUpPloneSite(self, portal):
        helpers.quickInstallProduct(portal, 'collective.MockMailHost')

        helpers.applyProfile(portal, 'collective.MockMailHost:default')

MY_FIXTURE = MyLayer()

Using a member-posting forum

>>> from Products.CMFCore.utils import getToolByName
>>> from Products.MailHost.interfaces import IMailHost
>>> from zope.component import getUtility
>>> app = layer['app']
>>> portal = layer['portal']

Test starting conversations, replying and modifying comments in a default member-posting forum.

Let us log all exceptions, which is useful for debugging. Also, clear portlet slots, to make the test browser less confused by things like the recent portlet and the navtree.

>>> portal.error_log._ignored_exceptions = ()
>>> portal.left_slots = portal.right_slots = []
>>> workflow = portal.portal_workflow

Validate mailhost replacement

>>> portal.MailHost
<MockMailHost at ...>
>>> getToolByName(portal, 'MailHost')
<MockMailHost at ...>
>>> getUtility(IMailHost)
<MockMailHost at ...>

Send email

>>> to_ = "member@example.com"
>>> from_ = "admin@example.com"
>>> msg = """
...
... Dear Sir:
...
... Thank you"""
>>> portal.MailHost.send(msg, to_, from_)
>>> len(portal.MailHost.messages)
1
>>> 'To: member@example.com' in portal.MailHost.messages[0]
True
>>> 'From: admin@example.com' in portal.MailHost.messages[0]
True
>>> 'Dear Sir:' in portal.MailHost.messages[0]
True
>>> portal.MailHost.reset()
>>> len(portal.MailHost.messages)
0

Changelog

2.0.0 (2018-11-06)

Breaking changes:

  • Do not depend on old SecureMailHost any longer. [pbauer]

New features:

  • Python 3 support. [pbauer]

1.1.0 (2018-06-27)

  • Fix import location, Globals has been removed. [gforcada]

  • Rework tests setup. [gforcada]

1.0 (2016-01-25)

  • Fix MIMEText compatibility (broken since 0.9). [jone]

0.9 (2015-07-10)

  • Clean up msg before sending. Otherwise Plone self registration email does not work [sureshvv]

0.8 (2015-06-13)

  • Add browser view for functional testing [Casecarsid]

0.7 (2013-07-05)

  • MANIFEST [sureshvv]

0.6 (2013-07-03)

  • Track msg_type also. [sureshvv]

  • Behave more like collective.testcaselayer’s MockMailHost. [saily]

  • Documentation updates [saily]

0.5 - 2012-09-25

  • Remove ZopeSkel and Paster dependency from setup.py [saily]

  • Moved to github and changed to README.rst, links in setup.py [saily]

  • Allow multiple paramters for send and secureSend method in MockMailHost class. [saily]

0.4 (2011-05-17)

  • Register MockMailHost in SiteManager to get MockMailHost when using getToolByName(context, 'MailHost') or getUtility(IMailHost). [saily]

  • Inherit from MailHost instead of SimpleItem [saily]

  • Implement the secureSend method [saily]

0.3 (2011-04-04)

  • Add **kwargs to MockMailHost’s send method to support mto, mfrom, … keyword arguments as default MailHost does. [saily]

  • Added file for generic setup various handlers [sureshvv]

0.2 (2010-05-21)

  • Added tests [sureshvv]

0.1 (2010-05-16)

  • Initial release [sureshvv]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

collective.MockMailHost-2.0.0.tar.gz (17.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

collective.MockMailHost-2.0.0-py2.py3-none-any.whl (11.8 kB view details)

Uploaded Python 2Python 3

File details

Details for the file collective.MockMailHost-2.0.0.tar.gz.

File metadata

  • Download URL: collective.MockMailHost-2.0.0.tar.gz
  • Upload date:
  • Size: 17.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.1.0 requests-toolbelt/0.8.0 tqdm/4.19.4 CPython/2.7.14

File hashes

Hashes for collective.MockMailHost-2.0.0.tar.gz
Algorithm Hash digest
SHA256 b47d431d65818ebf8f2cffd0ccc05677822645941f5f90b10e83bf947a86c4e2
MD5 e1b0bc08af3103cf345a2a2270eb60ba
BLAKE2b-256 b205626b44c87b7a5d10ef41cd3e1418e1fe192a1e9309c9f87e088b94eab628

See more details on using hashes here.

File details

Details for the file collective.MockMailHost-2.0.0-py2.py3-none-any.whl.

File metadata

  • Download URL: collective.MockMailHost-2.0.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 11.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.1.0 requests-toolbelt/0.8.0 tqdm/4.19.4 CPython/2.7.14

File hashes

Hashes for collective.MockMailHost-2.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 c1d85563b086cdb21b22a6a7512811768f53ffed2db28502c37e9ce876caf5bd
MD5 0a448d44a2d5aad92a87256f3a617414
BLAKE2b-256 b7933930247bebc412a54f1170c67127cf0429770d57db7676e023e84f65d910

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page