예제 #1
0
 def testInvalidDateDoesNotBreakRendering(self):
     import datetime
     from euphorie.content.tests.utils import BASIC_SURVEY
     from z3c.saconfig import Session
     from euphorie.client import model
     # Test for http://code.simplon.biz/tracker/tno-euphorie/ticket/150
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     browser = Browser()
     survey_url = self.portal.client.nl["ict"]["software-development"]\
             .absolute_url()
     browser.open(survey_url)
     registerUserInClient(browser)
     # Create a new survey session
     browser.getControl(name="title:utf8:ustring").value = \
             u"Sessiøn".encode("utf-8")
     browser.getControl(name="next").click()
     # Start the survey
     browser.getForm().submit()
     browser.getLink("Start Risk Identification").click()
     # Update the risk
     risk = Session.query(model.Risk).first()
     risk.identification = "no"
     risk.action_plans.append(model.ActionPlan(
         action_plan=u"Do something awesome",
         planning_start=datetime.date(1, 2, 3)))
     # Render the report
     browser.handleErrors = False
     browser.open("http://nohost/plone/client/nl/ict/"
                     "software-development/report/view")
예제 #2
0
 def testUnicodeReportFilename(self):
     from euphorie.content.tests.utils import BASIC_SURVEY
     # Test for http://code.simplon.biz/tracker/euphorie/ticket/156
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     browser = Browser()
     survey_url = self.portal.client.nl["ict"]["software-development"]\
             .absolute_url()
     browser.open(survey_url)
     registerUserInClient(browser)
     # Create a new survey session
     browser.getControl(name="title:utf8:ustring").value = \
             u"Sessiøn".encode("utf-8")
     browser.getControl(name="next").click()
     # Start the survey
     browser.getForm().submit()
     browser.getLink("Start Risk Identification").click()
     # Force creation of the company data
     browser.open("%s/report/company" % survey_url)
     # Download the report
     browser.handleErrors = False
     browser.open("%s/report/download" % survey_url)
     self.assertEqual(browser.headers.type, "application/rtf")
     self.assertEqual(browser.headers.get("Content-Disposition"),
             'attachment; filename="Action plan Sessi\xc3\xb8n.rtf"')
예제 #3
0
class TestCase(ptc.FunctionalTestCase):
    """ We use this base class for all the tests in this package. If necessary,
        we can put common utility or setup code in here. This applies to unit
        test cases. """
    _configure_portal = False

    def beforeTearDown(self):
        pass

    def afterSetUp(self):
        here = abspath(dirname(__file__))
        url = urllib.pathname2url(here)
        self.testsite = 'file://%s/test_staticsite' % url

        self.portal.error_log._ignored_exceptions = ()

        self.portal.acl_users.portal_role_manager.updateRolesList()

        self.portal.acl_users._doAddUser('manager', 'pass', ('Manager', ), [])
        self.login('manager')

        from Products.Five.testbrowser import Browser
        self.browser = Browser()
        #        self.setRoles(('Manager',))
        self.browser.open(self.portal.absolute_url() + '/login_form')
        self.browser.getControl(name='__ac_name').value = 'manager'
        self.browser.getControl(name='__ac_password').value = 'pass'
        self.browser.getControl(name='submit').click()
        self.browser.open(self.portal.absolute_url())
예제 #4
0
class TestCase(ptc.FunctionalTestCase):
    """ We use this base class for all the tests in this package. If necessary,
        we can put common utility or setup code in here. This applies to unit
        test cases. """
    _configure_portal = False

    def beforeTearDown(self):
        pass

    def afterSetUp(self):
        here = abspath(dirname(__file__))
        url = urllib.pathname2url(here)
        self.testsite = 'file://%s/test_staticsite' % url

        self.portal.error_log._ignored_exceptions = ()

        self.portal.acl_users.portal_role_manager.updateRolesList()

        self.portal.acl_users._doAddUser('manager', 'pass', ('Manager',), [])
        self.login('manager')



        from Products.Five.testbrowser import Browser
        self.browser = Browser()
#        self.setRoles(('Manager',))
        self.browser.open(self.portal.absolute_url()+'/login_form')
        self.browser.getControl(name='__ac_name').value = 'manager'
        self.browser.getControl(name='__ac_password').value = 'pass'
        self.browser.getControl(name='submit').click()
        self.browser.open(self.portal.absolute_url())
예제 #5
0
파일: base.py 프로젝트: espenak/fui.locker
class FuiLockerFunctionalTestCase(ptc.FunctionalTestCase):
	"""Test case class used for functional (doc-)tests """

	def afterSetUp(self):
		self.browser = Browser()

		# The following is useful when writing and debugging testself.browser tests. It lets
		# us see error messages properly.
		self.browser.handleErrors = False
		self.portal.error_log._ignored_exceptions = ()

		# We then turn off the various portlets, because they sometimes duplicate links
		# and text (e.g. the navtree, the recent recent items listing) that we wish to
		# test for in our own views. Having no portlets makes things easier.
		left_column = getUtility(IPortletManager, name=u"plone.leftcolumn")
		left_assignable = getMultiAdapter((self.portal, left_column), IPortletAssignmentMapping)
		for name in left_assignable.keys():
			del left_assignable[name]
		right_column = getUtility(IPortletManager, name=u"plone.rightcolumn")
		right_assignable = getMultiAdapter((self.portal, right_column), IPortletAssignmentMapping)
		for name in right_assignable.keys():
			del right_assignable[name]


	def loginAdminClick(self):
		portal_url = self.portal.absolute_url()
		self.browser.open(portal_url + '/login_form?came_from=' + portal_url)
		self.browser.getControl(name='__ac_name').value = portal_owner
		self.browser.getControl(name='__ac_password').value = default_password
		self.browser.getControl(name='submit').click()

	def logoutClick(self):
		portal_url = self.portal.absolute_url()
		self.browser.getLink("Log out").click()
