def test_browser_require_authentication(self): self.loginAsPortalOwner() self.portal.sectors['nl'].invokeFactory('euphorie.countrymanager', 'manager') browser = Browser() browser.raiseHttpErrors = False browser.open('http://nohost/plone/api/countries/nl/managers/manager') self.assertTrue(browser.headers['Status'].startswith('401'))
def test_bad_login(self): browser = Browser() browser.raiseHttpErrors = False browser.post('http://nohost/plone/api/authenticate', '{"login": "******", "password": "******"}') self.assertTrue(browser.headers['Status'].startswith('403')) self.assertEqual(browser.headers['Content-Type'], 'application/json')
def test_add_new_sector(self): import json from ..authentication import generate_token self.loginAsPortalOwner() country = self.portal.sectors['nl'] country.invokeFactory('euphorie.countrymanager', 'manager', login='******', password=u'manager') browser = Browser() browser.handleErrors = False browser.raiseHttpErrors = False browser.addHeader('X-Euphorie-Token', generate_token(country['manager'])) browser.post('http://nohost/plone/api/countries/nl/sectors', json.dumps({'title': u'IT development', 'login': '******', 'contact': { 'name': u'Jony Smith', 'email': u'*****@*****.**', }, 'password': u'cobol-for-the-win'})) response = json.loads(browser.contents) self.assertEqual(response['type'], 'sector') self.assertEqual(response['id'], 'it-development') self.assertTrue('it-development' in country) sector = country['it-development'] self.assertEqual(sector.title, u'IT development') self.assertEqual(sector.login, 'it') self.assertEqual(sector.password, u'cobol-for-the-win')
def 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')
def test_authentication_failure(self): import json browser = Browser() browser.raiseHttpErrors = False browser.post('http://nohost/plone/client/api/users/authenticate', '{"login": "******", "password": "******"}') self.assertTrue(browser.headers['Status'].startswith('403')) self.assertEqual(browser.headers['Content-Type'], 'application/json') response = json.loads(browser.contents) self.assertEqual(response['type'], 'error')
def test_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.')
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.')
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.")
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.")
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.")
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.')
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.')
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.')
def test_browser_sector_can_not_modify_manager(self): import mock import json from ...tests.utils import createSector from ..authentication import generate_token self.loginAsPortalOwner() self.portal.sectors['nl'].invokeFactory('euphorie.countrymanager', 'manager') sector = createSector(self.portal, login='******', password=u'sector') browser = Browser() browser.raiseHttpErrors = False browser.addHeader('X-Euphorie-Token', generate_token(sector)) with mock.patch('mechanize._opener.Request.get_method', return_value='PUT'): browser.post('http://nohost/plone/api/countries/nl/managers/manager', '{"title": "Hacked!"}') response = json.loads(browser.contents) self.assertEqual(response['type'], 'error')
def test_browser_sector_can_not_modify_manager(self): import mock import json from ...tests.utils import createSector from ..authentication import generate_token self.loginAsPortalOwner() self.portal.sectors['nl'].invokeFactory('euphorie.countrymanager', 'manager') sector = createSector(self.portal, login='******', password=u'sector') browser = Browser() browser.raiseHttpErrors = False browser.addHeader('X-Euphorie-Token', generate_token(sector)) with mock.patch('mechanize._opener.Request.get_method', return_value='PUT'): browser.post( 'http://nohost/plone/api/countries/nl/managers/manager', '{"title": "Hacked!"}') response = json.loads(browser.contents) self.assertEqual(response['type'], 'error')
def test_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')
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'))
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'))