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
Exemple #2
0
 def test_with_introduction(self):
     import datetime
     import json
     from z3c.saconfig import Session
     from euphorie.client.model import SurveySession
     from euphorie.client.api.authentication import generate_token
     from euphorie.content.tests.utils import BASIC_SURVEY
     from euphorie.client.tests.utils import addAccount
     from euphorie.client.tests.utils import addSurvey
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     survey = self.portal.client['nl']['ict']['software-development']
     survey.introduction = u'<p>Fancy intro.</p>'
     account = addAccount(password='******')
     survey_session = SurveySession(
         title=u'Dummy session',
         created=datetime.datetime(2012, 4, 22, 23, 5, 12),
         modified=datetime.datetime(2012, 4, 23, 11, 50, 30),
         zodb_path='nl/ict/software-development',
         account=account)
     Session.add(survey_session)
     browser = Browser()
     browser.addHeader('X-Euphorie-Token', generate_token(account))
     browser.open('http://nohost/plone/client/api/users/1/sessions/1')
     self.assertEqual(browser.headers['Content-Type'], 'application/json')
     response = json.loads(browser.contents)
     self.assertTrue('introduction' in response)
     self.assertEqual(response['introduction'], u'<p>Fancy intro.</p>')
    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'])
Exemple #4
0
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()
Exemple #5
0
    def test_get_no_company_data_present(self):
        import datetime
        import json
        from z3c.saconfig import Session
        from euphorie.client.model import SurveySession
        from euphorie.content.tests.utils import BASIC_SURVEY
        from euphorie.client.tests.utils import addAccount
        from euphorie.client.tests.utils import addSurvey
        from euphorie.client.api.authentication import generate_token
        from Products.Five.testbrowser import Browser

        self.loginAsPortalOwner()
        addSurvey(self.portal, BASIC_SURVEY)
        account = addAccount(password="******")
        survey_session = SurveySession(
            title=u"Dummy session",
            created=datetime.datetime(2012, 4, 22, 23, 5, 12),
            modified=datetime.datetime(2012, 4, 23, 11, 50, 30),
            zodb_path="nl/ict/software-development",
            account=account,
        )
        Session.add(survey_session)
        browser = Browser()
        browser.addHeader("X-Euphorie-Token", generate_token(account))
        browser.open("http://nohost/plone/client/api/users/1/sessions/1/company")
        self.assertEqual(browser.headers["Content-Type"], "application/json")
        response = json.loads(browser.contents)
        self.assertEqual(response["type"], "company")
 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"])
Exemple #7
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())
Exemple #8
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').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.assertTrue(
         'class="current postponed'
         in browser.contents)
Exemple #9
0
 def test_edit_multiple_existing_drafts(self):
     browser = Browser()
     browser.handleErrors = False
     
     self.folder.invokeFactory('Document', 'd1')
     self.folder['d1'].setTitle(u"New title")
     
     intid = getUtility(IIntIds).getId(self.folder['d1'])
     
     # Create two drafts for this object - we don't expect either to be used
     storage = getUtility(IDraftStorage)
     storage.createDraft(ptc.default_user, str(intid))
     storage.createDraft(ptc.default_user, str(intid))
     
     # 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 edit screen
     browser.open(self.folder['d1'].absolute_url() + '/edit')
     
     # We should now have cookies with the drafts information
     cookies = browser.cookies.forURL(browser.url)
     self.assertEquals('"%s"' % self.folder['d1'].absolute_url_path(), cookies['plone.app.drafts.path'])
     self.assertEquals('"%d"' % intid, cookies['plone.app.drafts.targetKey'])
     self.failIf('plone.app.drafts.draftName' in browser.cookies.forURL(browser.url))
     
     # We can now save the page. The cookies should expire.
     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))
