Metadata-Version: 1.1
Name: collective.MockMailHost
Version: 0.7
Summary: Used for integration testing with Plone
Home-page: https://github.com/collective/collective.mockmailhost
Author: Suresh V.
Author-email: suresh@grafware.com
License: GPL
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()
        
        .. _Plone: http://plone.org
        .. _`plone.app.testing`: http://pypi.python.org/pypi/plone.app.testing
        
        Using a member-posting forum
        ============================
        
        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.
        
            >>> self.portal.error_log._ignored_exceptions = ()
            >>> self.portal.left_slots = self.portal.right_slots = []
            >>> workflow = self.portal.portal_workflow
        
        Validate mailhost replacement
        -----------------------------
        
            >>> self.portal.MailHost
            <MockMailHost at ...>
        
            >>> from Products.CMFCore.utils import getToolByName
            >>> getToolByName(self.portal, 'MailHost')
            <MockMailHost at ...>
        
            >>> from zope.component import getUtility
            >>> from Products.MailHost.interfaces import IMailHost
            >>> getUtility(IMailHost)
            <MockMailHost at ...>
        
        
        Send email
        ----------
        
            >>> to = "member@example.com"
            >>> from = "admin@example.com"
            >>> msg = """
            ...
            ... Dear Sir:
            ...
            ... Thank you"""
            >>> self.portal.MailHost.send(msg, to, from)
            >>> len(self.portal.MailHost.messages)
            1
            >>> print self.portal.MailHost.messages[0].as_string()
            ...
            To: member@example.com
            From: admin@example.com
            ...
            >>> print self.portal.MailHost.messages[0].as_string()
            ...
            Dear Sir:
            ...
            >>> self.portal.MailHost.reset()
            >>> len(self.portal.MailHost.messages)
            0
        
        
        Changelog
        =========
        
        0.7 (2013-07-05)
        ----------------
        
        - Nothing changed yet.
        
        
        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]
        
Platform: UNKNOWN
Classifier: Framework :: Plone
Classifier: Programming Language :: Python
