Esempio n. 1
0
 def testExecuteNoSource(self):
     dummyMailHost = self._setup_mockmail()
     e = MailAction()
     e.recipients = '[email protected],[email protected]'
     e.message = 'Document created !'
     ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                          IExecutable)
     # this no longer errors since it breaks usability
     self.assertTrue(ex)
     # and will return False for the unsent message
     self.assertEqual(ex(), False)
     # if we provide a site mail address the message sends correctly
     registry = getUtility(IRegistry)
     mail_settings = registry.forInterface(IMailSchema, prefix='plone')
     mail_settings.email_from_address = '*****@*****.**'
     mail_settings.email_from_name = u'plone@rulez'
     ex()
     self.assertEqual(len(dummyMailHost.messages), 2)
     mailSent = message_from_string(dummyMailHost.messages[0])
     self.assertEqual('text/plain; charset="utf-8"',
                      mailSent.get('Content-Type'))
     self.assertIn(mailSent.get('To'), ['*****@*****.**', '*****@*****.**'])
     self.assertEqual('"plone@rulez" <*****@*****.**>',
                      mailSent.get('From'))
     self.assertEqual('Document created !', mailSent.get_payload())
     self._teardown_mockmail()
 def testExecuteMultiRecipients(self):
     self.loginAsPortalOwner()
     sm = getSiteManager(self.portal)
     sm.unregisterUtility(provided=IMailHost)
     dummyMailHost = DummyMailHost('dMailhost')
     sm.registerUtility(dummyMailHost, IMailHost)
     e = MailAction()
     e.source = '*****@*****.**'
     e.recipients = '[email protected],[email protected]'
     e.message = 'Document created !'
     ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                          IExecutable)
     ex()
     self.assertEqual(len(dummyMailHost.sent), 2)
     self.failUnless(isinstance(dummyMailHost.sent[0], Message))
     mailSent = dummyMailHost.sent[0]
     self.assertEqual('text/plain; charset="utf-8"',
                     mailSent.get('Content-Type'))
     self.assertEqual('*****@*****.**', mailSent.get('To'))
     self.assertEqual('*****@*****.**', mailSent.get('From'))
     self.assertEqual('Document created !', mailSent.get_payload(decode=True))
     mailSent = dummyMailHost.sent[1]
     self.assertEqual('text/plain; charset="utf-8"',
                     mailSent.get('Content-Type'))
     self.assertEqual('*****@*****.**', mailSent.get('To'))
     self.assertEqual('*****@*****.**', mailSent.get('From'))
     self.assertEqual('Document created !', mailSent.get_payload(decode=True))
Esempio n. 3
0
 def testExecuteMultiRecipients(self):
     dummyMailHost = self._setup_mockmail()
     e = MailAction()
     e.source = '*****@*****.**'
     e.recipients = '[email protected],[email protected]'
     e.message = 'Document created !'
     ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                          IExecutable)
     ex()
     self.assertEqual(len(dummyMailHost.messages), 2)
     # in py3 the order of mails is non-determininistic
     # because sending iterates over a set of recipients
     for msg in dummyMailHost.messages:
         if '*****@*****.**' in msg:
             mailSent1 = message_from_string(msg)
         else:
             mailSent2 = message_from_string(msg)
     self.assertEqual('text/plain; charset="utf-8"',
                      mailSent1.get('Content-Type'))
     self.assertEqual('*****@*****.**', mailSent1.get('To'))
     self.assertEqual('*****@*****.**', mailSent1.get('From'))
     self.assertEqual('Document created !', mailSent1.get_payload())
     self.assertEqual('text/plain; charset="utf-8"',
                      mailSent2.get('Content-Type'))
     self.assertEqual('*****@*****.**', mailSent2.get('To'))
     self.assertEqual('*****@*****.**', mailSent2.get('From'))
     self.assertEqual('Document created !', mailSent2.get_payload())
     self._teardown_mockmail()
