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_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'])
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()
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"])
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())
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)
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))
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"])
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))
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))
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'])
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)
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()
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)
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())
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")
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'))
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"])
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)
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)
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')
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'])
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')
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
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 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
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 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)
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])
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()
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, '')
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')
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'])
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.')
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.')
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'))
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)
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')
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
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'], [])
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
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'], [])