예제 #1
0
    def test_recurrence(self):
        browser = Browser()
        browser.handleErrors = False
        browser.addHeader('Authorization', 'Basic %s:%s' % (portal_owner, default_password))
        folder_url = self.folder.absolute_url()

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

        # Make sure it's properly indexed:
        cat = self.portal.portal_catalog
        self.failUnless(len(cat(portal_type='Event', recurrence_days=732950)) == 1)
예제 #2
0
 def testUnicodeReportFilename(self):
     from euphorie.content.tests.utils import BASIC_SURVEY
     # Test for http://code.simplon.biz/tracker/euphorie/ticket/156
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     browser = Browser()
     survey_url = self.portal.client.nl["ict"]["software-development"]\
             .absolute_url()
     browser.open(survey_url)
     registerUserInClient(browser)
     # Create a new survey session
     browser.getControl(name="title:utf8:ustring").value = \
             u"Sessiøn".encode("utf-8")
     browser.getControl(name="next").click()
     # Start the survey
     browser.getForm().submit()
     browser.getLink("Start Risk Identification").click()
     # Force creation of the company data
     browser.open("%s/report/company" % survey_url)
     # Download the report
     browser.handleErrors = False
     browser.open("%s/report/download" % survey_url)
     self.assertEqual(browser.headers.type, "application/rtf")
     self.assertEqual(browser.headers.get("Content-Disposition"),
             'attachment; filename="Action plan Sessi\xc3\xb8n.rtf"')
예제 #3
0
 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")
예제 #4
0
 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')
예제 #5
0
 def test_browser(self):
     import datetime
     from z3c.saconfig import Session
     from euphorie.client.model import SurveySession
     from euphorie.client.api.authentication import generate_token
     from euphorie.content.tests.utils import BASIC_SURVEY
     from euphorie.client.tests.utils import addAccount
     from euphorie.client.tests.utils import addSurvey
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     account = addAccount(password='******')
     survey_session = SurveySession(
         title=u'Dummy session',
         created=datetime.datetime(2012, 4, 22, 23, 5, 12),
         modified=datetime.datetime(2012, 4, 23, 11, 50, 30),
         zodb_path='nl/ict/software-development',
         account=account)
     Session.add(survey_session)
     browser = Browser()
     browser.addHeader('X-Euphorie-Token', generate_token(account))
     browser.handleErrors = False
     browser.open('http://nohost/plone/client/api/users/1/'
                  'sessions/1/report-timeline')
     self.assertEqual(
         browser.headers['Content-Type'], 'application/vnd.openxmlformats-'
         'officedocument.spreadsheetml.sheet')
예제 #6
0
 def test_browser(self):
     import datetime
     from z3c.saconfig import Session
     from euphorie.client.model import SurveySession
     from euphorie.client.api.authentication import generate_token
     from euphorie.content.tests.utils import BASIC_SURVEY
     from euphorie.client.tests.utils import addAccount
     from euphorie.client.tests.utils import addSurvey
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     account = addAccount(password='******')
     survey_session = SurveySession(
             title=u'Dummy session',
             created=datetime.datetime(2012, 4, 22, 23, 5, 12),
             modified=datetime.datetime(2012, 4, 23, 11, 50, 30),
             zodb_path='nl/ict/software-development',
             account=account)
     Session.add(survey_session)
     browser = Browser()
     browser.addHeader('X-Euphorie-Token', generate_token(account))
     browser.handleErrors = False
     browser.open('http://nohost/plone/client/api/users/1/'
                     'sessions/1/report-timeline')
     self.assertEqual(
             browser.headers['Content-Type'],
             'application/vnd.openxmlformats-'
                                     'officedocument.spreadsheetml.sheet')
예제 #7
0
파일: tests.py 프로젝트: Vinsurya/Plone
 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))
