def test_preprocess(self): def echo(x): return x self.called = False def preproc(sr, *args): self.called = True self.assertEquals(args, ('spam.eggs', )) self.assertTrue(isinstance(sr, gateway.ServiceRequest)) gw = gateway.BaseGateway({'echo': echo}, preprocessor=preproc) rp = amf3.RequestProcessor(gw) message = messaging.RemotingMessage(body=['spam.eggs'], operation='echo') request = remoting.Request('null', body=[message]) response = rp(request) ack = response.body self.assertTrue(isinstance(response, remoting.Response)) self.assertEquals(response.status, remoting.STATUS_OK) self.assertTrue(isinstance(ack, messaging.AcknowledgeMessage)) self.assertEquals(ack.body, 'spam.eggs') self.assertTrue(self.called)
def executeService(gw, service, *args): rp = amf3.RequestProcessor(gw) message = messaging.RemotingMessage(body=args, operation=service) request = remoting.Request('null', body=[message]) response = rp(request) return response
def test_async(self): message = messaging.AsyncMessage() rp = amf3.RequestProcessor(None) request = remoting.Request('null', body=[message]) response = rp(request) ack = response.body self.assertTrue(isinstance(response, remoting.Response)) self.assertEqual(response.status, remoting.STATUS_OK) self.assertTrue(isinstance(ack, messaging.AcknowledgeMessage))
def test_disconnect(self): message = messaging.CommandMessage(operation=12) rp = amf3.RequestProcessor(None) request = remoting.Request('null', body=[message]) response = rp(request) ack = response.body self.assertTrue(isinstance(response, remoting.Response)) self.assertEqual(response.status, remoting.STATUS_OK) self.assertTrue(isinstance(ack, messaging.AcknowledgeMessage))
def getProcessor(self, request): """ Returns request processor. @param request: The AMF message. @type request: L{Request<remoting.Request>} """ if request.target == 'null' or not request.target: from pyamf.remoting import amf3 return amf3.RequestProcessor(self) else: from pyamf.remoting import amf0 return amf0.RequestProcessor(self)
def test_request(self): def echo(x): return x gw = gateway.BaseGateway({'echo': echo}) rp = amf3.RequestProcessor(gw) message = messaging.RemotingMessage(body=['spam.eggs'], operation='echo') request = remoting.Request('null', body=[message]) response = rp(request) ack = response.body self.assertTrue(isinstance(response, remoting.Response)) self.assertEqual(response.status, remoting.STATUS_OK) self.assertTrue(isinstance(ack, messaging.AcknowledgeMessage)) self.assertEqual(ack.body, 'spam.eggs')
def test_too_many_args(self): def spam(bar): return bar gw = gateway.BaseGateway({'spam': spam}) rp = amf3.RequestProcessor(gw) message = messaging.RemotingMessage(body=['eggs', 'baz'], operation='spam') request = remoting.Request('null', body=[message]) response = rp(request) ack = response.body self.assertTrue(isinstance(response, remoting.Response)) self.assertEqual(response.status, remoting.STATUS_ERROR) self.assertTrue(isinstance(ack, messaging.ErrorMessage)) self.assertEqual(ack.faultCode, 'TypeError')
def test_error(self): def echo(x): raise TypeError gw = gateway.BaseGateway({'echo': echo}) rp = amf3.RequestProcessor(gw) message = messaging.RemotingMessage(body=['spam.eggs'], operation='echo') request = remoting.Request('null', body=[message]) response = rp(request) ack = response.body self.assertTrue(isinstance(response, remoting.Response)) self.assertEquals(response.status, remoting.STATUS_ERROR) self.assertTrue(isinstance(ack, messaging.ErrorMessage)) self.assertEquals(ack.faultCode, 'TypeError')
def test_fail_preprocess(self): def preproc(sr, *args): raise IndexError def echo(x): return x gw = gateway.BaseGateway({'echo': echo}, preprocessor=preproc) rp = amf3.RequestProcessor(gw) message = messaging.RemotingMessage(body=['spam.eggs'], operation='echo') request = remoting.Request('null', body=[message]) response = rp(request) ack = response.body self.assertTrue(isinstance(response, remoting.Response)) self.assertEqual(response.status, remoting.STATUS_ERROR) self.assertTrue(isinstance(ack, messaging.ErrorMessage))
def test_create(self): rp = amf3.RequestProcessor('xyz') self.assertEquals(rp.gateway, 'xyz')