예제 #1
0
 def test_get(self):
     import datetime
     import json
     from z3c.saconfig import Session
     from euphorie.client.model import Company
     from euphorie.client.model import SurveySession
     from euphorie.content.tests.utils import BASIC_SURVEY
     from euphorie.client.tests.utils import addAccount
     from euphorie.client.tests.utils import addSurvey
     from euphorie.client.api.authentication import generate_token
     from Products.Five.testbrowser import Browser
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     account = addAccount(password='******')
     survey_session = SurveySession(
             title=u'Dummy session',
             created=datetime.datetime(2012, 4, 22, 23, 5, 12),
             modified=datetime.datetime(2012, 4, 23, 11, 50, 30),
             zodb_path='nl/ict/software-development',
             account=account,
             company=Company(country='nl',
                             employees='1-9',
                             referer='other'))
     Session.add(survey_session)
     browser = Browser()
     browser.addHeader('X-Euphorie-Token', generate_token(account))
     browser.open(
             'http://nohost/plone/client/api/users/1/sessions/1/company')
     self.assertEqual(browser.headers['Content-Type'], 'application/json')
     response = json.loads(browser.contents)
     self.assertEqual(response['type'], 'company')
예제 #2
0
 def test_with_introduction(self):
     import datetime
     import json
     from z3c.saconfig import Session
     from euphorie.client.model import SurveySession
     from euphorie.client.api.authentication import generate_token
     from euphorie.content.tests.utils import BASIC_SURVEY
     from euphorie.client.tests.utils import addAccount
     from euphorie.client.tests.utils import addSurvey
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     survey = self.portal.client['nl']['ict']['software-development']
     survey.introduction = u'<p>Fancy intro.</p>'
     account = addAccount(password='******')
     survey_session = SurveySession(
             title=u'Dummy session',
             created=datetime.datetime(2012, 4, 22, 23, 5, 12),
             modified=datetime.datetime(2012, 4, 23, 11, 50, 30),
             zodb_path='nl/ict/software-development',
             account=account)
     Session.add(survey_session)
     browser = Browser()
     browser.addHeader('X-Euphorie-Token', generate_token(account))
     browser.open('http://nohost/plone/client/api/users/1/sessions/1')
     self.assertEqual(browser.headers['Content-Type'], 'application/json')
     response = json.loads(browser.contents)
     self.assertTrue('introduction' in response)
     self.assertEqual(response['introduction'], u'<p>Fancy intro.</p>')
예제 #3
0
 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 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 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'])
예제 #6
0
 def createClientBrowser(self):
     from Products.Five.testbrowser import Browser
     from euphorie.client.tests.utils import registerUserInClient
     browser = Browser()
     browser.open(self.portal.client.nl["ict"]["software-development"].absolute_url())
     registerUserInClient(browser)
     return browser
예제 #7
0
    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'], [])
예제 #8
0
    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')
예제 #9
0
 def test_browser_require_authentication(self):
     self.loginAsPortalOwner()
     self.portal.sectors['nl'].invokeFactory('euphorie.countrymanager', 'manager')
     browser = Browser()
     browser.raiseHttpErrors = False
     browser.open('http://nohost/plone/api/countries/nl/managers/manager')
     self.assertTrue(browser.headers['Status'].startswith('401'))
예제 #10
0
 def testEmail(self):
     from euphorie.client.tests.utils import MockMailFixture
     from euphorie.client.tests.utils import addAccount
     self.addDummySurvey()
     addAccount()
     mail_fixture = MockMailFixture()
     self.portal.email_from_address = "*****@*****.**"
     self.portal.email_from_name = "Euphorie website"
     browser = Browser()
     browser.open(self.portal.client.nl.absolute_url())
     browser.getLink('Login').click()
     browser.getLink("I forgot my password").click()
     browser.getControl(name="loginname").value = "*****@*****.**"
     browser.getControl(name="next").click()
     self.assertEqual(len(mail_fixture.storage), 1)
     (args, kw) = mail_fixture.storage[0]
     (mail, mto, mfrom) = args[:3]
     self.assertEqual(mfrom, "*****@*****.**")
     self.assertEqual(mto, "*****@*****.**")
     self.assertEqual(
             unicode(mail["Subject"]),
             u"OiRA registration reminder")
     body = mail.get_payload(0).get_payload(decode=True)\
             .decode(mail.get_content_charset("utf-8"))
     self.failUnless(u"Øle" in body)