Exemple #10
0
    def testShowFrenchEvaluation(self):
        from euphorie.content.tests.utils import BASIC_SURVEY

        # Test for http://code.simplon.biz/tracker/tno-euphorie/ticket/150
        self.loginAsPortalOwner()
        addSurvey(self.portal, BASIC_SURVEY)
        browser = Browser()
        survey = self.portal.client.nl["ict"]["software-development"]
        survey.evaluation_algorithm = "french"
        survey["1"]["2"].type = "risk"
        browser.open(survey.absolute_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()
        # Identify the risk
        browser.getControl("next").click()
        browser.getControl(name="answer").value = ["no"]
        # Verify number of options
        self.assertEqual(len(browser.getControl(name="frequency:int").controls), 4)
        self.assertEqual(len(browser.getControl(name="severity:int").controls), 4)
        # # Enter some digits
        browser.getControl(name="frequency:int").value = ["7"]
        browser.getControl(name="severity:int").value = ["10"]
        browser.getControl("next").click()
        browser.open(
            "http://nohost/plone/client/nl/ict/software-development/actionplan/1/1"
        )
        self.assertEqual(browser.getControl(name="priority").value, ["high"])
Exemple #11
0
 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))
Exemple #12
0
 def test_add_to_folder(self):
     browser = Browser()
     browser.handleErrors = False
     
     intid = getUtility(IIntIds).getId(self.folder)
     
     # 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.folder.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(
             '"%s/portal_factory/Document/document.2010-02-04.2866363923"' % self.folder.absolute_url_path(),
             cookies['plone.app.drafts.path']
         )
     self.assertEquals('"%d%%3ADocument"' % intid, cookies['plone.app.drafts.targetKey'])
     self.failIf('plone.app.drafts.draftName' in browser.cookies.forURL(browser.url))
     
     # We can now cancel the edit. The cookies should expire.
     browser.getControl(name='form.button.cancel').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))
Exemple #13
0
 def test_with_introduction(self):
     import datetime
     import json
     from z3c.saconfig import Session
     from euphorie.client.model import SurveySession
     from euphorie.client.api.authentication import generate_token
     from euphorie.content.tests.utils import BASIC_SURVEY
     from euphorie.client.tests.utils import addAccount
     from euphorie.client.tests.utils import addSurvey
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     survey = self.portal.client['nl']['ict']['software-development']
     survey.introduction = u'<p>Fancy intro.</p>'
     account = addAccount(password='******')
     survey_session = SurveySession(
             title=u'Dummy session',
             created=datetime.datetime(2012, 4, 22, 23, 5, 12),
             modified=datetime.datetime(2012, 4, 23, 11, 50, 30),
             zodb_path='nl/ict/software-development',
             account=account)
     Session.add(survey_session)
     browser = Browser()
     browser.addHeader('X-Euphorie-Token', generate_token(account))
     browser.open('http://nohost/plone/client/api/users/1/sessions/1')
     self.assertEqual(browser.headers['Content-Type'], 'application/json')
     response = json.loads(browser.contents)
     self.assertTrue('introduction' in response)
     self.assertEqual(response['introduction'], u'<p>Fancy intro.</p>')
Exemple #14
0
 def test_browser(self):
     import datetime
     from z3c.saconfig import Session
     from euphorie.client.model import SurveySession
     from euphorie.client.api.authentication import generate_token
     from euphorie.content.tests.utils import BASIC_SURVEY
     from euphorie.client.tests.utils import addAccount
     from euphorie.client.tests.utils import addSurvey
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     account = addAccount(password='******')
     survey_session = SurveySession(
         title=u'Dummy session',
         created=datetime.datetime(2012, 4, 22, 23, 5, 12),
         modified=datetime.datetime(2012, 4, 23, 11, 50, 30),
         zodb_path='nl/ict/software-development',
         account=account)
     Session.add(survey_session)
     browser = Browser()
     browser.addHeader('X-Euphorie-Token', generate_token(account))
     browser.handleErrors = False
     browser.open('http://nohost/plone/client/api/users/1/'
                  'sessions/1/report-timeline')
     self.assertEqual(
         browser.headers['Content-Type'], 'application/vnd.openxmlformats-'
         'officedocument.spreadsheetml.sheet')
    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'])