Esempio n. 4
0
 def testExecuteMultiRecipients(self):
     dummyMailHost = self._setup_mockmail()
     e = MailAction()
     e.source = '*****@*****.**'
     e.recipients = '[email protected],[email protected]'
     e.message = 'Document created !'
     ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                          IExecutable)
     ex()
     self.assertEqual(len(dummyMailHost.messages), 2)
     mailSent = message_from_string(dummyMailHost.messages[0])
     self.assertEqual('text/plain; charset="utf-8"',
                      mailSent.get('Content-Type'))
     self.assertEqual('*****@*****.**', mailSent.get('To'))
     self.assertEqual('*****@*****.**', mailSent.get('From'))
     self.assertEqual('Document created !',
                      mailSent.get_payload(decode=True))
     mailSent = message_from_string(dummyMailHost.messages[1])
     self.assertEqual('text/plain; charset="utf-8"',
                      mailSent.get('Content-Type'))
     self.assertEqual('*****@*****.**', mailSent.get('To'))
     self.assertEqual('*****@*****.**', mailSent.get('From'))
     self.assertEqual('Document created !',
                      mailSent.get_payload(decode=True))
     self._teardown_mockmail()
 def testExecuteNoSource(self):
     self.loginAsPortalOwner()
     sm = getSiteManager(self.portal)
     sm.unregisterUtility(provided=IMailHost)
     dummyMailHost = DummyMailHost('dMailhost')
     sm.registerUtility(dummyMailHost, IMailHost)
     e = MailAction()
     e.recipients = '[email protected],[email protected]'
     e.message = 'Document created !'
     ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                          IExecutable)
     # this no longer errors since it breaks usability
     self.failUnless(ex)
     # and will return False for the unsent message
     self.assertEqual(ex(), False)
     # if we provide a site mail address the message sends correctly
     sm.manage_changeProperties({'email_from_address': '*****@*****.**', 'email_from_name': 'plone@rulez'})
     ex()
     self.failUnless(isinstance(dummyMailHost.sent[0], Message))
     mailSent = dummyMailHost.sent[0]
     self.assertEqual('text/plain; charset="utf-8"',
                     mailSent.get('Content-Type'))
     self.assertEqual("*****@*****.**", mailSent.get('To'))
     self.assertEqual('"plone@rulez" <*****@*****.**>',
                      mailSent.get('From'))
     self.assertEqual("Document created !",
                      mailSent.get_payload(decode=True))
 def testExecuteMultiRecipients(self):
     dummyMailHost = self._setup_mockmail()
     e = MailAction()
     e.source = '*****@*****.**'
     e.recipients = '[email protected],[email protected]'
     e.message = 'Document created !'
     ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                          IExecutable)
     ex()
     self.assertEqual(len(dummyMailHost.messages), 2)
     # in py3 the order of mails is non-determininistic
     # because sending iterates over a set of recipients
     for msg in dummyMailHost.messages:
         if '*****@*****.**' in msg:
             mailSent1 = message_from_string(msg)
         else:
             mailSent2 = message_from_string(msg)
     self.assertEqual('text/plain; charset="utf-8"',
                      mailSent1.get('Content-Type'))
     self.assertEqual('*****@*****.**', mailSent1.get('To'))
     self.assertEqual('*****@*****.**', mailSent1.get('From'))
     self.assertEqual('Document created !',
                      mailSent1.get_payload())
     self.assertEqual('text/plain; charset="utf-8"',
                      mailSent2.get('Content-Type'))
     self.assertEqual('*****@*****.**', mailSent2.get('To'))
     self.assertEqual('*****@*****.**', mailSent2.get('From'))
     self.assertEqual('Document created !',
                      mailSent2.get_payload())
     self._teardown_mockmail()