예제 #11
0
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)
예제 #12
0
    def test_get_no_company_data_present(self):
        import datetime
        import json
        from z3c.saconfig import Session
        from euphorie.client.model import SurveySession
        from euphorie.content.tests.utils import BASIC_SURVEY
        from euphorie.client.tests.utils import addAccount
        from euphorie.client.tests.utils import addSurvey
        from euphorie.client.api.authentication import generate_token
        from Products.Five.testbrowser import Browser

        self.loginAsPortalOwner()
        addSurvey(self.portal, BASIC_SURVEY)
        account = addAccount(password="******")
        survey_session = SurveySession(
            title=u"Dummy session",
            created=datetime.datetime(2012, 4, 22, 23, 5, 12),
            modified=datetime.datetime(2012, 4, 23, 11, 50, 30),
            zodb_path="nl/ict/software-development",
            account=account,
        )
        Session.add(survey_session)
        browser = Browser()
        browser.addHeader("X-Euphorie-Token", generate_token(account))
        browser.open("http://nohost/plone/client/api/users/1/sessions/1/company")
        self.assertEqual(browser.headers["Content-Type"], "application/json")
        response = json.loads(browser.contents)
        self.assertEqual(response["type"], "company")
예제 #13
0
파일: base.py 프로젝트: Vinsurya/Plone
 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
예제 #14
0
 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'
예제 #15
0
파일: tests.py 프로젝트: biodec/munin.zope
 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
예제 #16
0
 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)
예제 #17
0
 def test_api_access(self):
     from Products.Five.testbrowser import Browser
     browser = Browser()
     browser.open('http://nohost/plone/client/api')
     self.assertEqual(
             browser.headers['Content-Type'],
             'application/json')
예제 #18
0
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)
예제 #19
0
 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
예제 #20
0
 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
예제 #21
0
 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
예제 #22
0
 def test_browser_require_authentication(self):
     self.loginAsPortalOwner()
     self.portal.sectors['nl'].invokeFactory('euphorie.countrymanager',
                                             'manager')
     browser = Browser()
     browser.raiseHttpErrors = False
     browser.open('http://nohost/plone/api/countries/nl/managers/manager')
     self.assertTrue(browser.headers['Status'].startswith('401'))
예제 #23
0
    def createClientBrowser(self):
        from euphorie.client.tests.utils import registerUserInClient
        from Products.Five.testbrowser import Browser

        browser = Browser()
        browser.open(self.portal.client.nl["ict"]
                     ["software-development"].absolute_url())
        registerUserInClient(browser)
        return browser
예제 #24
0
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'
예제 #25
0
 def testTraverser(self):
     """ Test the ClientPublishTraverser in osha.oira/client.py
     """
     from Products.Five.testbrowser import Browser
     from ..interfaces import IOSHAClientSkinLayer
     from euphorie.client.utils import locals
     browser = Browser()
     browser.open(self.portal.client.absolute_url())
     self.assertEquals(IOSHAClientSkinLayer.providedBy(locals.request), True)
예제 #26
0
 def testUnknownAccount(self):
     self.addDummySurvey()
     browser = Browser()
     browser.open(self.portal.client.nl.absolute_url())
     browser.getLink('Login').click()
     browser.getLink("I forgot my password").click()
     browser.getControl(name="loginname").value = "*****@*****.**"
     browser.getControl(name="next").click()
     self.failUnless("Unknown email address" in browser.contents)
예제 #27
0
 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
예제 #28
0
    def testTraverser(self):
        """Test the ClientPublishTraverser in osha.oira/client.py"""
        from ..interfaces import IOSHAClientSkinLayer
        from euphorie.client.utils import locals
        from Products.Five.testbrowser import Browser

        browser = Browser()
        browser.open(self.portal.client.absolute_url())
        self.assertEquals(IOSHAClientSkinLayer.providedBy(locals.request), True)