Exemple #16
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)
Exemple #17
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()
Exemple #18
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)
Exemple #19
0
 def test_get_no_company_data_present(self):
     import datetime
     import json
     from z3c.saconfig import Session
     from euphorie.client.model import SurveySession
     from euphorie.content.tests.utils import BASIC_SURVEY
     from euphorie.client.tests.utils import addAccount
     from euphorie.client.tests.utils import addSurvey
     from euphorie.client.api.authentication import generate_token
     from Products.Five.testbrowser import Browser
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     account = addAccount(password='******')
     survey_session = SurveySession(
             title=u'Dummy session',
             created=datetime.datetime(2012, 4, 22, 23, 5, 12),
             modified=datetime.datetime(2012, 4, 23, 11, 50, 30),
             zodb_path='nl/ict/software-development',
             account=account)
     Session.add(survey_session)
     browser = Browser()
     browser.addHeader('X-Euphorie-Token', generate_token(account))
     browser.open(
             'http://nohost/plone/client/api/users/1/sessions/1/company')
     self.assertEqual(browser.headers['Content-Type'], 'application/json')
     response = json.loads(browser.contents)
     self.assertEqual(response['type'], 'company')
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())
Exemple #21
0
 def test_get_empty_profile(self):
     import datetime
     import json
     from z3c.saconfig import Session
     from euphorie.client.model import SurveySession
     from euphorie.content.tests.utils import PROFILE_SURVEY
     from euphorie.client.tests.utils import addAccount
     from euphorie.client.tests.utils import addSurvey
     from euphorie.client.api.authentication import generate_token
     self.loginAsPortalOwner()
     addSurvey(self.portal, PROFILE_SURVEY)
     account = addAccount(password='******')
     survey_session = SurveySession(
         title=u'Dummy session',
         created=datetime.datetime(2012, 4, 22, 23, 5, 12),
         modified=datetime.datetime(2012, 4, 23, 11, 50, 30),
         zodb_path='nl/ict/software-development',
         account=account)
     Session.add(survey_session)
     browser = Browser()
     browser.addHeader('X-Euphorie-Token', generate_token(account))
     browser.open(
         'http://nohost/plone/client/api/users/1/sessions/1/profile')
     self.assertEqual(browser.headers['Content-Type'], 'application/json')
     response = json.loads(browser.contents)
     self.assertEqual(set(response), set(['id', 'type', 'title',
                                          'profile']))
     self.assertEqual(response['id'], 1)
     self.assertEqual(response['type'], 'profile')
     self.assertEqual(response['title'], u'Dummy session')
     self.assertEqual(response['profile'], [{
         'id': u'1',
         'question': u'List all your departments:',
         'value': []
     }])
 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")
Exemple #23
0
 def test_browser_require_authentication(self):
     self.loginAsPortalOwner()
     self.portal.sectors['nl'].invokeFactory('euphorie.countrymanager', 'manager')
     browser = Browser()
     browser.raiseHttpErrors = False
     browser.open('http://nohost/plone/api/countries/nl/managers/manager')
     self.assertTrue(browser.headers['Status'].startswith('401'))