Esempio n. 7
0
 def testExecuteNoSource(self):
     self.loginAsPortalOwner()
     sm = getSiteManager(self.portal)
     sm.unregisterUtility(provided=IMailHost)
     dummyMailHost = DummyMailHost('dMailhost')
     sm.registerUtility(dummyMailHost, IMailHost)
     e = MailAction()
     e.recipients = '[email protected],[email protected]'
     e.message = 'Document created !'
     ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                          IExecutable)
     # this no longer errors since it breaks usability
     self.assertTrue(ex)
     # and will return False for the unsent message
     self.assertEqual(ex(), False)
     # if we provide a site mail address the message sends correctly
     sm.manage_changeProperties({'email_from_address': '*****@*****.**', 'email_from_name': 'plone@rulez'})
     ex()
     self.assertTrue(isinstance(dummyMailHost.sent[0], Message))
     mailSent = dummyMailHost.sent[0]
     self.assertEqual('text/plain; charset="utf-8"',
                     mailSent.get('Content-Type'))
     self.assertEqual("*****@*****.**", mailSent.get('To'))
     self.assertEqual('"plone@rulez" <*****@*****.**>',
                      mailSent.get('From'))
     self.assertEqual("Document created !",
                      mailSent.get_payload(decode=True))
 def testExecuteNoSource(self):
     dummyMailHost = self._setup_mockmail()
     e = MailAction()
     e.recipients = '[email protected],[email protected]'
     e.message = 'Document created !'
     ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                          IExecutable)
     # this no longer errors since it breaks usability
     self.assertTrue(ex)
     # and will return False for the unsent message
     self.assertEqual(ex(), False)
     # if we provide a site mail address the message sends correctly
     registry = getUtility(IRegistry)
     mail_settings = registry.forInterface(IMailSchema, prefix='plone')
     mail_settings.email_from_address = '*****@*****.**'
     mail_settings.email_from_name = u'plone@rulez'
     ex()
     self.assertEqual(len(dummyMailHost.messages), 2)
     mailSent = message_from_string(dummyMailHost.messages[0])
     self.assertEqual('text/plain; charset="utf-8"',
                      mailSent.get('Content-Type'))
     self.assertIn(mailSent.get('To'), ['*****@*****.**', '*****@*****.**'])
     self.assertEqual('"plone@rulez" <*****@*****.**>',
                      mailSent.get('From'))
     self.assertEqual('Document created !',
                      mailSent.get_payload())
     self._teardown_mockmail()
Esempio n. 9
0
 def testExecuteMultiRecipients(self):
     self.loginAsPortalOwner()
     sm = getSiteManager(self.portal)
     sm.unregisterUtility(provided=IMailHost)
     dummyMailHost = DummyMailHost('dMailhost')
     sm.registerUtility(dummyMailHost, IMailHost)
     e = MailAction()
     e.source = '*****@*****.**'
     e.recipients = '[email protected],[email protected]'
     e.message = 'Document created !'
     ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                          IExecutable)
     ex()
     self.assertEqual(len(dummyMailHost.sent), 2)
     self.assertTrue(isinstance(dummyMailHost.sent[0], Message))
     mailSent = dummyMailHost.sent[0]
     self.assertEqual('text/plain; charset="utf-8"',
                     mailSent.get('Content-Type'))
     self.assertEqual('*****@*****.**', mailSent.get('To'))
     self.assertEqual('*****@*****.**', mailSent.get('From'))
     self.assertEqual('Document created !', mailSent.get_payload(decode=True))
     mailSent = dummyMailHost.sent[1]
     self.assertEqual('text/plain; charset="utf-8"',
                     mailSent.get('Content-Type'))
     self.assertEqual('*****@*****.**', mailSent.get('To'))
     self.assertEqual('*****@*****.**', mailSent.get('From'))
     self.assertEqual('Document created !', mailSent.get_payload(decode=True))
    def testExecute(self):
        self.loginAsPortalOwner()
        self.portal.portal_membership.getAuthenticatedMember().setProperties(email='*****@*****.**')
        sm = getSiteManager(self.portal)
        sm.unregisterUtility(provided=IMailHost)
        dummyMailHost = DummyMailHost('dMailhost')
        sm.registerUtility(dummyMailHost, IMailHost)
        e = MailAction()
        e.source = "$user_email"
        e.recipients = "[email protected], $reviewer_emails, $manager_emails, $member_emails"
        e.message = "P\xc3\xa4ge '${title}' created in ${url} !".decode('utf-8')
        ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                             IExecutable)
        ex()
        self.failUnless(isinstance(dummyMailHost.sent[0], Message))
        mailSent = dummyMailHost.sent[0]
        self.assertEqual('text/plain; charset="utf-8"',
                        mailSent.get('Content-Type'))
        self.assertEqual("*****@*****.**", mailSent.get('To'))
        self.assertEqual("*****@*****.**", mailSent.get('From'))
        # The output message should be a utf-8 encoded string
        self.assertEqual("P\xc3\xa4ge 'W\xc3\xa4lkommen' created in http://nohost/plone/Members/test_user_1_/d1 !",
                         mailSent.get_payload(decode=True))

        # check interpolation of $reviewer_emails
        mailSent = dummyMailHost.sent[1]
        self.assertEqual("*****@*****.**", mailSent.get('To'))

        # check interpolation of $manager_emails
        mailSent = dummyMailHost.sent[2]
        self.assertEqual("*****@*****.**", mailSent.get('To'))

        # check interpolation of $member_emails
        members = set((mailSent.get('To') for mailSent in dummyMailHost.sent[2:7]))
        self.assertEqual(set(["*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", ]), members)