예제 #6
0
class CKEditorTestCase(ptc.FunctionalTestCase):
    """base test case with convenience methods for all ckeditor tests"""
    def afterSetUp(self):
        super(CKEditorTestCase, self).afterSetUp()
        self.browser = Browser()
        self.uf = self.portal.acl_users
        self.uf.userFolderAddUser('root', 'secret', ['Manager'], [])
        self.ptool = getToolByName(self.portal, 'portal_properties')

    def loginAsManager(self, user='******', pwd='secret'):
        """points the browser to the login screen and logs in as user root with
           Manager role."""
        self.browser.open('http://nohost/plone/')
        self.browser.getLink('Log in').click()
        self.browser.getControl('Login Name').value = user
        self.browser.getControl('Password').value = pwd
        self.browser.getControl('Log in').click()

    class layer(PloneSite):
        @classmethod
        def setUp(cls):
            # doctests don't play nicely with ipython
            try:
                iphook = sys.displayhook
                sys.displayhook = sys.__displayhook__
            except:
                pass

        @classmethod
        def tearDown(cls):
            try:
                sys.displayhook = iphook
            except:
                pass
예제 #7
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)
예제 #8
0
    def testImageFromOtherSectorAccount(self):
        # http://code.simplon.biz/tracker/euphorie/ticket/143
        import re
        from euphorie.content.tests.utils import createSector
        from euphorie.content.tests.utils import addSurvey
        from Products.Five.testbrowser import Browser

        sector = createSector(self.portal, login="******")
        self.loginAsPortalOwner()
        survey = addSurvey(sector)
        createSector(self.portal, id="sector2", login="******", password="******")
        self.logout()
        browser = Browser()
        browser.open("%s/@@login" % self.portal.absolute_url())
        browser.getControl(name="__ac_name").value = "sector2"
        browser.getControl(name="__ac_password").value = "sector2"
        browser.getForm(id="loginForm").submit()
        risk = survey["1"]["2"]
        browser.open(risk.absolute_url())
        match = re.search(r'<div class="introduction">\s*<img[^>]+src="([^"]+)', browser.contents)
        self.assertTrue(match)
        image_url = match.group(1)
        browser.open(image_url)
        self.assertEqual(browser.isHtml, False)
        self.assertEqual(browser.headers.maintype, "image")
    def testUpdateModeInitialLoadAndSubmission(self):
        """Ensure that our Salesforce Adapter mapped objects
           find their way into the appropriate Salesforce.com
           instance.
        """
        self._createTestContact()

        # open a test browser on the initial form
        browser = Browser()
        browser.open('http://nohost/plone/ff1')
        
        # update the comments field
        self.assertEqual(browser.getControl(name='comments').value, 'PloneTestCase')
        browser.getControl(name='comments').value = 'PloneTestCaseChanged'
        
        # submit again
        browser.getControl('Submit').click()
        
        # we should only get one record, and the name should be changed
        res = self.salesforce.query(['Id','LastName'],self.ff1.contact_adapter.getSFObjectType(),
                                    "Email='*****@*****.**'")
        for item in res['records']:
            self._todelete.append(item['Id'])
        self.assertEqual(1, res['size'])
        self.assertEqual('PloneTestCaseChanged', res['records'][0]['LastName'])
def getBrowser(url):
    browser = Browser()
    browser.open(url)
    browser.getControl(name='__ac_name').value = portal_owner
    browser.getControl(name='__ac_password').value = default_password
    browser.getControl(name='submit').click()
    return browser
 def test_surveys_filtered_by_language(self):
     from euphorie.client.tests.utils import registerUserInClient
     survey = """<sector xmlns="http://xml.simplon.biz/euphorie/survey/1.0">
                   <title>Sector</title>
                   <survey>
                     <title>Survey</title>
                     <language>en</language>
                   </survey>
                 </sector>"""
     survey_nl = \
             """<sector xmlns="http://xml.simplon.biz/euphorie/survey/1.0">
                 <title>Branche</title>
                 <survey>
                   <title>Vragenlijst</title>
                   <language>nl</language>
                 </survey>
               </sector>"""
     self.loginAsPortalOwner()
     addSurvey(self.portal, survey)
     addSurvey(self.portal, survey_nl)
     browser = Browser()
     browser.open(self.portal.client.absolute_url())
     browser.getLink("Nederlands").click()
     registerUserInClient(browser, link="Registreer")
     self.assertEqual(
             browser.url,
             "http://nohost/plone/client/nl/?language=nl-NL")
     self.assertEqual(browser.getControl(name="survey").options,
             ["branche/vragenlijst"])
     browser.open(
             "%s?language=en" % self.portal.client["nl"].absolute_url())
     self.assertEqual(browser.getControl(name="survey").options,
             ["sector/survey"])
예제 #12
0
class CKEditorTestCase(ptc.FunctionalTestCase):
    """base test case with convenience methods for all ckeditor tests"""

    def afterSetUp(self):
        super(CKEditorTestCase, self).afterSetUp()
        self.browser = Browser()
        self.uf = self.portal.acl_users
        self.uf.userFolderAddUser('root', 'secret', ['Manager'], [])
        self.ptool = getToolByName(self.portal, 'portal_properties')

    def loginAsManager(self, user='******', pwd='secret'):
        """points the browser to the login screen and logs in as user root with
           Manager role."""
        self.browser.open('http://nohost/plone/')
        self.browser.getLink('Log in').click()
        self.browser.getControl('Login Name').value = user
        self.browser.getControl('Password').value = pwd
        self.browser.getControl('Log in').click()

    class layer(PloneSite):
        @classmethod
        def setUp(cls):
            # doctests don't play nicely with ipython
            try:
                iphook = sys.displayhook
                sys.displayhook = sys.__displayhook__
            except:
                pass

        @classmethod
        def tearDown(cls):
            try:
                sys.displayhook = iphook
            except:
                pass
