Esempio n. 1
0
class TestStorage(TestCase):

    layer = FTW_DOWNLOADTOKEN_FUNCTIONAL_TESTING

    def setUp(self):
        self.portal = self.layer['portal']
        self.mails = Mailing(self.portal)
        self.mails.set_up()

        self.storage = IDownloadTokenStorage(self.portal)

        wftool = getToolByName(self.portal, 'portal_workflow')
        wftool.setChainForPortalTypes(('Folder',),
                                      ('plone_workflow',))
        transaction.commit()

        folder = create(Builder('folder').in_state('private'))
        self.file_ = create(Builder('file')
            .titled('\xc3\xa4 file')
            .with_dummy_content()
            .within(folder))

    def tearDown(self):
        Mailing(self.layer['portal']).tear_down()

    @browsing
    def test_send_mail_form(self, browser):
        browser.login().visit(self.file_, view='send-mail-form')
        browser.fill({'Recipients': '*****@*****.**'})
        browser.find('Send').click()

        self.assertEquals(1,
                          len(self.mails.get_messages()),
                          'Expect one message')

        self.assertEquals('{0}/view'.format(self.file_.absolute_url()),
                          browser.url)

    @browsing
    def test_send_mail_journalized(self, browser):
        eventtesting.clearEvents()
        browser.login().visit(self.file_, view='send-mail-form')
        browser.fill({'Recipients': '*****@*****.**',
                      'Comment': 'Test'})
        browser.find('Send').click()
        events = [e for e in eventtesting.getEvents()
                  if IJournalEntryEvent.providedBy(e)]
        self.assertEqual(1, len(events))
        self.assertIn(
            '*****@*****.**',
            self.file_.translate(events[0].action))
        self.assertEqual(u'Test', events[0].comment)

    @browsing
    def test_cancel_send_mail_form(self, browser):
        browser.login().visit(self.file_, view='send-mail-form')
        browser.find('Cancel').click()

        self.assertEquals(0,
                          len(self.mails.get_messages()),
                          'Expect one message')

        self.assertEquals('{0}/view'.format(self.file_.absolute_url()),
                          browser.url)

    @browsing
    def test_link_in_mail(self, browser):
        browser.login().visit(self.file_, view='send-mail-form')
        browser.fill({'Recipients': '*****@*****.**'})
        browser.find('Send').click()

        mail = self.mails.pop()
        url = get_link_from_email(mail)
        browser.logout().open(url)
        self.assertEquals('Test data', browser.contents)

        with self.assertRaises(Unauthorized):
            browser.visit(self.file_)

    @browsing
    def test_multiple_recipients(self, browser):
        browser.login().visit(self.file_, view='send-mail-form')
        browser.fill({'Recipients': '[email protected]\[email protected]'})
        browser.find('Send').click()

        self.assertEquals(2,
                          len(self.mails.get_messages()),
                          'Expect two messages')

        self.assertEquals(2,
                          len(self.storage.get_storage()),
                          'Expect two items')

    @browsing
    def test_send_mail_form_valid_email_addresses(self, browser):
        browser.login().visit(self.file_, view='send-mail-form')
        browser.fill({'Recipients': 'email@example\[email protected]'})
        browser.find('Send').click()

        statusmessages.error_messages()
        self.assertFalse(len(self.storage.get_storage()), 'Expect no tokens.')

        browser.fill({'Recipients': u'em\xe4il@example'})
        statusmessages.error_messages()