Esempio n. 11
0
    def testExecute(self):
        self.loginAsPortalOwner()
        self.portal.portal_membership.getAuthenticatedMember().setProperties(email='*****@*****.**')
        sm = getSiteManager(self.portal)
        sm.unregisterUtility(provided=IMailHost)
        dummyMailHost = DummyMailHost('dMailhost')
        sm.registerUtility(dummyMailHost, IMailHost)
        e = MailAction()
        e.source = "$user_email"
        e.recipients = "[email protected], [email protected], $reviewer_emails, $manager_emails, $member_emails"
        e.message = "P\xc3\xa4ge '${title}' created in ${url} !".decode('utf-8')
        ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                             IExecutable)
        ex()
        self.assertTrue(isinstance(dummyMailHost.sent[0], Message))

        sent_mails = dict([(mailSent.get('To'), mailSent) for mailSent in dummyMailHost.sent])

        mailSent = sent_mails['*****@*****.**']
        self.assertEqual('text/plain; charset="utf-8"',
                        mailSent.get('Content-Type'))
        self.assertEqual("*****@*****.**", mailSent.get('From'))
        # The output message should be a utf-8 encoded string
        self.assertEqual("P\xc3\xa4ge 'W\xc3\xa4lkommen' created in http://nohost/plone/Members/test_user_1_/d1 !",
                         mailSent.get_payload(decode=True))

        # check interpolation of $reviewer_emails
        self.assertTrue("*****@*****.**" in sent_mails)

        # check interpolation of $manager_emails
        self.assertTrue("*****@*****.**" in sent_mails)

        # check interpolation of $member_emails
        self.assertEqual(set(["*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", ]),
                         set(sent_mails.keys()))
 def testExecuteBadMailHost(self):
     # Our goal is that mailing errors should not cause exceptions
     self.loginAsPortalOwner()
     self.portal.portal_membership.getAuthenticatedMember().setProperties(email='*****@*****.**')
     e = MailAction()
     e.source = "$user_email"
     e.recipients = "[email protected], $reviewer_emails, $manager_emails, $member_emails"
     e.message = u"Päge '${title}' created in ${url} !"
     ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                          IExecutable)
     ex()
Esempio n. 13
0
 def testExecuteBadMailHost(self):
     # Our goal is that mailing errors should not cause exceptions
     self.loginAsPortalOwner()
     self.portal.portal_membership.getAuthenticatedMember().setProperties(email='*****@*****.**')
     e = MailAction()
     e.source = "$user_email"
     e.recipients = "[email protected], $reviewer_emails, $manager_emails, $member_emails"
     e.message = u"Päge '${title}' created in ${url} !"
     ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                          IExecutable)
     ex()