예제 #13
0
class TestCase(ptc.PloneTestCase):
    class layer(PloneSite):
        @classmethod
        def setUp(cls):
            fiveconfigure.debug_mode = True
            zcml.load_config('configure.zcml',
                             uwosh.static.fix)
            fiveconfigure.debug_mode = False

        @classmethod
        def tearDown(cls):
            pass

    def afterSetUp(self):
        super(TestCase, self).afterSetUp()

        self.browser = Browser()

        self.uf = self.portal.acl_users
        self.uf.userFolderAddUser('root', 'secret', ['Manager'], [])

    def loginAsManager(self, user='******', pwd='secret'):
        """points the browser to the login screen and logs in as user root with Manager role."""
        self.browser.open('http://nohost/plone/')
        self.browser.getLink('Log in').click()
        self.browser.getControl('Login Name').value = user
        self.browser.getControl('Password').value = pwd
        self.browser.getControl('Log in').click()
예제 #14
0
 def testImageFromOtherSectorAccount(self):
     # http://code.simplon.biz/tracker/euphorie/ticket/143
     import re
     from euphorie.content.tests.utils import createSector
     from euphorie.content.tests.utils import addSurvey
     from Products.Five.testbrowser import Browser
     sector = createSector(self.portal, login="******")
     self.loginAsPortalOwner()
     survey = addSurvey(sector)
     createSector(self.portal,
                  id="sector2",
                  login="******",
                  password="******")
     self.logout()
     browser = Browser()
     browser.open("%s/@@login" % self.portal.absolute_url())
     browser.getControl(name="__ac_name").value = "sector2"
     browser.getControl(name="__ac_password").value = "sector2"
     browser.getForm(id="loginForm").submit()
     risk = survey["1"]["2"]
     browser.open(risk.absolute_url())
     match = re.search(
         r'<div class="introduction">\s*<img[^>]+src="([^"]+)',
         browser.contents)
     self.assertTrue(match)
     image_url = match.group(1)
     browser.open(image_url)
     self.assertEqual(browser.isHtml, False)
     self.assertEqual(browser.headers.maintype, "image")
예제 #15
0
 def testUnknownAccount(self):
     self.addDummySurvey()
     browser = Browser()
     browser.open(self.portal.client.nl.absolute_url())
     browser.getLink("I forgot my password").click()
     browser.getControl(name="loginname").value = "*****@*****.**"
     browser.getControl(name="next").click()
     self.failUnless("Unknown email address" in browser.contents)
예제 #16
0
class TestCase(ptc.PloneTestCase):
    def __init__(self, *args, **kwargs):
        super(TestCase, self).__init__(*args, **kwargs)

        from Products.Five.testbrowser import Browser
        self.browser = Browser()

    def login_as_user(self, username, password):
        self.browser.open('http://nohost/plone/logout')
        self.browser.open('http://nohost/plone/login_form')
        self.browser.getControl(name='__ac_name').value = username
        self.browser.getControl(name='__ac_password').value = password
        self.browser.getControl(name='submit').click()

    def login_as_manager(self):
        self.login_as_user(
            ptc.portal_owner,
            ptc.default_password)

    class layer(PloneSite):

        @classmethod
        def setUp(cls):
            fiveconfigure.debug_mode = True
            zcml.load_config('configure.zcml',
                             collective.multimodeview)
            ztc.installPackage(collective.multimodeview)

            zcml.load_config('configure.zcml',
                             collective.mcp)
            zcml.load_config('samples.zcml',
                             collective.mcp)
            ztc.installPackage(collective.mcp)

            # We need to clean what has been added by samples.
            collective.mcp.categories = SortedList(id_attr='id')
            collective.mcp.pages = SortedList(id_attr='widget_id')

            fiveconfigure.debug_mode = False

        @classmethod
        def tearDown(cls):
            pass

    def afterSetUp(self):
        # his hack allows us to get the traceback when the getting a
        # 500 error when using the browser.
        self.portal.error_log._ignored_exceptions = ()

        def raising(self, info):
            import traceback
            traceback.print_tb(info[2])
            print info[1]

        from Products.SiteErrorLog.SiteErrorLog import SiteErrorLog
        SiteErrorLog.raising = raising
        transaction.commit()
예제 #17
0
 def testUnknownAccount(self):
     self.addDummySurvey()
     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.failUnless("Unknown email address" in browser.contents)
 def testValuesFromRequestUsedAfterValidationFailure(self):
     self._createTestContact()
     browser = Browser()
     browser.open('http://nohost/plone/ff1')
     self.assertEqual(browser.getControl(name='replyto').value,
         '*****@*****.**')
     browser.getControl(name='replyto').value = ''
     browser.getControl('Submit').click()
     self.failUnless('Please correct the indicated errors.' in browser.contents)
     self.assertEqual(browser.getControl(name='replyto').value, '')
예제 #19
0
 def test_set_unknown_answer_if_skipped(self):
     from euphorie.content.tests.utils import BASIC_SURVEY
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     # Register in the client
     browser = Browser()
     survey_url = self.portal.client.nl['ict']['software-development']\
             .absolute_url()
     browser.open(survey_url)
     registerUserInClient(browser)
     # Create a new survey session
     browser.getControl(name='title:utf8:ustring').value = u'Session'
     browser.getControl(name='next', index=1).click()
     # Start the survey
     browser.getForm().submit()
     browser.getLink('Start Risk Identification').click()
     browser.getControl('next').click()
     # No answer should be set on initial view
     self.assertEqual(browser.getControl(name='answer').value, [])
     # Do not give an identification answer
     risk_url = browser.url
     browser.getControl('next').click()
     # Go back and check the new answer
     browser.open(risk_url)
     self.assertEqual(
             browser.getControl(name='answer').value,
             ['postponed'])