예제 #29
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
예제 #30
0
 def test_get_version(self):
     import json
     browser = Browser()
     browser.open('http://nohost/plone/client/api')
     self.assertEqual(browser.headers['Content-Type'], 'application/json')
     response = json.loads(browser.contents)
     self.assertEqual(set(response),
                      set(['api-version', 'euphorie-version']))
     self.assertEqual(response['api-version'], [1, 0])
예제 #31
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')
예제 #32
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')
예제 #33
0
 def test_authenticated_user(self):
     import json
     from ...tests.utils import createSector
     from ..authentication import generate_token
     sector = createSector(self.portal, login='******', password=u'sector')
     browser = Browser()
     browser.addHeader('X-Euphorie-Token', generate_token(sector))
     browser.open('http://nohost/plone/api')
     response = json.loads(browser.contents)
     self.assertEqual(response['account'], 'sector')
예제 #34
0
 def test_get(self):
     import json
     from euphorie.content.tests.utils import BASIC_SURVEY
     from euphorie.client.tests.utils import addSurvey
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     browser = Browser()
     browser.open('http://nohost/plone/client/api/surveys/nl')
     response = json.loads(browser.contents)
     self.assertEqual(response['id'], 'nl')
예제 #35
0
 def test_get_version(self):
     import json
     browser = Browser()
     browser.open('http://nohost/plone/client/api')
     self.assertEqual(browser.headers['Content-Type'], 'application/json')
     response = json.loads(browser.contents)
     self.assertEqual(
             set(response),
             set(['api-version', 'euphorie-version']))
     self.assertEqual(response['api-version'], [1, 0])
예제 #36
0
    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
예제 #37
0
 def test_get(self):
     import json
     from euphorie.content.tests.utils import BASIC_SURVEY
     from euphorie.client.tests.utils import addSurvey
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     browser = Browser()
     browser.open('http://nohost/plone/client/api/surveys/nl/ict')
     response = json.loads(browser.contents)
     self.assertEqual(response['id'], 'ict')
 def test_surveys_filtered_by_language(self):
     from euphorie.client.tests.utils import registerUserInClient
     survey = """<sector xmlns="http://xml.simplon.biz/euphorie/survey/1.0">
                   <title>Sector</title>
                   <survey>
                     <title>Survey</title>
                     <language>en</language>
                   </survey>
                 </sector>"""
     survey_nl = \
             """<sector xmlns="http://xml.simplon.biz/euphorie/survey/1.0">
                 <title>Branche</title>
                 <survey>
                   <title>Vragenlijst</title>
                   <language>nl</language>
                 </survey>
               </sector>"""
     self.loginAsPortalOwner()
     addSurvey(self.portal, survey)
     addSurvey(self.portal, survey_nl)
     browser = Browser()
     browser.open(self.portal.client.absolute_url())
     browser.getLink("Nederlands").click()
     registerUserInClient(browser, link="Registreer")
     self.assertEqual(
             browser.url,
             "http://nohost/plone/client/nl/?language=nl-NL")
     self.assertEqual(browser.getControl(name="survey").options,
             ["branche/vragenlijst"])
     browser.open(
             "%s?language=en" % self.portal.client["nl"].absolute_url())
     self.assertEqual(browser.getControl(name="survey").options,
             ["sector/survey"])
예제 #39
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')
예제 #40
0
 def test_get(self):
     import json
     from euphorie.client.api.authentication import generate_token
     self.loginAsPortalOwner()
     (account, survey, survey_session) = _setup_session(self.portal)
     browser = Browser()
     browser.addHeader('X-Euphorie-Token', generate_token(account))
     browser.open('http://nohost/plone/client/api/users/1/sessions/1/1/1')
     self.assertEqual(browser.headers['Content-Type'], 'application/json')
     response = json.loads(browser.contents)
     self.assertEqual(response['type'], 'risk')
예제 #41
0
 def test_404_handled(self):
     import json
     browser = Browser()
     browser.raiseHttpErrors = False
     browser.open('http://nohost/plone/api/unknown')
     self.assertTrue(browser.headers['Status'].startswith('404'))
     self.assertEqual(browser.headers['Content-Type'], 'application/json')
     response = json.loads(browser.contents)
     self.assertEqual(set(response), set(['type', 'message']))
     self.assertEqual(response['type'], 'error')
     self.assertEqual(response['message'], 'Unknown resource requested.')