Esempio n. 14
0
 def testExecuteNoRecipients(self):
     # no recipient
     dummyMailHost = self._setup_mockmail()
     e = MailAction()
     e.source = '*****@*****.**'
     e.recipients = ''
     e.message = 'Document created !'
     ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                          IExecutable)
     ex()
     self.assertEqual(len(dummyMailHost.messages), 0)
     self._teardown_mockmail()
 def testExecuteNoRecipients(self):
     # no recipient
     dummyMailHost = self._setup_mockmail()
     e = MailAction()
     e.source = '*****@*****.**'
     e.recipients = ''
     e.message = 'Document created !'
     ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                          IExecutable)
     ex()
     self.assertEqual(len(dummyMailHost.messages), 0)
     self._teardown_mockmail()
 def testExecuteNoRecipients(self):
     # no recipient
     self.loginAsPortalOwner()
     sm = getSiteManager(self.portal)
     sm.unregisterUtility(provided=IMailHost)
     dummyMailHost = DummyMailHost('dMailhost')
     sm.registerUtility(dummyMailHost, IMailHost)
     e = MailAction()
     e.source = '*****@*****.**'
     e.recipients = ''
     e.message = 'Document created !'
     ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                          IExecutable)
     ex()
     self.assertEqual(len(dummyMailHost.sent), 0)
Esempio n. 17
0
 def testExecuteNoRecipients(self):
     # no recipient
     self.loginAsPortalOwner()
     sm = getSiteManager(self.portal)
     sm.unregisterUtility(provided=IMailHost)
     dummyMailHost = DummyMailHost('dMailhost')
     sm.registerUtility(dummyMailHost, IMailHost)
     e = MailAction()
     e.source = '*****@*****.**'
     e.recipients = ''
     e.message = 'Document created !'
     ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                          IExecutable)
     ex()
     self.assertEqual(len(dummyMailHost.sent), 0)
    def testExecuteExcludeActor(self):
        dummyMailHost = self._setup_mockmail()
        self.portal.portal_membership.getAuthenticatedMember().setProperties(
            email='*****@*****.**')
        e = MailAction()
        e.source = '$user_email'
        e.exclude_actor = True
        e.recipients = '[email protected], [email protected]'
        e.message = u'A dummy event just happened !!!!!'
        ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                             IExecutable)
        ex()
        self.assertEqual(len(dummyMailHost.messages), 1)

        mailSent = message_from_string(dummyMailHost.messages[0])
        self.assertEqual('*****@*****.**', mailSent.get('To'))
        self._teardown_mockmail()