예제 #20
0
 def test_actions(self):
     # Ensure that all actions were registered.
     b = Browser()
     b.open(self.portal.absolute_url()+'/login')
     b.getControl(name='__ac_name').value = self.portal_owner
     b.getControl(name='__ac_password').value = self.default_password
     b.getControl(name='submit').click()
     b.open(self.portal.absolute_url())
     self.assert_(b.getLink('Link management'))
     self.assert_(b.getLink('My links'))
     self.assert_(b.getLink('Links'))
예제 #21
0
 def adminBrowser(self):
     """Return a browser logged in as the site owner."""
     from Products.PloneTestCase.setup import portal_owner
     from Products.PloneTestCase.setup import default_password
     from Products.Five.testbrowser import Browser
     browser = Browser()
     browser.open("%s/@@login" % self.portal.absolute_url())
     browser.getControl(name="__ac_name").value = portal_owner
     browser.getControl(name="__ac_password").value = default_password
     browser.getForm(id="loginForm").submit()
     return browser
예제 #22
0
 def testAddingAlias(self):
     browser = Browser()
     browser.addHeader("Authorization", "Basic %s:%s" % (portal_owner, default_password))
     portal_url = self.portal.absolute_url()
     url = portal_url + '/@@manage-aliases'
     browser.open(url)
     control = browser.getControl(name='redirection')
     control.value = '/bar'
     browser.getControl(name='form.button.Add').click()
     self.failUnless('Alias added' in browser.contents)
     self.assertEquals(self.rt.getRedirectObject('/bar'), self.portal)
예제 #23
0
def getBrowser(url):
    browser = Browser()
    browser.open(url)
    try:
        browser.getLink('Log in').click()
    except LinkNotFoundError:
        #!Plone4
        pass
    browser.getControl(name='__ac_name').value = portal_owner
    browser.getControl(name='__ac_password').value = default_password
    browser.getControl(name='submit').click()
    return browser
예제 #24
0
def getBrowser(url):
    browser = Browser()
    browser.open(url)
    try:
        browser.getLink('Log in').click()
    except LinkNotFoundError:
        #!Plone4
        pass
    browser.getControl(name='__ac_name').value = portal_owner
    browser.getControl(name='__ac_password').value = default_password
    browser.getControl(name='submit').click()
    return browser
예제 #25
0
 def startSurveySession(self):
     from Products.Five.testbrowser import Browser
     browser=Browser()
     browser.open(self.BASE_URL)
     # Register a new user
     testing.registerUserInClient(browser)
     # Create a new survey session
     browser.getControl(name="title:utf8:ustring").value="Test session"
     browser.getControl(name="next", index=1).click()
     # Start the survey
     browser.getForm().submit()
     browser.handleErrors=False
     return browser
예제 #26
0
 def test_login_not_case_sensitive(self):
     from euphorie.content.tests.utils import BASIC_SURVEY
     from euphorie.client.tests.utils import addSurvey
     from euphorie.client.tests.utils import addAccount
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     addAccount(password='******')
     browser = Browser()
     browser.open(self.portal.client.nl.absolute_url())
     browser.getControl(name='__ac_name').value = '*****@*****.**'
     browser.getControl(name='__ac_password:utf8:ustring').value = 'secret'
     browser.getControl(name="next").click()
     self.assertTrue('@@login' not in browser.url)
예제 #27
0
 def test_control_panel(self):
     browser = Browser()
     browser.addHeader('Authorization', 'Basic %s:%s' %
                       (portal_owner, default_password))
     jstool = self.portal.portal_javascripts
     # This is probably not the best way to test this
     # we want resources to be cooked after a form save
     # so we empty them first
     jstool.cookedresources = ()
     browser.open(self.portal.absolute_url() + '/@@maps-controlpanel')
     browser.getControl('Default coordinates').value = "1.0, 1.5"
     browser.getControl('Save').click()
     self.failUnless(jstool.cookedresources)
    def test_fallback_with_no_savedata(self):
        # if there's an exception and no savedata adapter, send an e-mail
        browser = Browser()
        browser.open('http://nohost/plone/ff1')
        browser.getControl(name='replyto').value = '*****@*****.**'
        browser.getControl(name='topic').value = 'foo'
        browser.getControl(name='comments').value = 'bar'
        browser.getControl('Submit').click()

        self.failUnless('Thank You' in browser.contents)
        self.assertEqual(1, len(self.portal.MailHost.messages))
        self.failUnless('Someone submitted this form, but the data couldn\'t be saved to Salesforce'
                        in self.portal.MailHost.messages[0])
예제 #29
0
 def test_control_panel(self):
     browser = Browser()
     browser.addHeader('Authorization',
                       'Basic %s:%s' % (portal_owner, default_password))
     jstool = self.portal.portal_javascripts
     # This is probably not the best way to test this
     # we want resources to be cooked after a form save
     # so we empty them first
     #jstool.cookedresources = ()
     jstool.cache_duration = 0
     browser.open(self.portal.absolute_url() + '/@@maps-controlpanel')
     browser.getControl('Default coordinates').value = "1.0, 1.5"
     browser.getControl('Save').click()
     self.failUnless(jstool.cookedresources)
예제 #30
0
 def test_use_session_cookie_by_default(self):
     from euphorie.content.tests.utils import BASIC_SURVEY
     from euphorie.client.tests.utils import addSurvey
     from euphorie.client.tests.utils import addAccount
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     addAccount(password='******')
     browser = Browser()
     browser.open(self.portal.client.nl.absolute_url())
     browser.getControl(name='__ac_name').value = '*****@*****.**'
     browser.getControl(name='__ac_password:utf8:ustring').value = 'secret'
     browser.getControl(name="next").click()
     auth_cookie = browser.cookies.getinfo('__ac')
     self.assertEqual(auth_cookie['expires'], None)
    def test_fallback_with_no_savedata(self):
        # if there's an exception and no savedata adapter, send an e-mail
        browser = Browser()
        browser.open('http://nohost/plone/ff1')
        browser.getControl(name='replyto').value = '*****@*****.**'
        browser.getControl(name='topic').value = 'foo'
        browser.getControl(name='comments').value = 'bar'
        browser.getControl('Submit').click()

        self.failUnless('Thank You' in browser.contents)
        self.assertEqual(1, len(self.portal.MailHost.messages))
        self.failUnless(
            'Someone submitted this form, but the data couldn\'t be saved to Salesforce'
            in self.portal.MailHost.messages[0])
