예제 #1
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'))
예제 #2
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')
예제 #3
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')
예제 #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_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'))
예제 #6
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')
예제 #7
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')
예제 #8
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.')
예제 #9
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.')
예제 #10
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.")
예제 #11
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.")
예제 #12
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.")
예제 #13
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.')
예제 #14
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.')
예제 #15
0
 def test_View(self):
     import json
     import mock
     with mock.patch('euphorie.client.api.entry.View.do_GET',
             sideEffect=RuntimeError):
         browser = Browser()
         browser.raiseHttpErrors = False
         browser.open('http://nohost/plone/client/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.')
예제 #16
0
 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')
예제 #17
0
 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')
예제 #18
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')
예제 #19
0
 def test_require_authentication(self):
     browser = Browser()
     browser.raiseHttpErrors = False
     browser.open('http://nohost/plone/api/countries/nl')
     self.assertTrue(browser.headers['Status'].startswith('401'))
예제 #20
0
 def test_require_authentication(self):
     browser = Browser()
     browser.raiseHttpErrors = False
     browser.open('http://nohost/plone/api/countries/nl/managers')
     self.assertTrue(browser.headers['Status'].startswith('401'))