Esempio n. 19
0
    def testExecute(self):
        # this avoids sending mail as [email protected]
        self.loginAsPortalOwner()
        self.portal.portal_membership.getAuthenticatedMember().setProperties(
            email='*****@*****.**')
        dummyMailHost = self._setup_mockmail()
        e = MailAction()
        e.source = '$user_email'
        e.recipients = '[email protected], [email protected], $reviewer_emails, ' \
                       '$manager_emails, $member_emails'
        e.message = "P\xc3\xa4ge '${title}' created in ${url} !".decode(
            'utf-8')
        ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                             IExecutable)
        ex()
        sent_mails = {}
        for mail_sent in dummyMailHost.messages:
            mail_sent_msg = message_from_string(mail_sent)
            sent_mails[mail_sent_msg.get('To')] = mail_sent_msg

        mailSent = sent_mails['*****@*****.**']
        self.assertEqual('text/plain; charset="utf-8"',
                         mailSent.get('Content-Type'))
        self.assertEqual('*****@*****.**', mailSent.get('From'))
        # The output message should be a utf-8 encoded string
        self.assertEqual(
            "P\xc3\xa4ge 'W\xc3\xa4lkommen' created in "
            'http://nohost/plone/Members/test_user_1_/d1 !',
            mailSent.get_payload(decode=True))

        # check interpolation of $reviewer_emails
        self.assertTrue('*****@*****.**' in sent_mails)

        # check interpolation of $manager_emails
        self.assertTrue('*****@*****.**' in sent_mails)

        # check interpolation of $member_emails
        emails = [
            '*****@*****.**',
            '*****@*****.**',
            '*****@*****.**',
            '*****@*****.**',
            '*****@*****.**',
        ]
        self.assertEqual(set(emails), set(sent_mails.keys()))
        self._teardown_mockmail()
    def testExecute(self):
        # this avoids sending mail as [email protected]
        self.portal.portal_membership.getAuthenticatedMember().setProperties(
            email='*****@*****.**')
        dummyMailHost = self._setup_mockmail()
        e = MailAction()
        e.source = '$user_email'
        e.recipients = '[email protected], [email protected], $reviewer_emails, ' \
                       '$manager_emails, $member_emails'
        e.message = u"Päge '${title}' created in ${url} !"
        ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                             IExecutable)
        ex()
        sent_mails = {}
        for mail_sent in dummyMailHost.messages:
            mail_sent_msg = message_from_string(mail_sent)
            sent_mails[mail_sent_msg.get('To')] = mail_sent_msg

        mailSent = sent_mails['*****@*****.**']
        self.assertEqual('text/plain; charset="utf-8"',
                         mailSent.get('Content-Type'))
        self.assertEqual('*****@*****.**', mailSent.get('From'))
        # The output message should be a utf-8 encoded string
        self.assertEqual(
            u"Päge 'Wälkommen' created in http://nohost/plone/f1/d1 !",
            mailSent.get_payload(decode=True).decode('utf8'))

        # check interpolation of $reviewer_emails
        self.assertTrue('*****@*****.**' in sent_mails)

        # check interpolation of $manager_emails
        self.assertTrue('*****@*****.**' in sent_mails)

        # check interpolation of $member_emails
        emails = [
            '*****@*****.**',
            '*****@*****.**',
            '*****@*****.**',
            '*****@*****.**',
            '*****@*****.**',
        ]
        self.assertEqual(
            set(emails),
            set(sent_mails.keys()))
        self._teardown_mockmail()
Esempio n. 21
0
    def testExecuteExcludeActor(self):
        self.loginAsPortalOwner()
        sm = getSiteManager(self.portal)
        sm.unregisterUtility(provided=IMailHost)
        dummyMailHost = DummyMailHost('dMailhost')
        sm.registerUtility(dummyMailHost, IMailHost)
        self.portal.portal_membership.getAuthenticatedMember().setProperties(email='*****@*****.**')
        e = MailAction()
        e.source = "$user_email"
        e.exclude_actor = True
        e.recipients = "[email protected], [email protected]"
        e.message = u"A dummy event juste happened !!!!!"
        ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                             IExecutable)
        ex()
        self.assertEqual(len(dummyMailHost.sent), 1)

        mailSent = dummyMailHost.sent[0]
        self.assertEqual("*****@*****.**", mailSent.get('To'))
Esempio n. 22
0
    def send_mail(self, recipients='', subject='', message=''):

        msg = MailAction()

        msg.source = self.SENDER

        # If we're in debug mode, the email goes to the configured debug email.
        # Or, if we don't have recipients
        if self.debug or not recipients:
            msg.recipients = self.debug_email
        else:
            msg.recipients = recipients

        msg.subject = "%s: %s" % (self.SUBJECT_PREFIX, subject)
        msg.message = message

        # If we're in debug mode, log the message
        if self.debug:
            self.log(summary="DEBUG: Send email %s to %s" % (msg.subject, recipients))

        # Send the email and log error
        try:
            m = MailActionExecutor(self.context, msg, self.event)
            m()
        except:
            self.log(summary="Error sending email %s to %s" % (msg.subject, msg.recipients),
                     severity=ERROR)
Esempio n. 23
0
 def testExecuteMultiRecipients(self):
     dummyMailHost = self._setup_mockmail()
     e = MailAction()
     e.source = '*****@*****.**'
     e.recipients = '[email protected],[email protected]'
     e.message = 'Document created !'
     ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                          IExecutable)
     ex()
     self.assertEqual(len(dummyMailHost.messages), 2)
     mailSent = message_from_string(dummyMailHost.messages[0])
     self.assertEqual('text/plain; charset="utf-8"',
                      mailSent.get('Content-Type'))
     self.assertEqual('*****@*****.**', mailSent.get('To'))
     self.assertEqual('*****@*****.**', mailSent.get('From'))
     self.assertEqual('Document created !', mailSent.get_payload(decode=True))
     mailSent = message_from_string(dummyMailHost.messages[1])
     self.assertEqual('text/plain; charset="utf-8"',
                      mailSent.get('Content-Type'))
     self.assertEqual('*****@*****.**', mailSent.get('To'))
     self.assertEqual('*****@*****.**', mailSent.get('From'))
     self.assertEqual('Document created !', mailSent.get_payload(decode=True))
     self._teardown_mockmail()