예제 #32
0
 def test_extra_ga_pageview_post_login(self):
     from euphorie.content.tests.utils import BASIC_SURVEY
     from euphorie.client.tests.utils import addSurvey
     from euphorie.client.tests.utils import addAccount
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     addAccount(password='******')
     browser = Browser()
     browser.open(self.portal.client.nl.absolute_url())
     browser.getLink('Login').click()
     browser.getControl(name='__ac_name').value = '*****@*****.**'
     browser.getControl(name='__ac_password:utf8:ustring').value = 'secret'
     browser.getControl(name="next").click()
     self.assertTrue(re.search('trackPageview.*login_form/success', browser.contents) is not None)
예제 #33
0
 def test_login_not_case_sensitive(self):
     from euphorie.content.tests.utils import BASIC_SURVEY
     from euphorie.client.tests.utils import addSurvey
     from euphorie.client.tests.utils import addAccount
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     addAccount(password='******')
     browser = Browser()
     browser.open(self.portal.client.nl.absolute_url())
     browser.getLink('Login').click()
     browser.getControl(name='__ac_name').value = '*****@*****.**'
     browser.getControl(name='__ac_password:utf8:ustring').value = 'secret'
     browser.getControl(name="next").click()
     self.assertTrue('@@login' not in browser.url)
예제 #34
0
 def test_use_session_cookie_by_default(self):
     from euphorie.content.tests.utils import BASIC_SURVEY
     from euphorie.client.tests.utils import addSurvey
     from euphorie.client.tests.utils import addAccount
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     addAccount(password='******')
     browser = Browser()
     browser.open(self.portal.client.nl.absolute_url())
     browser.getLink('Login').click()
     browser.getControl(name='__ac_name').value = '*****@*****.**'
     browser.getControl(name='__ac_password:utf8:ustring').value = 'secret'
     browser.getControl(name="next").click()
     auth_cookie = browser.cookies.getinfo('__ac')
     self.assertEqual(auth_cookie['expires'], None)
예제 #35
0
    def startSurveySession(self):
        from Products.Five.testbrowser import Browser

        browser = Browser()
        browser.open(self.BASE_URL)
        # Register a new user
        testing.registerUserInClient(browser)
        # Create a new survey session
        browser.getLink(id="button-new-session").click()
        browser.getControl(name="title:utf8:ustring").value = "Test session"
        browser.getControl(name="next").click()
        # Start the survey
        browser.getForm().submit()
        browser.handleErrors = False
        return browser
예제 #36
0
 def test_extra_ga_pageview_post_login(self):
     from euphorie.content.tests.utils import BASIC_SURVEY
     from euphorie.client.tests.utils import addSurvey
     from euphorie.client.tests.utils import addAccount
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     addAccount(password='******')
     browser = Browser()
     browser.open(self.portal.client.nl.absolute_url())
     browser.getLink('Login').click()
     browser.getControl(name='__ac_name').value = '*****@*****.**'
     browser.getControl(name='__ac_password:utf8:ustring').value = 'secret'
     browser.getControl(name="next").click()
     self.assertTrue(
         re.search('trackPageview.*login_form/success', browser.contents)
         is not None)
    def testUpdateModeCreateIfNoMatchResubmitAfterBrowserBackButton(self):
        # We have a form in update mode and configured to create a new
        # object if there is not matching object to update. Consider
        # the following scenario:
        #
        #  1. User gets to the form and submits it.
        #  2. A new record in Salesforce is created and user is taken
        #     to the thank you page.
        #  3. User hits the browser back button
        #
        # At that point we want to make sure that if the user re
        # submits the form, we don't create a new object in Salesforce.
        # Instead, the record created the first time that form was
        # submited must be updated. Let's test this scenario.
        self._assertNoExistingTestContact()

        # set actionIfNoExistingObject to 'create'
        self.ff1.contact_adapter.setActionIfNoExistingObject('create')
        notify(AdapterModifiedEvent(self.ff1.contact_adapter))

        # open a test browser and submit the form once
        browser = Browser()
        browser.open('http://nohost/plone/ff1')

        browser.getControl(name='replyto').value = '*****@*****.**'
        browser.getControl(name='comments').value = 'PloneTestCase'
        browser.getControl('Submit').click()

        # now there should be one (new) record
        query_tuple = (['Id','LastName'],
            self.ff1.contact_adapter.getSFObjectType(),
            "Email='*****@*****.**'")
        res = self.salesforce.query(*query_tuple)

        for item in res['records']:
            self._todelete.append(item['Id'])
        self.assertEqual(1, res['size'])
        self.assertEqual('PloneTestCase', res['records'][0]['LastName'])

        # hit the back button
        browser.goBack()

        # change the comments and resubmit the form
        browser.getControl(name='replyto').value = '*****@*****.**'
        browser.getControl(name='comments').value = 'New PloneTestCase'
        browser.getControl('Submit').click()

        # there should be still only one record and the comments field
        # should have changed
        res = self.salesforce.query(*query_tuple)

        for item in res['records']:
            self._todelete.append(item['Id'])
        self.assertEqual(1, res['size'])
        self.assertEqual('New PloneTestCase', res['records'][0]['LastName'])