Exemple #24
0
 def testShowFrenchEvaluation(self):
     from euphorie.content.tests.utils import BASIC_SURVEY
     # Test for http://code.simplon.biz/tracker/tno-euphorie/ticket/150
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     browser = Browser()
     survey = self.portal.client.nl["ict"]["software-development"]
     survey.evaluation_algorithm = u"french"
     survey["1"]["2"].type = "risk"
     browser.open(survey.absolute_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()
     # Identify the risk
     browser.getControl("next").click()
     browser.getControl(name="answer").value = ["no"]
     # Verify number of options
     self.assertEqual(
             len(browser.getControl(name="frequency:int").controls), 4)
     self.assertEqual(
             len(browser.getControl(name="severity:int").controls), 4)
     # Enter some digits
     browser.getControl(name="frequency:int").value = ["7"]
     browser.getControl(name="severity:int").value = ["10"]
     browser.getControl("next").click()
     # Verify the result
     browser.open(
             "http://nohost/plone/client/nl/ict/"
             "software-development/actionplan/1/1")
     self.assertEqual(browser.getControl(name="priority").value, ["high"])
Exemple #25
0
 def test_browser(self):
     import datetime
     from z3c.saconfig import Session
     from euphorie.client.model import SurveySession
     from euphorie.client.api.authentication import generate_token
     from euphorie.content.tests.utils import BASIC_SURVEY
     from euphorie.client.tests.utils import addAccount
     from euphorie.client.tests.utils import addSurvey
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     account = addAccount(password='******')
     survey_session = SurveySession(
             title=u'Dummy session',
             created=datetime.datetime(2012, 4, 22, 23, 5, 12),
             modified=datetime.datetime(2012, 4, 23, 11, 50, 30),
             zodb_path='nl/ict/software-development',
             account=account)
     Session.add(survey_session)
     browser = Browser()
     browser.addHeader('X-Euphorie-Token', generate_token(account))
     browser.handleErrors = False
     browser.open('http://nohost/plone/client/api/users/1/'
                     'sessions/1/report-timeline')
     self.assertEqual(
             browser.headers['Content-Type'],
             'application/vnd.openxmlformats-'
                                     'officedocument.spreadsheetml.sheet')
Exemple #26
0
    def test_recurrence(self):
        browser = Browser()
        browser.handleErrors = False
        browser.addHeader('Authorization', 'Basic %s:%s' % (portal_owner, default_password))
        folder_url = self.folder.absolute_url()

        # Add event
        browser.open(folder_url + '/createObject?type_name=Event')
        form = browser.getForm('event-base-edit')
        form.getControl(name='title').value = 'An Event'
        form.getControl(name='startDate_year').value = ['2007']
        form.getControl(name='startDate_month').value = ['04']
        form.getControl(name='startDate_day').value = ['01']
        form.getControl(name='startDate_hour').value = ['11']
        form.getControl(name='startDate_minute').value = ['00']
        form.getControl(name='endDate_year').value = ['2007']
        form.getControl(name='endDate_month').value = ['04']
        form.getControl(name='endDate_day').value = ['01']
        form.getControl(name='endDate_hour').value = ['11']
        form.getControl(name='endDate_minute').value = ['00']
        # Edit the recurrence info:
        form.getControl(name='frequency').value = ['1']
        form.getControl(name='interval').value = '6'
        form.getControl(name='form.button.save').click()

        # Make sure it's properly indexed:
        cat = self.portal.portal_catalog
        self.failUnless(len(cat(portal_type='Event', recurrence_days=732950)) == 1)
Exemple #27
0
 def test_browser_get(self):
     import datetime
     from z3c.saconfig import Session
     from euphorie.client.model import SurveySession
     from euphorie.content.tests.utils import BASIC_SURVEY
     from euphorie.client.tests.utils import addAccount
     from euphorie.client.tests.utils import addSurvey
     from euphorie.client.api.authentication import generate_token
     from tno.euphorie.model import DutchCompany
     from Products.Five.testbrowser import Browser
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     account = addAccount(password='******')
     survey_session = SurveySession(
             title=u'Dummy session',
             created=datetime.datetime(2012, 4, 22, 23, 5, 12),
             modified=datetime.datetime(2012, 4, 23, 11, 50, 30),
             zodb_path='nl/ict/software-development',
             account=account)
     survey_session.dutch_company = DutchCompany(
             title=u'Acme B.V.',
             employees='40h',
             email='*****@*****.**',
             submit_date=datetime.date(2012, 6, 6))
     Session.add(survey_session)
     browser = Browser()
     browser.addHeader('X-Euphorie-Token', generate_token(account))
     browser.handleErrors = False
     browser.open(
             'http://nohost/plone/client/api/users/1/sessions/1/'
             'report-actionplan')
     self.assertEqual(browser.headers['Content-Type'], 'application/rtf')
     self.assertTrue('Bedrijfsnaam' in browser.contents)
Exemple #28
0
 def test_get(self):
     import datetime
     import json
     from z3c.saconfig import Session
     from euphorie.client.model import Company
     from euphorie.client.model import SurveySession
     from euphorie.content.tests.utils import BASIC_SURVEY
     from euphorie.client.tests.utils import addAccount
     from euphorie.client.tests.utils import addSurvey
     from euphorie.client.api.authentication import generate_token
     from Products.Five.testbrowser import Browser
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     account = addAccount(password='******')
     survey_session = SurveySession(
             title=u'Dummy session',
             created=datetime.datetime(2012, 4, 22, 23, 5, 12),
             modified=datetime.datetime(2012, 4, 23, 11, 50, 30),
             zodb_path='nl/ict/software-development',
             account=account,
             company=Company(country='nl',
                             employees='1-9',
                             referer='other'))
     Session.add(survey_session)
     browser = Browser()
     browser.addHeader('X-Euphorie-Token', generate_token(account))
     browser.open(
             'http://nohost/plone/client/api/users/1/sessions/1/company')
     self.assertEqual(browser.headers['Content-Type'], 'application/json')
     response = json.loads(browser.contents)
     self.assertEqual(response['type'], 'company')
Exemple #29
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
class TestCreatingProposals(UwoshgrantsFunctionalTestCase):

    def _createProposal(self):
        self.login(self._default_user)
        id = self.folder.invokeFactory(type_name='Proposal', id='test-proposal')
        return self.folder[id]

    def _loginThroughBrowserAsDefaultUser(self):
        self.browser = Browser()
        self.browser.open(self.portal.absolute_url() + '/login_form')
        self.browser.getControl(name='__ac_name').value = self._default_user
        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)

    def _createFillOutAndSubmitAProposal(self):
        self.browser.open(self.portal.absolute_url() + '/proposals/createObject?type_name=Proposal')
        self.browser.getControl('Title').value = 'Test Proposal'
        self.browser.getControl('Proposer Name').value = 'John Doe'
        self.assertEqual(self.browser.getControl('Proposer ID').value, self._default_user)
        self.browser.getControl('Proposer Email').value = '*****@*****.**'
        self.browser.getControl('Primary Faculty Advisor Name').value = 'Douglas Adams'
        self.browser.getControl('Save').click()

    def testUserIsAddedToTheProposersGroup(self):
        portal_membership = getToolByName(self.portal, 'portal_membership')
        member = portal_membership.getMemberById(self._default_user)
        self.assertEqual(sorted(member.getGroups()), ['AuthenticatedUsers'])
        self._loginThroughBrowserAsDefaultUser()
        self._createFillOutAndSubmitAProposal()
        member = portal_membership.getMemberById(self._default_user)
        self.assertEqual(sorted(member.getGroups()), ['AuthenticatedUsers', 'uwosh.grants: Proposers'])