예제 #8
0
 def test_browser_get(self):
     import datetime
     from z3c.saconfig import Session
     from euphorie.client.model import SurveySession
     from euphorie.content.tests.utils import BASIC_SURVEY
     from euphorie.client.tests.utils import addAccount
     from euphorie.client.tests.utils import addSurvey
     from euphorie.client.api.authentication import generate_token
     from tno.euphorie.model import DutchCompany
     from Products.Five.testbrowser import Browser
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     account = addAccount(password='******')
     survey_session = SurveySession(
             title=u'Dummy session',
             created=datetime.datetime(2012, 4, 22, 23, 5, 12),
             modified=datetime.datetime(2012, 4, 23, 11, 50, 30),
             zodb_path='nl/ict/software-development',
             account=account)
     survey_session.dutch_company = DutchCompany(
             title=u'Acme B.V.',
             employees='40h',
             email='*****@*****.**',
             submit_date=datetime.date(2012, 6, 6))
     Session.add(survey_session)
     browser = Browser()
     browser.addHeader('X-Euphorie-Token', generate_token(account))
     browser.handleErrors = False
     browser.open(
             'http://nohost/plone/client/api/users/1/sessions/1/'
             'report-actionplan')
     self.assertEqual(browser.headers['Content-Type'], 'application/rtf')
     self.assertTrue('Bedrijfsnaam' in browser.contents)
예제 #9
0
파일: tests.py 프로젝트: Vinsurya/Plone
 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))
예제 #10
0
파일: tests.py 프로젝트: Vinsurya/Plone
 def test_add_to_portal_root_save(self):
     self.setRoles(('Manager',))
     
     browser = Browser()
     browser.handleErrors = False
     
     # Login
     browser.open(self.portal.absolute_url() + '/login')
     browser.getControl(name='__ac_name').value = ptc.default_user
     browser.getControl(name='__ac_password').value = ptc.default_password
     browser.getControl('Log in').click()
     
     # Enter the add screen for a temporary portal_factory-managed object
     browser.open(self.portal.absolute_url() + '/portal_factory/Document/document.2010-02-04.2866363923/edit')
     
     # We should now have cookies with the drafts information
     cookies = browser.cookies.forURL(browser.url)
     self.assertEquals('"/plone/portal_factory/Document/document.2010-02-04.2866363923"', cookies['plone.app.drafts.path'])
     self.assertEquals('"0%3ADocument"', cookies['plone.app.drafts.targetKey'])
     self.failIf('plone.app.drafts.draftName' in browser.cookies.forURL(browser.url))
     
     # We can now fill in the required fields and save. The cookies should expire.
     
     browser.getControl(name='title').value = u"New document"
     browser.getControl(name='form.button.save').click()
     self.failIf('plone.app.drafts.targetKey' in browser.cookies.forURL(browser.url))
     self.failIf('plone.app.drafts.path' in browser.cookies.forURL(browser.url))
     self.failIf('plone.app.drafts.draftName' in browser.cookies.forURL(browser.url))
예제 #11
0
 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')
예제 #12
0
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
예제 #13
0
 def getBrowser(self, 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
예제 #14
0
 def test_authentication_success(self):
     import json
     from z3c.saconfig import Session
     from euphorie.client.model import Account
     Session.add(Account(loginname='john', password=u'jane'))
     browser = Browser()
     browser.handleErrors = False
     browser.post('http://nohost/plone/client/api/users/authenticate',
             '{"login": "******", "password": "******"}')
     response = json.loads(browser.contents)
     self.assertEqual(response['type'], 'user')
예제 #15
0
 def test_authentication_success(self):
     import json
     from z3c.saconfig import Session
     from euphorie.client.model import Account
     Session.add(Account(loginname='john', password=u'jane'))
     browser = Browser()
     browser.handleErrors = False
     browser.post('http://nohost/plone/client/api/users/authenticate',
                  '{"login": "******", "password": "******"}')
     response = json.loads(browser.contents)
     self.assertEqual(response['type'], 'user')
예제 #16
0
 def test_user_info(self):
     import json
     from euphorie.client.tests.utils import addAccount
     from euphorie.client.api.authentication import generate_token
     account = addAccount()
     browser = Browser()
     browser.addHeader('X-Euphorie-Token', generate_token(account))
     browser.handleErrors = False
     browser.open('http://nohost/plone/client/api/users/1')
     response = json.loads(browser.contents)
     self.assertEqual(response['type'], 'user')
예제 #17
0
 def test_user_info(self):
     import json
     from euphorie.client.tests.utils import addAccount
     from euphorie.client.api.authentication import generate_token
     account = addAccount()
     browser = Browser()
     browser.addHeader('X-Euphorie-Token', generate_token(account))
     browser.handleErrors = False
     browser.open('http://nohost/plone/client/api/users/1')
     response = json.loads(browser.contents)
     self.assertEqual(response['type'], 'user')
예제 #18
0
 def test_authenticated_user(self):
     import json
     from ...tests.utils import createSector
     from ..authentication import generate_token
     sector = createSector(self.portal, login='******', password=u'sector')
     browser = Browser()
     browser.handleErrors = False
     browser.addHeader('X-Euphorie-Token', generate_token(sector))
     browser.open('http://nohost/plone/api/countries/nl/managers')
     response = json.loads(browser.contents)
     self.assertEqual(set(response), set(['managers']))
     self.assertEqual(response['managers'], [])
    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)