예제 #38
0
    def testMultiProfiles(self):
        # Tests http://code.simplon.biz/tracker/euphorie/ticket/96
        survey = """<sector xmlns="http://xml.simplon.biz/euphorie/survey/1.0">
                      <title>Sector title</title>
                      <survey>
                        <title>Survey title</title>
                        <profile-question>
                          <title>Multiple profile question</title>
                          <question>Profile titles</question>
                          <description>&lt;p&gt;Profile description.&lt;/p&gt;</description>
                          <risk type="policy">
                            <title>Profile risk</title>
                            <description>&lt;p&gt;Risk description.&lt;/p&gt;</description>
                            <evaluation-method>direct</evaluation-method>
                          </risk>
                        </profile-question>
                        <module optional="false">
                          <title>Module title</title>
                          <description>&lt;p&gt;Module description.&lt;/p&gt;</description>
                          <risk type="policy">
                            <title>Module risk</title>
                            <description>&lt;p&gt;Module description.&lt;/p&gt;</description>
                            <evaluation-method>direct</evaluation-method>
                          </risk>
                        </module>
                      </survey>
                    </sector>"""

        self.loginAsPortalOwner()
        addSurvey(self.portal, survey)
        browser = Browser()
        browser.open(self.portal.client.nl["sector-title"]
                     ["survey-title"].absolute_url())
        registerUserInClient(browser)
        # Create a new survey session
        browser.getControl(name="title:utf8:ustring").value = "Test session"
        browser.getControl(name="next").click()
        # Start the survey
        browser.getForm().submit()
        # Enter the profile information
        browser.getControl(name="1:utf8:utext:list",
                           index=0).value = "Profile 1"
        browser.getControl(name="1:utf8:utext:list",
                           index=1).value = "Profile 2"
        browser.getForm().submit()
예제 #39
0
    def test6734(self):
        self.loginAsPortalOwner()

        # We start off by copying the existing SimpleFolder type to
        # our own type 'MySimpleFolder'.  For this type, we set the
        # SimpleFolder type to be the sole allowed content type.
        types = self.portal.portal_types
        types.manage_pasteObjects(types.manage_copyObjects(['SimpleFolder']))
        types.manage_renameObjects(['copy_of_SimpleFolder'], ['MySimpleFolder'])
        my_type = types['MySimpleFolder']
        attrs = dict(allowed_content_types=('SimpleFolder',),
                     filter_content_types=True,
                     portal_type='MySimpleFolder',
                     title='MySimpleFolder')
        my_type.__dict__.update(attrs)

        browser = Browser()
        browser.addHeader('Authorization',
                          'Basic %s:%s' % ('portal_owner', user_password))
        browser.open(self.folder.absolute_url())
        browser.getLink('Add new').click()
        browser.getControl('MySimpleFolder').click()
        browser.getControl('Add').click()

        browser.getControl('Title').value = 'My dope folder'
        browser.getControl('Save').click()
        self.failUnless('Changes saved.' in browser.contents)
        self.failUnless('My dope folder' in browser.contents)
예제 #40
0
파일: tests.py 프로젝트: Vinsurya/Plone
 def test_add_to_portal_root_save(self):
     self.setRoles(('Manager',))
     
     browser = Browser()
     browser.handleErrors = False
     
     # Login
     browser.open(self.portal.absolute_url() + '/login')
     browser.getControl(name='__ac_name').value = ptc.default_user
     browser.getControl(name='__ac_password').value = ptc.default_password
     browser.getControl('Log in').click()
     
     # Enter the add screen for a temporary portal_factory-managed object
     browser.open(self.portal.absolute_url() + '/portal_factory/Document/document.2010-02-04.2866363923/edit')
     
     # We should now have cookies with the drafts information
     cookies = browser.cookies.forURL(browser.url)
     self.assertEquals('"/plone/portal_factory/Document/document.2010-02-04.2866363923"', cookies['plone.app.drafts.path'])
     self.assertEquals('"0%3ADocument"', cookies['plone.app.drafts.targetKey'])
     self.failIf('plone.app.drafts.draftName' in browser.cookies.forURL(browser.url))
     
     # We can now fill in the required fields and save. The cookies should expire.
     
     browser.getControl(name='title').value = u"New document"
     browser.getControl(name='form.button.save').click()
     self.failIf('plone.app.drafts.targetKey' in browser.cookies.forURL(browser.url))
     self.failIf('plone.app.drafts.path' in browser.cookies.forURL(browser.url))
     self.failIf('plone.app.drafts.draftName' in browser.cookies.forURL(browser.url))
예제 #41
0
파일: base.py 프로젝트: uwosh/UWOshSuccess
class UWOshSuccessFunctionalTestCase(UWOshSuccessTestCase, ptc.FunctionalTestCase):

    def __init__(self, methodName='runTest'):
        UWOshSuccessTestCase.__init__(self, methodName)
        ptc.FunctionalTestCase.__init__(self, methodName)
        self.browser = Browser()
        self.browser.addHeader('Accept-Language', 'en-US')

    def browserLogout(self):
        self.browser.open(self.portal.absolute_url() + '/logout')
        self.assertTrue('You are now logged out' in self.browser.contents)

    def browserLogin(self, username, password='******'):
        self.browser.open(self.portal.absolute_url() + '/login_form')
        self.browser.getControl(name='__ac_name').value = username
        self.browser.getControl(name='__ac_password').value = password
        self.browser.getControl(name='submit').click()
        self.assertTrue('You are now logged in' in self.browser.contents)
예제 #42
0
파일: base.py 프로젝트: uwosh/UWOshSuccess
class UWOshSuccessFunctionalTestCase(UWOshSuccessTestCase,
                                     ptc.FunctionalTestCase):
    def __init__(self, methodName='runTest'):
        UWOshSuccessTestCase.__init__(self, methodName)
        ptc.FunctionalTestCase.__init__(self, methodName)
        self.browser = Browser()
        self.browser.addHeader('Accept-Language', 'en-US')

    def browserLogout(self):
        self.browser.open(self.portal.absolute_url() + '/logout')
        self.assertTrue('You are now logged out' in self.browser.contents)

    def browserLogin(self, username, password='******'):
        self.browser.open(self.portal.absolute_url() + '/login_form')
        self.browser.getControl(name='__ac_name').value = username
        self.browser.getControl(name='__ac_password').value = password
        self.browser.getControl(name='submit').click()
        self.assertTrue('You are now logged in' in self.browser.contents)