Exemple #31
0
 def test_api_access(self):
     from Products.Five.testbrowser import Browser
     browser = Browser()
     browser.open('http://nohost/plone/client/api')
     self.assertEqual(
             browser.headers['Content-Type'],
             'application/json')
Exemple #32
0
 def createClientBrowser(self):
     from Products.Five.testbrowser import Browser
     from euphorie.client.tests.utils import registerUserInClient
     browser = Browser()
     browser.open(self.portal.client.nl["ict"]["software-development"].absolute_url())
     registerUserInClient(browser)
     return browser
Exemple #33
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
 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)
 def test_browser_require_authentication(self):
     self.loginAsPortalOwner()
     self.portal.sectors['nl'].invokeFactory('euphorie.countrymanager',
                                             'manager')
     browser = Browser()
     browser.raiseHttpErrors = False
     browser.open('http://nohost/plone/api/countries/nl/managers/manager')
     self.assertTrue(browser.headers['Status'].startswith('401'))
Exemple #36
0
    def createClientBrowser(self):
        from euphorie.client.tests.utils import registerUserInClient
        from Products.Five.testbrowser import Browser

        browser = Browser()
        browser.open(self.portal.client.nl["ict"]
                     ["software-development"].absolute_url())
        registerUserInClient(browser)
        return browser
Exemple #37
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)
Exemple #38
0
 def testTraverser(self):
     """ Test the ClientPublishTraverser in osha.oira/client.py
     """
     from Products.Five.testbrowser import Browser
     from ..interfaces import IOSHAClientSkinLayer
     from euphorie.client.utils import locals
     browser = Browser()
     browser.open(self.portal.client.absolute_url())
     self.assertEquals(IOSHAClientSkinLayer.providedBy(locals.request), True)
Exemple #39
0
 def test_get_version(self):
     import json
     browser = Browser()
     browser.open('http://nohost/plone/client/api')
     self.assertEqual(browser.headers['Content-Type'], 'application/json')
     response = json.loads(browser.contents)
     self.assertEqual(set(response),
                      set(['api-version', 'euphorie-version']))
     self.assertEqual(response['api-version'], [1, 0])
Exemple #40
0
 def testSecurity(self):
     browser = Browser()
     portal_url = self.portal.absolute_url()
     url = portal_url + '/@@manage-aliases'
     browser.open(url)
     self.assertNotEquals(url, browser.url)
     browser.addHeader("Authorization", "Basic %s:%s" % (portal_owner, default_password))
     browser.open(url)
     self.assertEquals(url, browser.url)
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()
Exemple #42
0
    def testTraverser(self):
        """Test the ClientPublishTraverser in osha.oira/client.py"""
        from ..interfaces import IOSHAClientSkinLayer
        from euphorie.client.utils import locals
        from Products.Five.testbrowser import Browser

        browser = Browser()
        browser.open(self.portal.client.absolute_url())
        self.assertEquals(IOSHAClientSkinLayer.providedBy(locals.request), True)
 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, '')