Esempio n. 24
0
    def testExecute(self):
        self.loginAsPortalOwner()   # this avoids sending mail as [email protected]
        self.portal.portal_membership.getAuthenticatedMember().setProperties(
            email='*****@*****.**')
        dummyMailHost = self._setup_mockmail()
        e = MailAction()
        e.source = "$user_email"
        e.recipients = "[email protected], [email protected], $reviewer_emails, $manager_emails, $member_emails"   # noqa
        e.message = "P\xc3\xa4ge '${title}' created in ${url} !".decode('utf-8')
        ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                             IExecutable)
        ex()
        sent_mails = {}
        for mail_sent in dummyMailHost.messages:
            mail_sent_msg = message_from_string(mail_sent)
            sent_mails[mail_sent_msg.get('To')] = mail_sent_msg

        mailSent = sent_mails['*****@*****.**']
        self.assertEqual('text/plain; charset="utf-8"',
                         mailSent.get('Content-Type'))
        self.assertEqual("*****@*****.**", mailSent.get('From'))
        # The output message should be a utf-8 encoded string
        self.assertEqual(
            "P\xc3\xa4ge 'W\xc3\xa4lkommen' created in http://nohost/plone/Members/test_user_1_/d1 !",  # noqa
            mailSent.get_payload(decode=True))

        # check interpolation of $reviewer_emails
        self.assertTrue("*****@*****.**" in sent_mails)

        # check interpolation of $manager_emails
        self.assertTrue("*****@*****.**" in sent_mails)

        # check interpolation of $member_emails
        self.assertEqual(
            set(["*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", ]),  # noqa
            set(sent_mails.keys()))
        self._teardown_mockmail()
Esempio n. 25
0
    def testExecuteExcludeActor(self):
        dummyMailHost = self._setup_mockmail()
        self.portal.portal_membership.getAuthenticatedMember().setProperties(
            email='*****@*****.**')
        e = MailAction()
        e.source = '$user_email'
        e.exclude_actor = True
        e.recipients = '[email protected], [email protected]'
        e.message = u'A dummy event just happened !!!!!'
        ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                             IExecutable)
        ex()
        self.assertEqual(len(dummyMailHost.messages), 1)

        mailSent = message_from_string(dummyMailHost.messages[0])
        self.assertEqual('*****@*****.**', mailSent.get('To'))
        self._teardown_mockmail()
    def testExecuteExcludeActor(self):
        self.loginAsPortalOwner()
        sm = getSiteManager(self.portal)
        sm.unregisterUtility(provided=IMailHost)
        dummyMailHost = DummyMailHost('dMailhost')
        sm.registerUtility(dummyMailHost, IMailHost)
        self.portal.portal_membership.getAuthenticatedMember().setProperties(email='*****@*****.**')
        e = MailAction()
        e.source = "$user_email"
        e.exclude_actor = True
        e.recipients = "[email protected], [email protected]"
        e.message = u"A dummy event juste happened !!!!!"
        ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                             IExecutable)
        ex()
        self.assertEqual(len(dummyMailHost.sent), 1)

        mailSent = dummyMailHost.sent[0]
        self.assertEqual("*****@*****.**", mailSent.get('To'))
Esempio n. 27
0
 def testInvokeEditView(self):
     element = getUtility(IRuleAction, name='plone.actions.Mail')
     e = MailAction()
     editview = getMultiAdapter((e, self.folder.REQUEST),
                                name=element.editview)
     self.assertTrue(isinstance(editview, MailEditFormView))