예제 #43
0
class ControlPanelTestCase(FunctionalTestCase):
    """base test case with convenience methods for all control panel tests"""

    def afterSetUp(self):
        super(ControlPanelTestCase, self).afterSetUp()

        self.browser = Browser()

        self.uf = self.portal.acl_users
        self.uf.userFolderAddUser('root', 'secret', ['Manager'], [])

        self.ptool = getToolByName(self.portal, 'portal_properties')
        self.site_props = self.ptool.site_properties

        self.fake_request = FakeRequest()

    def loginAsManager(self, user='******', pwd='secret'):
        """points the browser to the login screen and logs in as user root
           with Manager role."""
        self.browser.open('http://nohost/plone/')
        self.browser.getLink('Log in').click()
        self.browser.getControl('Login Name').value = user
        self.browser.getControl('Password').value = pwd
        self.browser.getControl('Log in').click()

    def simplify_white_space(self, text):
        """For easier testing we replace all white space with one space.

        And we remove white space around '<' and '>'.

        So this:

          <p
              id="foo"> Bar
          </p>

        becomes this:

          <p id="foo">Bar</p>
        """
        text = re.sub('\s*<\s*', '<', text)
        text = re.sub('\s*>\s*', '>', text)
        text = re.sub('\s+', ' ', text)
        return text
 def testUpdateWhenObjectInitiallyFoundGoesMissing(self):
     # create a contact and load it into the form...
     self._createTestContact()
     browser = Browser()
     browser.handleErrors = False
     browser.open('http://nohost/plone/ff1')
     self.assertEqual(browser.getControl(name='comments').value, 'PloneTestCase')
     
     # now manually remove the new contact from Salesforce
     self.salesforce.delete(self._todelete[-1:])
     
     # on submission, the adapter will get a Id from the session and will try
     # to update the object with that Id, but we'll get an exception from SF
     # since the object no longer exists
     try:
         browser.getControl('Submit').click()
     except Exception, e:
         self.assertEqual(e.message,
             'Failed to update Contact in Salesforce: entity is deleted')
    def testUpdateModeAbortIfNoMatchOnDirectSubmission(self):
        self._assertNoExistingTestContact()

        # make sure the 'abort' setting of actionIfNoExistingObject is
        # respected even if the check on the initial form load was bypassed.
        # To test, we'll first load the form with the setting on 'create'...
        self.ff1.contact_adapter.setActionIfNoExistingObject('create')
        browser = Browser()
        browser.open('http://nohost/plone/ff1')
        
        # then switch it to 'abort' and submit the form...
        self.ff1.contact_adapter.setActionIfNoExistingObject('abort')
        browser.getControl(name='replyto').value = '*****@*****.**'
        browser.getControl(name='comments').value = 'PloneTestCase'
        browser.getControl('Submit').click()
        
        # should end up on the portal root, with an error message
        self.assertEqual(browser.url, 'http://nohost/plone')
        self.failUnless('Could not find item to edit.' in browser.contents)
    def testNoUpdateIfInitialSessionWasDestroyed(self):
        # If the session is destroyed (e.g. if Zope restarts) or expires, then
        # we could get a submission that is supposed to be an update, but is
        # treated as a creation attempt.  Let's be sure to avoid that...
        self._createTestContact()
        self.ff1.contact_adapter.setActionIfNoExistingObject('create')
        browser = Browser()
        browser.open('http://nohost/plone/ff1')
        
        # reset the sessions
        self.app.temp_folder._delObject('session_data')
        ztc.utils.setupCoreSessions(self.app)

        # submit the form
        browser.getControl('Submit').click()

        # make sure we didn't create a new item in Salesforce
        res = self.salesforce.query("SELECT Id FROM Contact WHERE Email='*****@*****.**' and LastName='PloneTestCase'")
        self.failIf(res['size'] > 1, 'Known issue: Accidental creation following session destruction.')
예제 #47
0
class PDFBookFunctionalTestCase(ptc.FunctionalTestCase, TestCaseMixin):
    def afterSetUp(self):
        super(PDFBookFunctionalTestCase, self).afterSetUp()
        self.makeBaseContent()
        self.browser = Browser()
        self.uf = self.portal.acl_users
        self.uf.userFolderAddUser('root', 'secret', ['Manager'], [])
        self.ptool = getToolByName(self.portal, 'portal_properties')
        self.site_props = self.ptool.site_properties
        return

    def loginAsManager(self, user='******', pwd='secret'):
        """points the browser to the login screen and logs in as user root with Manager role."""
        self.browser.open('http://nohost/plone/')
        self.browser.getLink('Log in').click()
        self.browser.getControl('Login Name').value = user
        self.browser.getControl('Password').value = pwd
        self.browser.getControl('Log in').click()
        return