예제 #21
0
 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')
예제 #22
0
 def startSurveySession(self):
     from Products.Five.testbrowser import Browser
     browser=Browser()
     browser.open(self.BASE_URL)
     # Register a new user
     testing.registerUserInClient(browser)
     # Create a new survey session
     browser.getControl(name="title:utf8:ustring").value="Test session"
     browser.getControl(name="next", index=1).click()
     # Start the survey
     browser.getForm().submit()
     browser.handleErrors=False
     return browser
예제 #23
0
 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_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)
예제 #25
0
    def startSurveySession(self):
        from Products.Five.testbrowser import Browser

        browser = Browser()
        browser.open(self.BASE_URL)
        # Register a new user
        testing.registerUserInClient(browser)
        # Create a new survey session
        browser.getLink(id="button-new-session").click()
        browser.getControl(name="title:utf8:ustring").value = "Test session"
        browser.getControl(name="next").click()
        # Start the survey
        browser.getForm().submit()
        browser.handleErrors = False
        return browser
 def test_must_select_valid_survey(self):
     import urllib
     from euphorie.client.tests.utils import registerUserInClient
     from euphorie.content.tests.utils import BASIC_SURVEY
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     browser = Browser()
     browser.open(self.portal.client['nl'].absolute_url())
     registerUserInClient(browser)
     data = urllib.urlencode({'action': 'new',
                              'survey': '',
                              'title:utf8:ustring': 'Foo'})
     browser.handleErrors = False
     browser.open(browser.url, data)
     self.assertEqual(browser.url, 'http://nohost/plone/client/nl')
    def test_petition_wizard(self):
        # log in
        browser = Browser()
        browser.handleErrors = False
        self.app.acl_users.userFolderAddUser('root', 'secret', ['Manager'], [])
        browser.addHeader('Authorization', 'Basic root:secret')
        browser.open('http://nohost/plone')

        # make sure we get the right steps for configuring a petition
        browser.getLink('Megaphone Action').click()
        browser.getControl(name='intro.widgets.megaphone_type:list').value = ['petition']
        browser.getControl('Continue').click()
        
        self.failUnless('General Settings' in browser.contents)
        browser.getControl('Title').value = 'Petition'
        browser.getControl('Continue').click()
        
        self.failUnless('Form Fields' in browser.contents)
        # remove captcha field
        browser.getControl(name='crud-edit.captcha.widgets.select:list').value = ['true']
        browser.getControl('Delete').click()
        browser.getControl('Continue').click()
        
        self.failUnless('Thank You to Activist' in browser.contents)
        if HAS_SALESFORCE:
            browser.getControl('Continue').click()
            self.failUnless('Save to Salesforce' in browser.contents)
        browser.getControl('Continue').click()
        self.failUnless('List of Signatures' in browser.contents)
        browser.getControl('Finish').click()
        self.failUnless('Megaphone Action Wizard Summary' in browser.contents)

        browser.getLink('View').click()
        self.assertEqual('http://nohost/plone/petition/view', browser.url)
        self.failUnless(IMegaphone.providedBy(self.portal.petition))
        
        # petitions don't get a 'Preview' button
        self.failIf('Preview' in browser.contents)
        
        # check the default fields
        expected_subitems = ['thank-you', 'body', 'first', 'last', 'email', 'street', 'city', 'state', 'zip', 'thank-you-email', 'saved-letters', 'rendered-letter']
        self.assertEqual(expected_subitems, self.portal.petition.objectIds())
        self.assertEqual('Additional Comment', self.portal.petition.body.Title())
        
        # return to edit and make sure we still get the petition steps
        browser.getLink('Edit').click()
        self.failUnless('List of Signatures' in browser.contents)
