def getBrowser(self, loggedIn=True): """ instantiate and return a testbrowser for convenience """ browser = Browser() if loggedIn: browser.addHeader('Authorization', 'Basic %s:%s' % ('manager', 's3kr3t')) return browser
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 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')
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 ReviewListTestCase(FunctionalTestCase): """dsfsdaf""" 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 createDocument(self, id, title, description): self.setRoles([ 'Manager', ]) self.portal.invokeFactory(id=id, type_name='Document') doc = getattr(self.portal, id) doc.setTitle(title) doc.setDescription(description) # we don't want it in the navigation doc.setExcludeFromNav(True) doc.reindexObject() return doc def submitToReview(self, obj): '''call the workflow action 'submit' for an object''' self.wftool.doActionFor(obj, 'submit') def test_unauthenticated(self): ''' unauthenticated users do not have the necessary permissions to view the review list ''' self.browser.open('http://nohost/plone/full_review_list') self.assertTrue('Login Name' in self.browser.contents) def test_authenticated(self): ''' unauthenticated users do not have the necessary permissions to view the review list ''' self.browser.addHeader('Authorization', 'Basic %s:%s' % ('reviewer', 'secret')) self.browser.open('http://nohost/plone/full_review_list') self.assertTrue('Full review list:' in self.browser.contents) def test_with_content(self): ''' unauthenticated users do not have the necessary permissions to view the review list ''' doc = self.createDocument('testdoc', 'Test Document', 'Test Description') self.wftool.doActionFor(doc, 'submit') self.browser.addHeader('Authorization', 'Basic %s:%s' % ('reviewer', 'secret')) self.browser.open('http://nohost/plone/full_review_list') self.assertTrue('Full review list:' in self.browser.contents) # test if the table with review items contains an entry for testdoc self.assertTrue('value="/plone/testdoc"' in self.browser.contents)
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_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 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 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 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 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_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_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': 'Jony Smith', 'email': '*****@*****.**', }, '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')
class ReviewListTestCase(FunctionalTestCase): """dsfsdaf""" 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 createDocument(self, id, title, description): self.setRoles(['Manager', ]) self.portal.invokeFactory(id=id, type_name='Document') doc = getattr(self.portal, id) doc.setTitle(title) doc.setDescription(description) # we don't want it in the navigation doc.setExcludeFromNav(True) doc.reindexObject() return doc def submitToReview(self, obj): '''call the workflow action 'submit' for an object''' self.wftool.doActionFor(obj, 'submit') def test_unauthenticated(self): ''' unauthenticated users do not have the necessary permissions to view the review list ''' self.browser.open('http://nohost/plone/full_review_list') self.assertTrue('Login Name' in self.browser.contents) def test_authenticated(self): ''' unauthenticated users do not have the necessary permissions to view the review list ''' self.browser.addHeader('Authorization', 'Basic %s:%s' % ('reviewer', 'secret')) self.browser.open('http://nohost/plone/full_review_list') self.assertTrue('Full review list:' in self.browser.contents) def test_with_content(self): ''' unauthenticated users do not have the necessary permissions to view the review list ''' doc = self.createDocument( 'testdoc', 'Test Document', 'Test Description') self.wftool.doActionFor(doc, 'submit') self.browser.addHeader('Authorization', 'Basic %s:%s' % ('reviewer', 'secret')) self.browser.open('http://nohost/plone/full_review_list') self.assertTrue('Full review list:' in self.browser.contents) # test if the table with review items contains an entry for testdoc self.assertTrue('value="/plone/testdoc"' in self.browser.contents)
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
class FunctionalTestCase(PloneTestCase.FunctionalTestCase): 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 getBrowser(self, loggedIn=True): """ instantiate and return a testbrowser for convenience """ browser = Browser() if loggedIn: user = PloneTestCase.default_user pwd = PloneTestCase.default_password browser.addHeader("Authorization", "Basic %s:%s" % (user, pwd)) 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_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.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 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 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_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'], [])
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 test_control_panel(self): browser = Browser() browser.addHeader('Authorization', 'Basic %s:%s' % (portal_owner, default_password)) jstool = self.portal.portal_javascripts # This is probably not the best way to test this # we want resources to be cooked after a form save # so we empty them first jstool.cookedresources = () browser.open(self.portal.absolute_url() + '/@@maps-controlpanel') browser.getControl('Default coordinates').value = "1.0, 1.5" browser.getControl('Save').click() self.failUnless(jstool.cookedresources)
def test_browser_authenticated_user(self): import json from ...tests.utils import createSector from ..authentication import generate_token self.loginAsPortalOwner() self.portal.sectors['nl'].invokeFactory('euphorie.countrymanager', 'manager') 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/manager') response = json.loads(browser.contents) self.assertEqual(response['type'], 'countrymanager')
def test_download_signatures(self): self.browser.open('http://nohost/plone/megaphone/signers') self.failIf('Download signatures' in self.browser.contents) browser = Browser() browser.handleErrors = False browser.addHeader('Authorization', 'Basic root:secret') browser.open('http://nohost/plone/megaphone/signers') browser.getLink('Download signatures as CSV').click() self.assertEqual('attachment; filename="saved-letters.csv"', browser.headers['content-disposition']) self.assertEqual('text/comma-separated-values;charset=utf-8', browser.headers['content-type']) self.assertEqual('body,Harvey,Frank,[email protected],,Seattle,WA,,body\r\n', browser.contents)
def test_delete_all_signatures(self): self.browser.open('http://nohost/plone/megaphone/signers') self.failIf('Delete all signatures' in self.browser.contents) browser = Browser() browser.handleErrors = False browser.addHeader('Authorization', 'Basic root:secret') browser.open('http://nohost/plone/megaphone/signers') self.failUnless('Harvey' in browser.contents) browser.getLink('Delete all signatures').click() self.assertEqual('http://nohost/plone/megaphone/signers', browser.url) self.failIf('Harvey' in browser.contents)
def test_remove_signature(self): # users can't remove unless they have Manage Portal permission self.browser.open('http://nohost/plone/megaphone/signers') self.failIf('Delete' in self.browser.contents) browser = Browser() browser.handleErrors = False browser.addHeader('Authorization', 'Basic root:secret') browser.open('http://nohost/plone/megaphone/signers') self.failUnless('Harvey' in browser.contents) browser.getLink('Delete').click() self.assertEqual('http://nohost/plone/megaphone/signers', browser.url) self.failIf('Harvey' in browser.contents)
def test_get_translation(self): import json from euphorie.client.api.authentication import generate_token self.loginAsPortalOwner() (account, survey, survey_session) = _setup_session(self.portal) survey.language = 'nl' 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) options = dict((opt['value'], opt['title']) for opt in response['frequency-options']) self.assertEqual(options['constant'], u'Voortdurend')
def test_control_panel(self): browser = Browser() browser.addHeader('Authorization', 'Basic %s:%s' % (portal_owner, default_password)) jstool = self.portal.portal_javascripts # This is probably not the best way to test this # we want resources to be cooked after a form save # so we empty them first #jstool.cookedresources = () jstool.cache_duration = 0 browser.open(self.portal.absolute_url() + '/@@maps-controlpanel') browser.getControl('Default coordinates').value = "1.0, 1.5" browser.getControl('Save').click() self.failUnless(jstool.cookedresources)
def test_get_translation(self): import json from euphorie.client.api.authentication import generate_token self.loginAsPortalOwner() (account, survey, survey_session) = _setup_session(self.portal) survey.language = "nl" 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) options = dict((opt["value"], opt["title"]) for opt in response["frequency-options"]) self.assertEqual(options["constant"], u"Voortdurend")
class PloneFormGenFunctionalTestCase(PloneTestCase.FunctionalTestCase): 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 afterSetUp(self): super(PloneTestCase.FunctionalTestCase, self).afterSetUp() self.portal.MailHost = MailHostMock() def setStatusCode(self, key, value): from ZPublisher import HTTPResponse HTTPResponse.status_codes[key.lower()] = value
def test_browser_sector_can_not_modify_manager(self): import mock import json from ...tests.utils import createSector from ..authentication import generate_token self.loginAsPortalOwner() self.portal.sectors['nl'].invokeFactory('euphorie.countrymanager', 'manager') sector = createSector(self.portal, login='******', password=u'sector') browser = Browser() browser.raiseHttpErrors = False browser.addHeader('X-Euphorie-Token', generate_token(sector)) with mock.patch('mechanize._opener.Request.get_method', return_value='PUT'): browser.post('http://nohost/plone/api/countries/nl/managers/manager', '{"title": "Hacked!"}') 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.handleErrors = False browser.addHeader('X-Euphorie-Token', generate_token(sector)) browser.open('http://nohost/plone/api/countries') response = json.loads(browser.contents) self.assertEqual(set(response), set(['countries'])) self.assertGreater(len(response['countries']), 30) nl = [c for c in response['countries'] if c['id'] == 'nl'][0] self.assertEqual(set(nl), set(['id', 'title', 'country-type'])) self.assertEqual(nl['id'], u'nl') self.assertEqual(nl['title'], u'The Netherlands') self.assertEqual(nl['country-type'], u'eu-member')
class UWOshSuccessFunctionalTestCase(UWOshSuccessTestCase, ptc.FunctionalTestCase): def __init__(self, methodName='runTest'): UWOshSuccessTestCase.__init__(self, methodName) ptc.FunctionalTestCase.__init__(self, methodName) self.browser = Browser() self.browser.addHeader('Accept-Language', 'en-US') def browserLogout(self): self.browser.open(self.portal.absolute_url() + '/logout') self.assertTrue('You are now logged out' in self.browser.contents) def browserLogin(self, username, password='******'): self.browser.open(self.portal.absolute_url() + '/login_form') self.browser.getControl(name='__ac_name').value = username self.browser.getControl(name='__ac_password').value = password self.browser.getControl(name='submit').click() self.assertTrue('You are now logged in' in self.browser.contents)
def test_browser_sector_can_not_modify_manager(self): import mock import json from ...tests.utils import createSector from ..authentication import generate_token self.loginAsPortalOwner() self.portal.sectors['nl'].invokeFactory('euphorie.countrymanager', 'manager') sector = createSector(self.portal, login='******', password=u'sector') browser = Browser() browser.raiseHttpErrors = False browser.addHeader('X-Euphorie-Token', generate_token(sector)) with mock.patch('mechanize._opener.Request.get_method', return_value='PUT'): browser.post( 'http://nohost/plone/api/countries/nl/managers/manager', '{"title": "Hacked!"}') response = json.loads(browser.contents) self.assertEqual(response['type'], 'error')
def test_get(self): import datetime import json from sqlalchemy.orm import object_session from euphorie.client.model import Risk from euphorie.client.model import ActionPlan from euphorie.client.api.authentication import generate_token from euphorie.client.api.tests.test_risk import _setup_session self.loginAsPortalOwner() (account, survey, survey_session) = _setup_session(self.portal) risk = object_session(survey_session).query(Risk).one() risk.action_plans.append( ActionPlan(action_plan=u'This is the plan', planning_start=datetime.date(2012, 6, 3))) browser = Browser() browser.addHeader('X-Euphorie-Token', generate_token(account)) browser.open('http://nohost/plone/client/api/users/1/' 'sessions/1/1/1/actionplans') self.assertEqual(browser.headers['Content-Type'], 'application/json') response = json.loads(browser.contents) self.assertTrue('action-plans' in response)
def test_get(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) 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.assertEqual( set(response), set([ 'id', 'survey', 'type', 'created', 'modified', 'title', 'next-step' ])) self.assertEqual(response['id'], 1) self.assertEqual(response['survey'], 'nl/ict/software-development') self.assertEqual(response['type'], 'session') self.assertEqual(response['title'], 'Dummy session') self.assertEqual(response['created'], '2012-04-22T23:05:12') self.assertEqual(response['modified'], '2012-04-23T11:50:30') self.assertEqual( response['next-step'], 'http://nohost/plone/client/api/users/1/sessions/1/' 'identification')
def test_add_new_manager(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/managers', json.dumps({'title': u'Jane Doe', 'login': '******', 'password': u'johny'})) response = json.loads(browser.contents) self.assertEqual(response['type'], 'countrymanager') self.assertEqual(response['id'], 'jane-doe') self.assertTrue('jane-doe' in country) jane = country['jane-doe'] self.assertEqual(jane.title, u'Jane Doe') self.assertEqual(jane.login, 'jane') self.assertEqual(jane.password, u'johny')
# PloneTestCase set up this product on installation. setup_product() ptc.setupPloneSite(products=['collective.weightedportlets']) class TestCase(ptc.PloneTestCase): """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. """ class FunctionalTestCase(ptc.FunctionalTestCase): """We use this class for functional integration tests that use doctest syntax. Again, we can put basic common utility or setup code in here. """ def afterSetUp(self): roles = ('Member', 'Contributor') self.portal.portal_membership.addMember('contributor', 'secret', roles, []) from Products.Five.testbrowser import Browser browser = Browser() from Products.PloneTestCase.setup import portal_owner, default_password browser.addHeader('Authorization', 'Basic %s:%s' % (portal_owner, default_password))
def testAliasesTab(self): browser = Browser() browser.addHeader("Authorization", "Basic %s:%s" % (portal_owner, default_password)) browser.open(self.portal.absolute_url()) aliases = browser.getLink(text='Aliases') self.failUnless('@@manage-aliases' in aliases.url)