def afterSetUp(self): super(OutdatedToolsTests, self).afterSetUp() self.loginAsPortalOwner() sector = createSector(self.portal) sector.contact_name = u'Sectör NL' sector.contact_email = u'*****@*****.**' survey = addSurvey(sector, BASIC_SURVEY) nl = sector.aq_parent # User invalid emails to skip an event handler nl.invokeFactory( 'euphorie.countrymanager', 'nl-cm-1', title=u'Country Mänager 1', contact_email='invalid_email1', ) nl.invokeFactory( 'euphorie.countrymanager', 'nl-cm-2', title=u'Country Mänager 2', contact_email='invalid_email2', ) outdated_client_survey = publish.CopyToClient(survey) # Index the object with an older modified date outdated_client_survey.reindexObject() outdated_client_survey.setModificationDate('2013') outdated_client_survey.reindexObject(idxs=['modified']) sector_de = createSector(self.portal, id='sector_de', country='de') survey_de = addSurvey(sector_de, BASIC_SURVEY) client_survey_de = publish.CopyToClient(survey_de) self.mail_fixture = MockMailFixture() self.portal.email_from_address = "*****@*****.**" self.portal.email_from_name = "Euphorie website"
def afterSetUp(self): super(OutdatedToolsTests, self).afterSetUp() self.loginAsPortalOwner() sector = createSector(self.portal) sector.contact_name = "Sectör NL" sector.contact_email = "*****@*****.**" survey = addSurvey(sector, BASIC_SURVEY) nl = sector.aq_parent # User invalid emails to skip an event handler nl.invokeFactory( "euphorie.countrymanager", "nl-cm-1", title="Country Mänager 1", contact_email="invalid_email1", ) nl.invokeFactory( "euphorie.countrymanager", "nl-cm-2", title="Country Mänager 2", contact_email="invalid_email2", ) outdated_client_survey = publish.CopyToClient(survey) # Index the object with an older modified date outdated_client_survey.reindexObject() outdated_client_survey.setModificationDate("2013") outdated_client_survey.reindexObject(idxs=["modified"]) sector_de = createSector(self.portal, id="sector_de", country="de") survey_de = addSurvey(sector_de, BASIC_SURVEY) publish.CopyToClient(survey_de) self.mail_fixture = MockMailFixture() self.portal.email_from_address = "*****@*****.**" self.portal.email_from_name = "Euphorie website"
def test_token_expires_after_12_hours(self): self.add_dummy_survey() addAccount() mail_fixture = MockMailFixture() browser = self.get_browser() url = self.portal.client.nl.absolute_url() browser.open(url + "/@@login") browser.getLink("I forgot my password").click() browser.getControl( name="form.widgets.email").value = "*****@*****.**" browser.getControl(name="form.buttons.save").click() args = mail_fixture.storage[0][0] mail = args[0] mail_text = "".join([ (part.get_payload(decode=True) or b"").decode(part.get_content_charset("iso-8859-1")) for part in mail.walk() ]) token = re.search("passwordreset/(\\S*)", mail_text).group(1) ppr = api.portal.get_tool("portal_password_reset") _, expiry = ppr._requests[token] self.assertLessEqual( expiry, datetime.datetime.now() + datetime.timedelta(hours=12))
def setUp(self): super(NewEmailTests, self).setUp() self.loginAsPortalOwner() addSurvey(self.portal, BASIC_SURVEY) survey = self.portal.client["nl"]["ict"]["software-development"] self.browser = self.get_browser() self.browser.open(survey.absolute_url()) registerUserInClient(self.browser) self._mail_fixture = MockMailFixture() self.email_send = self._mail_fixture.storage
def setUp(self): from Products.Five.testbrowser import Browser from euphorie.client.tests.utils import addSurvey from euphorie.client.tests.utils import registerUserInClient from euphorie.client.tests.utils import MockMailFixture from euphorie.content.tests.utils import BASIC_SURVEY super(NewEmailTests, self).setUp() self.loginAsPortalOwner() addSurvey(self.portal, BASIC_SURVEY) survey = self.portal.client["nl"]["ict"]["software-development"] self.browser = Browser() self.browser.open(survey.absolute_url()) registerUserInClient(self.browser) self._mail_fixture = MockMailFixture() self.email_send = self._mail_fixture.storage
def test_token_invalid_after_use(self): self.add_dummy_survey() addAccount() mail_fixture = MockMailFixture() browser = self.get_browser() url = self.portal.client.nl.absolute_url() browser.open(url + "/@@login") browser.getLink("I forgot my password").click() browser.getControl( name="form.widgets.email").value = "*****@*****.**" browser.getControl(name="form.buttons.save").click() args = mail_fixture.storage[0][0] mail = args[0] mail_text = "".join([ (part.get_payload(decode=True) or b"").decode(part.get_content_charset("iso-8859-1")) for part in mail.walk() ]) reset_url = re.search("http.*passwordreset/\\S*", mail_text).group(0) browser.open(reset_url) browser.getControl( name="form.widgets.new_password").value = "Test12345678" browser.getControl(name="form.widgets.new_password_confirmation" ).value = "Test12345678" browser.getControl(name="form.buttons.save").click() self.assertIn("success", browser.contents) # Token has been used already - second time should fail browser.open(reset_url) self.assertIn("Invalid security token", browser.contents) # You're free to fill in the form but it won't work browser.getControl( name="form.widgets.new_password").value = "Test12345670" browser.getControl(name="form.widgets.new_password_confirmation" ).value = "Test12345670" browser.getControl(name="form.buttons.save").click() self.assertNotIn("success", browser.contents)
def test_token_expired(self): self.add_dummy_survey() addAccount() mail_fixture = MockMailFixture() browser = self.get_browser() url = self.portal.client.nl.absolute_url() browser.open(url + "/@@login") browser.getLink("I forgot my password").click() browser.getControl( name="form.widgets.email").value = "*****@*****.**" browser.getControl(name="form.buttons.save").click() args = mail_fixture.storage[0][0] mail = args[0] mail_text = "".join([ (part.get_payload(decode=True) or b"").decode(part.get_content_charset("iso-8859-1")) for part in mail.walk() ]) token = re.search("passwordreset/(\\S*)", mail_text).group(1) # fake that the token has expired ppr = api.portal.get_tool("portal_password_reset") ppr._requests[token] = (ppr._requests[token][0], datetime.datetime(2001, 1, 1)) ppr._p_changed = 1 transaction.commit() reset_url = re.search("http.*passwordreset/\\S*", mail_text).group(0) browser.open(reset_url) self.assertIn("Invalid security token", browser.contents) # You're free to fill in the form but it won't work browser.getControl( name="form.widgets.new_password").value = "Test12345678" browser.getControl(name="form.widgets.new_password_confirmation" ).value = "Test12345678" browser.getControl(name="form.buttons.save").click() self.assertNotIn("success", browser.contents) self.assertIn("Invalid security token", browser.contents)
def test_email(self): self.add_dummy_survey() addAccount() mail_fixture = MockMailFixture() browser = self.get_browser() browser.open(self.portal.client.nl.absolute_url() + "/@@login") browser.getLink("I forgot my password").click() browser.getControl( name="form.widgets.email").value = "*****@*****.**" browser.getControl(name="form.buttons.save").click() self.assertEqual(len(mail_fixture.storage), 1) (args, kw) = mail_fixture.storage[0] (mail, mto, mfrom) = args[:3] self.assertEqual(mfrom, "*****@*****.**") self.assertEqual(mto, "*****@*****.**") self.assertEqual( six.text_type(mail["Subject"]), "OiRA password reset instructions", ) body = (mail.get_payload(0).get_payload(decode=True).decode( mail.get_content_charset("utf-8"))) self.assertTrue("/passwordreset/" in body)
def testEmail(self): from euphorie.client.tests.utils import MockMailFixture from euphorie.client.tests.utils import addAccount self.addDummySurvey() addAccount() mail_fixture = MockMailFixture() self.portal.email_from_address = "*****@*****.**" self.portal.email_from_name = "Euphorie website" browser = Browser() browser.open(self.portal.client.nl.absolute_url()) browser.getLink('Login').click() browser.getLink("I forgot my password").click() browser.getControl(name="loginname").value = "*****@*****.**" browser.getControl(name="next").click() self.assertEqual(len(mail_fixture.storage), 1) (args, kw) = mail_fixture.storage[0] (mail, mto, mfrom) = args[:3] self.assertEqual(mfrom, "*****@*****.**") self.assertEqual(mto, "*****@*****.**") self.assertEqual(unicode(mail["Subject"]), u"OiRA registration reminder") body = mail.get_payload(0).get_payload(decode=True)\ .decode(mail.get_content_charset("utf-8")) self.failUnless(u"Øle" in body)