Exemple #1
0
    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"
Exemple #3
0
    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))
Exemple #4
0
 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
Exemple #5
0
 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
Exemple #6
0
    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)
Exemple #7
0
    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)
Exemple #8
0
 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)
Exemple #9
0
 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)