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 test_bad_login(self): browser = Browser() browser.raiseHttpErrors = False browser.post('http://nohost/plone/api/authenticate', '{"login": "******", "password": "******"}') self.assertTrue(browser.headers['Status'].startswith('403')) self.assertEqual(browser.headers['Content-Type'], 'application/json')
def test_add_new_sector(self): import json from ..authentication import generate_token self.loginAsPortalOwner() country = self.portal.sectors['nl'] country.invokeFactory('euphorie.countrymanager', 'manager', login='******', password=u'manager') browser = Browser() browser.handleErrors = False browser.raiseHttpErrors = False browser.addHeader('X-Euphorie-Token', generate_token(country['manager'])) browser.post('http://nohost/plone/api/countries/nl/sectors', json.dumps({'title': u'IT development', 'login': '******', 'contact': { 'name': u'Jony Smith', 'email': u'*****@*****.**', }, 'password': u'cobol-for-the-win'})) response = json.loads(browser.contents) self.assertEqual(response['type'], 'sector') self.assertEqual(response['id'], 'it-development') self.assertTrue('it-development' in country) sector = country['it-development'] self.assertEqual(sector.title, u'IT development') self.assertEqual(sector.login, 'it') self.assertEqual(sector.password, u'cobol-for-the-win')
def testUpdateModeInitialLoadAndSubmission(self): """Ensure that our Salesforce Adapter mapped objects find their way into the appropriate Salesforce.com instance. """ self._createTestContact() # open a test browser on the initial form browser = Browser() browser.open('http://nohost/plone/ff1') # update the comments field self.assertEqual(browser.getControl(name='comments').value, 'PloneTestCase') browser.getControl(name='comments').value = 'PloneTestCaseChanged' # submit again browser.getControl('Submit').click() # we should only get one record, and the name should be changed res = self.salesforce.query(['Id','LastName'],self.ff1.contact_adapter.getSFObjectType(), "Email='*****@*****.**'") for item in res['records']: self._todelete.append(item['Id']) self.assertEqual(1, res['size']) self.assertEqual('PloneTestCaseChanged', res['records'][0]['LastName'])
def _setup(self): PloneTestCase.FunctionalTestCase._setup(self) self.app.REQUEST['SESSION'] = Session() self.browser = Browser() self.app.acl_users.userFolderAddUser('root', 'secret', ['Manager'], []) self.browser.addHeader('Authorization', 'Basic root:secret') self.portal_url = 'http://nohost/plone'
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 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 afterSetUp(self): super(FolderTestCase, self).afterSetUp() from Products.Five.testbrowser import Browser self.browser = Browser() self.uf = self.portal.acl_users self.uf.userFolderAddUser('root', 'secret', ['Manager'], [])
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 testUnicodeReportFilename(self): from euphorie.content.tests.utils import BASIC_SURVEY # Test for http://code.simplon.biz/tracker/euphorie/ticket/156 self.loginAsPortalOwner() addSurvey(self.portal, BASIC_SURVEY) browser = Browser() survey_url = self.portal.client.nl["ict"]["software-development"]\ .absolute_url() browser.open(survey_url) registerUserInClient(browser) # Create a new survey session browser.getControl(name="title:utf8:ustring").value = \ u"Sessiøn".encode("utf-8") browser.getControl(name="next").click() # Start the survey browser.getForm().submit() browser.getLink("Start Risk Identification").click() # Force creation of the company data browser.open("%s/report/company" % survey_url) # Download the report browser.handleErrors = False browser.open("%s/report/download" % survey_url) self.assertEqual(browser.headers.type, "application/rtf") self.assertEqual(browser.headers.get("Content-Disposition"), 'attachment; filename="Action plan Sessi\xc3\xb8n.rtf"')
def getBrowser(self, loggedIn=True): """ instantiate and return a testbrowser for convenience """ browser = Browser() if loggedIn: auth = 'Basic %s' % self.getCredentials() browser.addHeader('Authorization', auth) return browser
def afterSetUp(self): super(ReviewListTestCase, self).afterSetUp() self.uf = self.portal.acl_users self.uf.userFolderAddUser('reviewer', 'secret', ['Reviewer'], []) self.browser = Browser() self.wftool = getToolByName(self.portal, 'portal_workflow')
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_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 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 testImageFromOtherSectorAccount(self): # http://code.simplon.biz/tracker/euphorie/ticket/143 import re from euphorie.content.tests.utils import createSector from euphorie.content.tests.utils import addSurvey from Products.Five.testbrowser import Browser sector = createSector(self.portal, login="******") self.loginAsPortalOwner() survey = addSurvey(sector) createSector(self.portal, id="sector2", login="******", password="******") self.logout() browser = Browser() browser.open("%s/@@login" % self.portal.absolute_url()) browser.getControl(name="__ac_name").value = "sector2" browser.getControl(name="__ac_password").value = "sector2" browser.getForm(id="loginForm").submit() risk = survey["1"]["2"] browser.open(risk.absolute_url()) match = re.search( r'<div class="introduction">\s*<img[^>]+src="([^"]+)', browser.contents) self.assertTrue(match) image_url = match.group(1) browser.open(image_url) self.assertEqual(browser.isHtml, False) self.assertEqual(browser.headers.maintype, "image")
def 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 getBrowser(self, loggedIn=True): """ instantiate and return a testbrowser for convenience """ browser = Browser() if loggedIn: user = ptc.default_user pwd = ptc.default_password browser.addHeader('Authorization', 'Basic %s:%s' % (user, pwd)) return browser
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 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 afterSetUp(self): super(PDFBookFunctionalTestCase, self).afterSetUp() self.makeBaseContent() self.browser = Browser() self.uf = self.portal.acl_users self.uf.userFolderAddUser('root', 'secret', ['Manager'], []) self.ptool = getToolByName(self.portal, 'portal_properties') self.site_props = self.ptool.site_properties return
def 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 getBrowser(loggedIn=False): """ instantiate and return a testbrowser for convenience """ browser = Browser() browser.handleErrors = True if loggedIn: user = PloneTestCase.default_user pwd = PloneTestCase.default_password browser.addHeader('Authorization', 'Basic %s:%s' % (user, pwd)) return browser
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)
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 test_authentication_failure(self): import json browser = Browser() browser.raiseHttpErrors = False browser.post('http://nohost/plone/client/api/users/authenticate', '{"login": "******", "password": "******"}') self.assertTrue(browser.headers['Status'].startswith('403')) self.assertEqual(browser.headers['Content-Type'], 'application/json') response = json.loads(browser.contents) self.assertEqual(response['type'], 'error')
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 afterSetUp(self): super(ControlPanelTestCase, self).afterSetUp() self.browser = Browser() self.uf = self.portal.acl_users self.uf.userFolderAddUser('root', 'secret', ['Manager'], []) self.ptool = getToolByName(self.portal, 'portal_properties') self.site_props = self.ptool.site_properties
def 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')