Exemple #44
0
 def test_authenticated_user(self):
     import json
     from ...tests.utils import createSector
     from ..authentication import generate_token
     sector = createSector(self.portal, login='******', password=u'sector')
     browser = Browser()
     browser.addHeader('X-Euphorie-Token', generate_token(sector))
     browser.open('http://nohost/plone/api')
     response = json.loads(browser.contents)
     self.assertEqual(response['account'], 'sector')
Exemple #45
0
 def test_get(self):
     import json
     from euphorie.content.tests.utils import BASIC_SURVEY
     from euphorie.client.tests.utils import addSurvey
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     browser = Browser()
     browser.open('http://nohost/plone/client/api/surveys/nl')
     response = json.loads(browser.contents)
     self.assertEqual(response['id'], 'nl')
    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'])
Exemple #47
0
 def test_404_handled(self):
     import json
     browser = Browser()
     browser.raiseHttpErrors = False
     browser.open('http://nohost/plone/api/unknown')
     self.assertTrue(browser.headers['Status'].startswith('404'))
     self.assertEqual(browser.headers['Content-Type'], 'application/json')
     response = json.loads(browser.contents)
     self.assertEqual(set(response), set(['type', 'message']))
     self.assertEqual(response['type'], 'error')
     self.assertEqual(response['message'], 'Unknown resource requested.')
Exemple #48
0
 def test_view(self):
     import json
     browser = Browser()
     browser.raiseHttpErrors = False
     browser.open('http://nohost/plone/api/countries')
     self.assertTrue(browser.headers['Status'].startswith('401'))
     self.assertEqual(browser.headers['Content-Type'], 'application/json')
     response = json.loads(browser.contents)
     self.assertEqual(set(response), set(['type', 'message']))
     self.assertEqual(response['type'], 'error')
     self.assertEqual(response['message'], 'Access denied.')
Exemple #49
0
 def test_user_info(self):
     import json
     from euphorie.client.tests.utils import addAccount
     from euphorie.client.api.authentication import generate_token
     account = addAccount()
     browser = Browser()
     browser.addHeader('X-Euphorie-Token', generate_token(account))
     browser.handleErrors = False
     browser.open('http://nohost/plone/client/api/users/1')
     response = json.loads(browser.contents)
     self.assertEqual(response['type'], 'user')
 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'))
Exemple #51
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)
Exemple #52
0
 def test_get(self):
     import json
     from euphorie.client.api.authentication import generate_token
     self.loginAsPortalOwner()
     (account, survey, survey_session) = _setup_session(self.portal)
     browser = Browser()
     browser.addHeader('X-Euphorie-Token', generate_token(account))
     browser.open('http://nohost/plone/client/api/users/1/sessions/1/1/1')
     self.assertEqual(browser.headers['Content-Type'], 'application/json')
     response = json.loads(browser.contents)
     self.assertEqual(response['type'], 'risk')
Exemple #53
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
Exemple #54
0
 def test_do_GET_basic(self):
     import json
     from euphorie.client.api.authentication import generate_token
     from euphorie.client.tests.utils import addAccount
     account = addAccount()
     browser = Browser()
     browser.addHeader('X-Euphorie-Token', generate_token(account))
     browser.open('http://nohost/plone/client/api/users/1/sessions')
     self.assertEqual(browser.headers['Content-Type'], 'application/json')
     response = json.loads(browser.contents)
     self.assertEqual(set(response), set(['sessions']))
     self.assertEqual(response['sessions'], [])
Exemple #55
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
Exemple #56
0
 def test_authenticated_user(self):
     import json
     from ...tests.utils import createSector
     from ..authentication import generate_token
     sector = createSector(self.portal, login='******', password=u'sector')
     browser = Browser()
     browser.handleErrors = False
     browser.addHeader('X-Euphorie-Token', generate_token(sector))
     browser.open('http://nohost/plone/api/countries/nl/managers')
     response = json.loads(browser.contents)
     self.assertEqual(set(response), set(['managers']))
     self.assertEqual(response['managers'], [])