예제 #42
0
 def test_view(self):
     import json
     browser = Browser()
     browser.raiseHttpErrors = False
     browser.open('http://nohost/plone/api/countries')
     self.assertTrue(browser.headers['Status'].startswith('401'))
     self.assertEqual(browser.headers['Content-Type'], 'application/json')
     response = json.loads(browser.contents)
     self.assertEqual(set(response), set(['type', 'message']))
     self.assertEqual(response['type'], 'error')
     self.assertEqual(response['message'], 'Access denied.')
예제 #43
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')
    def testUpdateModeAbortIfNoMatch(self):
        self._assertNoExistingTestContact()

        # set actionIfNoExistingObject to 'abort'
        self.ff1.contact_adapter.setActionIfNoExistingObject('abort')
        
        # open a test browser on the initial form ... should get redirected
        # to the site root with a portal message.
        browser = Browser()
        browser.open('http://nohost/plone/ff1')
        self.assertEqual(browser.url, 'http://nohost/plone')
        self.failUnless('Could not find item to edit.' in browser.contents)
예제 #45
0
    def test_404_handled(self):
        import json

        browser = Browser()
        browser.raiseHttpErrors = False
        browser.open("http://nohost/plone/api/unknown")
        self.assertTrue(browser.headers["Status"].startswith("404"))
        self.assertEqual(browser.headers["Content-Type"], "application/json")
        response = json.loads(browser.contents)
        self.assertEqual(set(response), set(["type", "message"]))
        self.assertEqual(response["type"], "error")
        self.assertEqual(response["message"], "Unknown resource requested.")
예제 #46
0
    def test_view(self):
        import json

        browser = Browser()
        browser.raiseHttpErrors = False
        browser.open("http://nohost/plone/api/countries")
        self.assertTrue(browser.headers["Status"].startswith("401"))
        self.assertEqual(browser.headers["Content-Type"], "application/json")
        response = json.loads(browser.contents)
        self.assertEqual(set(response), set(["type", "message"]))
        self.assertEqual(response["type"], "error")
        self.assertEqual(response["message"], "Access denied.")
예제 #47
0
def getBrowser(url):
    browser = Browser()
    browser.open(url)
    try:
        browser.getLink('Log in').click()
    except LinkNotFoundError:
        #!Plone4
        pass
    browser.getControl(name='__ac_name').value = portal_owner
    browser.getControl(name='__ac_password').value = default_password
    browser.getControl(name='submit').click()
    return browser
예제 #48
0
 def setUp(self):
     from Products.Five.testbrowser import Browser
     from euphorie.client.tests.utils import addSurvey
     from euphorie.client.tests.utils import registerUserInClient
     from euphorie.content.tests.utils import BASIC_SURVEY
     super(AccountDeleteTests, self).setUp()
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     survey = self.portal.client["nl"]["ict"]["software-development"]
     self.browser = Browser()
     self.browser.open(survey.absolute_url())
     registerUserInClient(self.browser)
예제 #49
0
 def test_do_GET_basic(self):
     import json
     from euphorie.client.api.authentication import generate_token
     from euphorie.client.tests.utils import addAccount
     account = addAccount()
     browser = Browser()
     browser.addHeader('X-Euphorie-Token', generate_token(account))
     browser.open('http://nohost/plone/client/api/users/1/sessions')
     self.assertEqual(browser.headers['Content-Type'], 'application/json')
     response = json.loads(browser.contents)
     self.assertEqual(set(response), set(['sessions']))
     self.assertEqual(response['sessions'], [])
예제 #50
0
 def test_404_handled(self):
     import json
     browser = Browser()
     browser.raiseHttpErrors = False
     browser.open('http://nohost/plone/client/api/unknown')
     self.assertTrue(browser.headers['Status'].startswith('404'))
     self.assertEqual(browser.headers['Content-Type'], 'application/json')
     response = json.loads(browser.contents)
     self.assertEqual(
             set(response),
             set(['type', 'message']))
     self.assertEqual(response['type'], 'error')
     self.assertEqual(response['message'], 'Unknown resource requested.')