예제 #48
0
 def test_remember_user_sets_cookie_expiration(self):
     import datetime
     from euphorie.content.tests.utils import BASIC_SURVEY
     from euphorie.client.tests.utils import addSurvey
     from euphorie.client.tests.utils import addAccount
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     addAccount(password='******')
     browser = Browser()
     browser.open(self.portal.client.nl.absolute_url())
     browser.getControl(name='__ac_name').value = '*****@*****.**'
     browser.getControl(name='__ac_password:utf8:ustring').value = 'secret'
     browser.getControl(name='remember').value = ['True']
     browser.getControl(name="next").click()
     auth_cookie = browser.cookies.getinfo('__ac')
     self.assertNotEqual(auth_cookie['expires'], None)
     delta = auth_cookie['expires'] - datetime.datetime.now(
                                         auth_cookie['expires'].tzinfo)
     self.assertTrue(delta.days > 100)
    def testUpdateNullifiesEmptyFields(self):
        """
        Tests that, in update mode, empty fields overwrite existing data
        with a null value.
        """
        
        self._createTestContact()
        
        # Set actionIfNoExistingObject to 'abort.'
        self.ff1.contact_adapter.setActionIfNoExistingObject('abort')
        notify(AdapterModifiedEvent(self.ff1.contact_adapter))
        
        browser = Browser()
        browser.open('http://nohost/plone/ff1')
        
        browser.getControl(name='replyto').value = '*****@*****.**'
        browser.getControl(name='comments').value = 'PloneTestCase'
        browser.getControl(name='topic').value = '(123) 456-7890'
        browser.getControl('Submit').click()
        
        # Now there should be one (new) record.
        query_tuple = (['Id','LastName','Phone'],
            self.ff1.contact_adapter.getSFObjectType(),
            "Email='*****@*****.**'")
        res = self.salesforce.query(*query_tuple)
        
        for item in res['records']:
            self._todelete.append(item['Id'])
        self.assertEqual(1, res['size'])
        self.assertEqual('PloneTestCase', res['records'][0]['LastName'])
        self.assertEqual('(123) 456-7890', res['records'][0]['Phone'])
        
        # We can now update the item by removing the phone number.
        browser.open('http://nohost/plone/ff1')
        self.assertEqual('(123) 456-7890', browser.getControl(name='topic').value)
        browser.getControl(name='topic').value = ''
        browser.getControl('Submit').click()
        
        # The record should now contain an empty phone number.
        query_tuple = (['Id','LastName','Phone'],
            self.ff1.contact_adapter.getSFObjectType(),
            "Email='*****@*****.**'")
        res = self.salesforce.query(*query_tuple)

        self.assertEqual(1, res['size'])
        self.assertEqual('PloneTestCase', res['records'][0]['LastName'])
        self.assertEqual('', res['records'][0]['Phone'])
예제 #50
0
    def testCountryDefaultsToCurrentCountry(self):
        from euphorie.client.tests.utils import addSurvey
        from euphorie.client.tests.utils import registerUserInClient
        from euphorie.content.tests.utils import BASIC_SURVEY

        self.loginAsPortalOwner()
        addSurvey(self.portal, BASIC_SURVEY)
        browser = Browser()
        survey_url = self.portal.client.nl["ict"]["software-development"].absolute_url()
        browser.open(survey_url)
        registerUserInClient(browser)
        # Create a new survey session
        browser.getControl(name="title:utf8:ustring").value = "Sessiøn".encode("utf-8")
        browser.getControl(name="next").click()
        # Start the survey
        browser.getForm().submit()
        browser.getLink("Start Risk Identification").click()
        # Check the company data
        browser.open("%s/report/company" % survey_url)
        self.assertEqual(browser.getControl(name="form.widgets.country").value, ["nl"])
예제 #51
0
 def test_remember_user_sets_cookie_expiration(self):
     import datetime
     from euphorie.content.tests.utils import BASIC_SURVEY
     from euphorie.client.tests.utils import addSurvey
     from euphorie.client.tests.utils import addAccount
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     addAccount(password='******')
     browser = Browser()
     browser.open(self.portal.client.nl.absolute_url())
     browser.getLink('Login').click()
     browser.getControl(name='__ac_name').value = '*****@*****.**'
     browser.getControl(name='__ac_password:utf8:ustring').value = 'secret'
     browser.getControl(name='remember').value = ['True']
     browser.getControl(name="next").click()
     auth_cookie = browser.cookies.getinfo('__ac')
     self.assertNotEqual(auth_cookie['expires'], None)
     delta = auth_cookie['expires'] - datetime.datetime.now(
         auth_cookie['expires'].tzinfo)
     self.assertTrue(delta.days > 100)
예제 #52
0
class ControlPanelTestCase(FunctionalTestCase):
    """base test case with convenience methods for all control panel tests"""

    def afterSetUp(self):
        super(ControlPanelTestCase, self).afterSetUp()

        self.browser = Browser()

        self.uf = self.portal.acl_users
        self.uf.userFolderAddUser('root', 'secret', ['Manager'], [])

        self.ptool = getToolByName(self.portal, 'portal_properties')
        self.site_props = self.ptool.site_properties

    def loginAsManager(self, user='******', pwd='secret'):
        """points the browser to the login screen and logs in as user root with Manager role."""
        self.browser.open('http://nohost/plone/')
        self.browser.getLink('Log in').click()
        self.browser.getControl('Login Name').value = user
        self.browser.getControl('Password').value = pwd
        self.browser.getControl('Log in').click()

    def simplify_white_space(self, text):
        """For easier testing we replace all white space with one space.

        And we remove white space around '<' and '>'.

        So this:

          <p
              id="foo"> Bar
          </p>

        becomes this:

          <p id="foo">Bar</p>
        """
        text = re.sub('\s*<\s*', '<', text)
        text = re.sub('\s*>\s*', '>', text)
        text = re.sub('\s+', ' ', text)
        return text
    def testUpdateModeCreateIfNoMatch(self):
        self._assertNoExistingTestContact()

        # set actionIfNoExistingObject to 'create'
        self.ff1.contact_adapter.setActionIfNoExistingObject('create')
        notify(AdapterModifiedEvent(self.ff1.contact_adapter))
        
        # open a test browser on the initial form
        browser = Browser()
        browser.open('http://nohost/plone/ff1')
        
        # confirm no existing values; set some new ones and submit
        self.assertEqual(browser.getControl(name='replyto').value, '')
        browser.getControl(name='replyto').value = '*****@*****.**'
        self.assertEqual(browser.getControl(name='comments').value, '')
        browser.getControl(name='comments').value = 'PloneTestCase'
        browser.getControl('Submit').click()
        
        # now there should be one (new) record
        res = self.salesforce.query(['Id','LastName'],self.ff1.contact_adapter.getSFObjectType(),
                                    "Email='*****@*****.**'")
        for item in res['records']:
            self._todelete.append(item['Id'])
        self.assertEqual(1, res['size'])
        self.assertEqual('PloneTestCase', res['records'][0]['LastName'])