예제 #28
0
 def test_authenticated_user(self):
     import json
     from ...tests.utils import createSector
     from ..authentication import generate_token
     sector = createSector(self.portal, login='******', password=u'sector')
     browser = Browser()
     browser.handleErrors = False
     browser.addHeader('X-Euphorie-Token', generate_token(sector))
     browser.open('http://nohost/plone/api/countries')
     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')
예제 #29
0
 def test_must_select_valid_survey(self):
     import urllib
     from euphorie.client.tests.utils import registerUserInClient
     from euphorie.content.tests.utils import BASIC_SURVEY
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     browser = Browser()
     browser.open(self.portal.client['nl'].absolute_url())
     registerUserInClient(browser)
     data = urllib.urlencode({
         'action': 'new',
         'survey': '',
         'title:utf8:ustring': 'Foo'
     })
     browser.handleErrors = False
     browser.open(browser.url, data)
     self.assertEqual(browser.url, 'http://nohost/plone/client/nl')
 def test_gallery_views(self):
     browser = Browser()
     browser.handleErrors = False
     self.setRoles(("Manager",))
     self.portal.invokeFactory(id="test_gallery", type_name="Folder")
     gallery = self.portal.test_gallery
     self.portal.portal_workflow.doActionFor(gallery, "publish")
     populate_gallery(gallery)
     gallery.setLayout("galleryview")
     settings = GallerySettings(gallery)
     vocab = getUtility(IVocabularyFactory, "collective.plonetruegallery.DisplayTypes")(gallery)
     title = gallery.objectValues()[0].Title()
     for display_type in vocab.by_value.keys():
         settings.display_type = display_type
         # This test doesn't trigger the same error as seen in real plone
         # caused by unicode characters in image titles
         browser.open(gallery.absolute_url())
         self.assertTrue(title in browser.contents)
    def test_basic_views(self):
        browser = Browser()
        browser.addHeader('Authorization', 'Basic %s:%s' % (portal_owner, default_password))
        browser.handleErrors = False
        portal_url = self.portal.absolute_url()
        
        # First check that they work empty:
        browser.open(portal_url + '/a-calendar')
        browser.getLink('Week').click()
        browser.getLink('Day').click()
        browser.getLink('List').click()
        browser.getLink('Past').click()
        
        # Create an event:
        browser.open(portal_url + '/a-calendar')
        browser.getLink(id='event').click()
        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']
        form.getControl(name=self.submit_name).click()
        self.failUnless('an-event' in browser.url)

        # Check that it still works:
        browser.open(portal_url + '/a-calendar/day.html?date=2007-04-01')
        self.failUnless(self._isInCalendar(browser, "An Event"))
        browser.getLink('Week').click()
        self.failUnless(self._isInCalendar(browser, "An Event"))
        browser.getLink('Day').click()
        self.failUnless(self._isInCalendar(browser, "An Event"))
        # This event is in the past (unless you have borrowed Guidos time-machine)
        browser.getLink('Past').click()
        self.failUnless(self._isInCalendar(browser, "An Event"))
        browser.getLink('List').click()
        
        self.failIf(self._isInCalendar(browser, "An Event"))
 def testUpdateWhenObjectInitiallyFoundGoesMissing(self):
     # create a contact and load it into the form...
     self._createTestContact()
     browser = Browser()
     browser.handleErrors = False
     browser.open('http://nohost/plone/ff1')
     self.assertEqual(browser.getControl(name='comments').value, 'PloneTestCase')
     
     # now manually remove the new contact from Salesforce
     self.salesforce.delete(self._todelete[-1:])
     
     # on submission, the adapter will get a Id from the session and will try
     # to update the object with that Id, but we'll get an exception from SF
     # since the object no longer exists
     try:
         browser.getControl('Submit').click()
     except Exception, e:
         self.assertEqual(e.message,
             'Failed to update Contact in Salesforce: entity is deleted')
예제 #33
0
 def test_do_not_abort_on_far_future(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_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", index=1).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"]
     browser.getControl("next").click()
     # Move on to the risk's action plan form
     browser.getLink("Go to action plan").click()
     browser.getLink("Create action plan").click()
     browser.getLink("Next").click()
     # Try an early year
     browser.getControl(name="measure.action_plan:utf8:ustring:records")\
             .value = "Do something awesome"
     browser.getControl(name="measure.planning_start_day:records")\
             .value = "1"
     browser.getControl(name="measure.planning_start_month:records")\
             .value = ["2"]
     browser.getControl(name="measure.planning_start_year:records")\
             .value = "12345"
     browser.handleErrors = False
     browser.getControl("next").click()
     self.assertEqual(browser.url,
             "http://nohost/plone/client/nl/ict/"
             "software-development/actionplan/1/1")
     self.assertTrue(
             "Please enter a year between 2000 and 2100"
             in browser.contents)
