def test_render_unauthorized(self): """ render a resource that requires authorization, but user hasn't auth'ed Verifies: returns 401 """ api = self.twisted_web_interface request = HTTPRequestProxy() resource = FunctionResource(api, self.return_list, auth=True) response = resource.render(request) self.assertEqual(request.response_code, 401)
def test_render_no_auth_required(self): """ rendering a resource that does not require authentication Verifies: * response returned """ api = self.twisted_web_interface request = HTTPRequestProxy() resource = FunctionResource(api, self.return_list, auth=False) response = resource.render(request) response = simplejson.loads(response) self.assertEqual([1,2,3], response)
def test_render_with_args(self): """ Renders a resource that requires args """ api = self.twisted_web_interface args = [1,2,3] kwargs = {'a':1, 'b':2, 'c':3} request = HTTPRequestProxy(args={'args':[simplejson.dumps(args)], \ 'kwargs':[simplejson.dumps(kwargs)]}) resource = FunctionResource(api, self.return_list, auth=False) response = resource.render(request) response = simplejson.loads(response) self.assertEqual([1,2,3], response) self.return_list.assertCalled(self, *args, **kwargs)
def test_render_with_user(self): """ render a resource that requires the session_id as an arg Verifies: * response is returned """ api = self.twisted_web_interface request = HTTPRequestProxy() resource = FunctionResource(api, self.return_list, auth=False, include_user=True) response = resource.render(request) response = simplejson.loads(response) self.assertEqual([1,2,3], response) self.return_list.assertCalled(self, 'SESSION_ID')
def test_render_deferred(self): """ Renders a resource that returns a deferred Verifies: * server NOT_DONE_YET returned * deferred callback writes to response """ self.deferred = Deferred() api = self.twisted_web_interface request = HTTPRequestProxy() resource = FunctionResource(api, self.return_deferred, auth=False) response = resource.render(request) self.assertEqual(server.NOT_DONE_YET, response) self.deferred.callback([1,2,3]) request.finish.assertCalled(self) self.assertEqual([1,2,3], simplejson.loads(request.writer.getvalue()))
def test_new_session(self): """ Test request from user without session Verifies: * session is created * session structure is correct """ api = self.twisted_web_interface request = HTTPRequestProxy() resource = FunctionResource(api, self.return_list) resource.render(request) self.assert_('SESSION_ID' in api.sessions) session = api.sessions['SESSION_ID'] self.assert_('expire' in session) self.assert_('auth' in session) self.assert_('challenge' in session) self.assertFalse(session['auth']) self.assertFalse(session['challenge'])
def test_render_error(self): """ renders a resource that throws an error Verifies: * returns 500 * response includes exception and stacktrace """ api = self.twisted_web_interface request = HTTPRequestProxy() resource = FunctionResource(api, self.raise_exception, auth=False) with MuteStdout(): response = resource.render(request) self.assertEqual(request.response_code, 500) self.assert_(isinstance(response,(str,))) response = simplejson.loads(response) self.assert_(isinstance(response, (dict,)), response) self.assert_('exception' in response, response) self.assert_('traceback' in response, response) self.assert_(isinstance(response['exception'], (str,)), response) self.assert_(isinstance(response['traceback'], (str,)), response)