def testExecuteNoSource(self):
     self.loginAsPortalOwner()
     sm = getSiteManager(self.portal)
     sm.unregisterUtility(provided=IMailHost)
     dummyMailHost = DummySecureMailHost('dMailhost')
     sm.registerUtility(dummyMailHost, IMailHost)
     e = MailFromFieldAction()
     e.message = 'Document created !'
     e.fieldName = 'foo_attr'
     e.target = 'object'
     self.folder.foo_attr = '*****@*****.**'
     ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                          IExecutable)
     self.assertRaises(ValueError, ex)
     # if we provide a site mail address this won't fail anymore
     sm.manage_changeProperties({'email_from_name': 'The Big Boss',
                                 'email_from_address': '*****@*****.**',
                                 })
     ex()
     self.failUnless(isinstance(dummyMailHost.sent[0], MIMEText))
     mailSent = dummyMailHost.sent[0]
     self.assertEqual('text/plain; charset="utf-8"',
                     mailSent.get('Content-Type'))
     self.assertEqual("*****@*****.**", mailSent.get('To'))
     self.assertEqual("The Big Boss <*****@*****.**>",
                      mailSent.get('From'))
     self.assertEqual("Document created !",
                      mailSent.get_payload(decode=True))
 def testExecuteFolderModify(self):
     # can happen as rules are not triggered on the rule root itself
     self.loginAsPortalOwner()
     self.folder.foo_property = '*****@*****.**'
     sm = getSiteManager(self.portal)
     sm.unregisterUtility(provided=IMailHost)
     dummyMailHost = DummySecureMailHost('dMailhost')
     sm.registerUtility(dummyMailHost, IMailHost)
     e = MailFromFieldAction()
     e.source = "*****@*****.**"
     e.fieldName = 'foo_property'
     e.target = 'object'
     e.message = u"Còntènt '${title}' created in ${url} - Section is '${section_name}' (${section_url}) !"
     ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder)),
                          IExecutable)
     ex()
     self.failUnless(isinstance(dummyMailHost.sent[0], MIMEText))
     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("C\xc3\xb2nt\xc3\xa8nt 'C\xc3\xa0rtella' created in http://nohost/plone/target - "
                      "Section is 'C\xc3\xa0rtella' (http://nohost/plone/target) !",
                      mailSent.get_payload(decode=True))
 def testExecuteEmptyValue(self):
     self.loginAsPortalOwner()
     self.folder.foo_attr = ''
     sm = getSiteManager(self.portal)
     sm.unregisterUtility(provided=IMailHost)
     dummyMailHost = DummySecureMailHost('dMailhost')
     sm.registerUtility(dummyMailHost, IMailHost)
     e = MailFromFieldAction()
     e.source = "*****@*****.**"
     e.fieldName = 'foo_attr'
     e.target = 'object'
     e.message = u"Còntènt '${title}' created in ${url} - Section is '${section_name}' (${section_url}) !"
     ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                          IExecutable)
     ex()
     self.assertEqual(dummyMailHost.sent, [])
 def testExecuteSimpleByMethod(self):
     self.loginAsPortalOwner()
     self.folder.setDescription('*****@*****.**')
     sm = getSiteManager(self.portal)
     sm.unregisterUtility(provided=IMailHost)
     dummyMailHost = DummySecureMailHost('dMailhost')
     sm.registerUtility(dummyMailHost, IMailHost)
     e = MailFromFieldAction()
     e.source = "*****@*****.**"
     e.fieldName = 'Description'
     e.target = 'object'
     e.message = u"Còntènt '${title}' created in ${url} - Section is '${section_name}' (${section_url}) !"
     ex = getMultiAdapter((self.folder, e, DummyEvent(self.folder.d1)),
                          IExecutable)
     ex()
     self.failUnless(isinstance(dummyMailHost.sent[0], MIMEText))
     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("C\xc3\xb2nt\xc3\xa8nt 'D\xc3\xb2cumento' created in http://nohost/plone/target/d1 - "
                      "Section is 'C\xc3\xa0rtella' (http://nohost/plone/target) !",
                      mailSent.get_payload(decode=True))