예제 #34
0
 def _create_megaphone(self, type='letter'):
     browser = Browser()
     browser.handleErrors = False
     browser.addHeader('Authorization', 'Basic root:secret')
     browser.open('http://nohost/plone')
     browser.getLink('Megaphone Action').click()
     browser.getControl(name='intro.widgets.megaphone_type:list').value = [type]
     browser.getControl('Continue').click()
     browser.getControl('Title').value = 'Megaphone'
     browser.getControl('Continue').click()
     browser.getControl(name='crud-edit.captcha.widgets.select:list').value = ['true']
     browser.getControl('Delete').click()
     while 1:
         try:
             browser.getControl('Continue').click()
         except LookupError:
             break
     browser.getControl('Finish').click()
     browser.open('http://nohost/plone/megaphone')
     browser.getLink('Publish').click()
예제 #35
0
def doc_suite(test_dir, setUp=None, tearDown=None, globs=None):
    """Returns a test suite, based on doctests found in /doctest."""
    suite = []
    if globs is None:
        globs = globals()

    # preparing a few elements
    globs['test_dir'] = current_dir
    browser = Browser()
    browser.handleErrors = False
    globs['browser'] = browser

    flags = (doctest.ELLIPSIS | doctest.NORMALIZE_WHITESPACE
             | doctest.REPORT_ONLY_FIRST_FAILURE)

    package_dir = os.path.split(test_dir)[0]
    if package_dir not in sys.path:
        sys.path.append(package_dir)

    docs = []
    for dir_ in ('doctests', ):
        doctest_dir = os.path.join(package_dir, dir_)

        # filtering files on extension
        docs.extend([
            os.path.join(doctest_dir, doc) for doc in os.listdir(doctest_dir)
            if doc.endswith('.txt')
        ])

    for test in docs:
        suite.append(
            FunctionalDocFileSuite(test,
                                   optionflags=flags,
                                   globs=globs,
                                   setUp=setUp,
                                   tearDown=tearDown,
                                   test_class=TestCase,
                                   module_relative=False))

    return unittest.TestSuite(suite)
예제 #36
0
 def testShowFrenchEvaluation(self):
     from euphorie.content.tests.utils import BASIC_SURVEY
     # Test for http://code.simplon.biz/tracker/tno-euphorie/ticket/150
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     browser = Browser()
     survey = self.portal.client.nl["ict"]["software-development"]
     survey.evaluation_algorithm = u"french"
     survey["1"]["2"].type = "risk"
     browser.open(survey.absolute_url())
     registerUserInClient(browser)
     # Create a new survey session
     browser.getControl(name="title:utf8:ustring").value = \
             u"Sessiøn".encode("utf-8")
     browser.getControl(name="next", index=1).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"]
     browser.getControl("next").click()
     # Move on to the risk's action plan form
     browser.getLink("Run evaluation").click()
     browser.handleErrors = False
     browser.getLink("Next").click()
     # 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_ui(self):
        from Products.Five.testbrowser import Browser

        browser = Browser()
        browser.addHeader("Authorization", "Basic %s:%s" % (portal_owner, default_password))
        browser.handleErrors = False

        portal_url = self.portal.absolute_url()
        browser.open(portal_url)
        # Create a folder:
        browser.getLink("Folder").click()
        form = browser.getForm("folder-base-edit")
        form.getControl(name="title").value = "A Calendar"
        form.getControl(name="form_submit").click()

        # Create an event:
        browser.getLink(id="event").click()
        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"]
        form.getControl(name="form_submit").click()
        self.failUnless("an-event" in browser.url)

        browser.getLink("A Calendar").click()
        folder_url = browser.url
        browser.open(folder_url + "?date=2007-04-01")
        calendar = browser.contents[browser.contents.index('class="ploneCalendar"') :]
        self.failUnless("An Event" in calendar)
        browser.open(folder_url + "?date=2007-05-01")
        calendar = browser.contents[browser.contents.index('class="ploneCalendar"') :]
        self.failUnless("An Event" in calendar)