예제 #51
0
 def test_valid_login(self):
     import json
     from ...tests.utils import createSector
     createSector(self.portal, id='my-sector', country='nl',
                 login='******', password=u'secret')
     browser = Browser()
     browser.post('http://nohost/plone/api/authenticate',
             '{"login": "******", "password": "******"}')
     response = json.loads(browser.contents)
     self.assertEqual(set(response), set(['token', 'title', 'login', 'url']))
     self.assertEqual(
             response['url'],
             'http://nohost/plone/api/countries/nl/sectors/my-sector')
예제 #52
0
 def test_View(self):
     import json
     import mock
     with mock.patch('euphorie.content.api.entry.View.do_GET',
                     sideEffect=RuntimeError):
         browser = Browser()
         browser.raiseHttpErrors = False
         browser.open('http://nohost/plone/api')
         self.assertTrue(browser.headers['Status'].startswith('500'))
         response = json.loads(browser.contents)
         self.assertEqual(set(response), set(['type', 'message']))
         self.assertEqual(response['type'], 'error')
         self.assertEqual(response['message'],
                          u'An unknown error occurred.')
예제 #53
0
class CKEditorTestCase(ptc.FunctionalTestCase):
    """base test case with convenience methods for all ckeditor tests"""
    def afterSetUp(self):
        super(CKEditorTestCase, self).afterSetUp()
        self.browser = Browser()
        self.uf = self.portal.acl_users
        self.uf.userFolderAddUser('root', 'secret', ['Manager'], [])
        self.ptool = getToolByName(self.portal, 'portal_properties')

    def loginAsManager(self, user='******', pwd='secret'):
        """points the browser to the login screen and logs in as user root with
           Manager role."""
        self.browser.open('http://nohost/plone/')
        self.browser.getLink('Log in').click()
        self.browser.getControl('Login Name').value = user
        self.browser.getControl('Password').value = pwd
        self.browser.getControl('Log in').click()

    class layer(PloneSite):
        @classmethod
        def setUp(cls):
            # doctests don't play nicely with ipython
            try:
                iphook = sys.displayhook
                sys.displayhook = sys.__displayhook__
            except:
                pass

        @classmethod
        def tearDown(cls):
            try:
                sys.displayhook = iphook
            except:
                pass
예제 #54
0
class TestCase(ptc.FunctionalTestCase):
    """ We use this base class for all the tests in this package. If necessary,
        we can put common utility or setup code in here. This applies to unit
        test cases. """
    _configure_portal = False

    def beforeTearDown(self):
        pass

    def afterSetUp(self):
        here = abspath(dirname(__file__))
        url = urllib.pathname2url(here)
        self.testsite = 'file://%s/test_staticsite' % url

        self.portal.error_log._ignored_exceptions = ()

        self.portal.acl_users.portal_role_manager.updateRolesList()

        self.portal.acl_users._doAddUser('manager', 'pass', ('Manager', ), [])
        self.login('manager')

        from Products.Five.testbrowser import Browser
        self.browser = Browser()
        #        self.setRoles(('Manager',))
        self.browser.open(self.portal.absolute_url() + '/login_form')
        self.browser.getControl(name='__ac_name').value = 'manager'
        self.browser.getControl(name='__ac_password').value = 'pass'
        self.browser.getControl(name='submit').click()
        self.browser.open(self.portal.absolute_url())
    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'])
예제 #56
0
 def test_login_not_case_sensitive(self):
     from euphorie.content.tests.utils import BASIC_SURVEY
     from euphorie.client.tests.utils import addSurvey
     from euphorie.client.tests.utils import addAccount
     self.loginAsPortalOwner()
     addSurvey(self.portal, BASIC_SURVEY)
     addAccount(password='******')
     browser = Browser()
     browser.open(self.portal.client.nl.absolute_url())
     browser.getLink('Login').click()
     browser.getControl(name='__ac_name').value = '*****@*****.**'
     browser.getControl(name='__ac_password:utf8:ustring').value = 'secret'
     browser.getControl(name="next").click()
     self.assertTrue('@@login' not in browser.url)