def doc_suite(test_dir, setUp=None, tearDown=None, globs=None):
    """Returns a test suite, based on doctests found in /doctest."""
    suite = []
    if globs is None:
        globs = globals()

    # preparing a few elements
    globs["test_dir"] = current_dir
    browser = Browser()
    browser.handleErrors = False
    globs["browser"] = browser

    flags = doctest.ELLIPSIS | doctest.NORMALIZE_WHITESPACE | doctest.REPORT_ONLY_FIRST_FAILURE | doctest.REPORT_UDIFF

    package_dir = os.path.split(test_dir)[0]
    if package_dir not in sys.path:
        sys.path.append(package_dir)

    docs = []
    for dir_ in ("doctests", "docs"):
        doctest_dir = os.path.join(package_dir, dir_)

        # filtering files on extension
        docs.extend([os.path.join(doctest_dir, doc) for doc in os.listdir(doctest_dir) if doc.endswith(".txt")])

    for test in docs:
        suite.append(
            FunctionalDocFileSuite(
                test,
                optionflags=flags,
                globs=globs,
                setUp=setUp,
                tearDown=tearDown,
                test_class=TestCase,
                module_relative=False,
            )
        )

    return unittest.TestSuite(suite)
예제 #39
0
 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')
예제 #40
0
    def XtestSkipChildrenFalseForMandatoryModules(self):
        """ Mandatory modules must have skip_children=False. It's possible that
            the module was optional with skip_children=True and now after the
            update must be mandatory.
        """
        survey = """<sector xmlns="http://xml.simplon.biz/euphorie/survey/1.0">
                      <title>Sector title</title>
                      <survey>
                          <title>Survey title</title>
                          <module optional="true">
                              <title>Module Title</title>
                              <description>&lt;p&gt;Testing ticket #3860&lt;/p&gt;</description>
                              <question>What is the sound of one hand clapping?</question>
                              <risk type="risk">
                                  <title>This risk exists</title>
                                  <problem-description>This risk doesn't exist</problem-description>
                                  <description>&lt;p&gt;asdg&lt;/p&gt;</description>
                                  <show-not-applicable>false</show-not-applicable>
                                  <evaluation-method>direct</evaluation-method>
                              </risk>
                          </module>
                      </survey>
                  </sector>"""

        self.loginAsPortalOwner()
        addSurvey(self.portal, survey)
        browser = Browser()
        client_survey = self.portal.client.nl["sector-title"]["survey-title"]
        browser.open(client_survey.absolute_url())
        registerUserInClient(browser)
        # Create a new survey session
        browser.getControl(name="title:utf8:ustring").value = "Test session"
        browser.getControl(name="next", index=1).click()
        # Start the survey
        browser.getForm().submit()
        # Enter the profile information
        browser.getLink("Start Risk Identification").click()
        # Set Skip-children to True
        module_identification_url = browser.url
        browser.handleErrors = False
        # XXX: The following breaks when testing with sqlite but not with
        # postgres.
        browser.getControl(name="skip_children:boolean").controls[1].click()
        browser.getControl(name="next", index=1).click()
        # Change the survey to make the module required and publish again
        from euphorie.client import publish
        survey = self.portal.sectors["nl"]["sector-title"]["survey-title"][
            "test-import"]
        module = survey['1']
        module.optional = False
        publisher = publish.PublishSurvey(survey, self.portal.REQUEST)
        publisher.publish()

        # We should get an update notification now
        browser.open(client_survey.absolute_url())
        browser.getLink("Start Risk Identification").click()
        # We should now be on the module
        self.assertEqual(browser.url, module_identification_url)
        # But this time, the module's "optional" question (i.e to skip the
        # children) should not be there
        self.assertRaises(LookupError,
                          browser.getControl,
                          name='skip_children:boolean')
        browser.getControl(name="next", index=1).click()
        # Now we must see the risk, i.e skip_children=False so we *must* answer
        # the risk
        self.assertEqual(
            "<legend>This risk exists</legend>" in browser.contents, True)
        # There are 2 inputs (2 radio, 1 hidden), for yes, no and postponed.
        self.assertEqual(len(browser.getControl(name="answer").controls), 3)
        self.assertEqual(
            browser.getControl(name="answer:default").value, 'postponed')