git.fiddlerwoaroof.com
Browse code

Adding tests

Ed L authored on 01/06/2011 17:00:17
Showing 3 changed files
... ...
@@ -37,7 +37,7 @@ from .server import ServerEvents, JSON_RPC
37 37
 
38 38
 class JSONRPCTest(ServerEvents):
39 39
 	def log(self, *a): print a
40
-	def findmethod(self, request, method, kwargs, args, **kw):
40
+	def findmethod(self, method):
41 41
 		if method in set(['add', 'subtract']):
42 42
 			return getattr(self, method)
43 43
 		else:
... ...
@@ -130,7 +130,9 @@ class JSON_RPC(Resource):
130 130
 			try:
131 131
 				content = jsonrpc.jsonutil.decode(request.content.read())
132 132
 			except ValueError: raise ParseError
133
+
133 134
 			content = self.eventhandler.processcontent(content, request)
135
+
134 136
 			d = threads.deferToThread(self._action, request, content)
135 137
 			d.addCallback(self._cbRender, request)
136 138
 			d.addErrback(self._ebRender, request, content.get('id') if hasattr(content, 'get') else None)
... ...
@@ -75,6 +75,32 @@ class TestJSONRPCServer(unittest.TestCase):
75 75
 		self.id_ = 'an_id'
76 76
 		self.param = "some data"
77 77
 
78
+	def test_eventhandler(self):
79
+		resource = jsonrpc.server.JSON_RPC()
80
+		resource.eventhandler = mock.Mock(jsonrpc.server.ServerEvents)
81
+		resource.eventhandler.findmethod.return_value = lambda *a, **b: 'test data'
82
+
83
+		rv = {"jsonrpc": "2.0", "params": [self.param], "method": "echo", "id": self.id_}
84
+		resource.eventhandler.processcontent.return_value = rv
85
+		resource.eventhandler.processrequest.return_value = rv
86
+
87
+		request = DummyRequest([''])
88
+		request.getCookie = mock.Mock()
89
+		request.content = StringIO.StringIO(jsonrpc.jsonutil.encode(rv))
90
+
91
+		d = _render(resource, request)
92
+
93
+		@d.addCallback
94
+		def rendered(ignored):
95
+			assert True
96
+			assert resource.eventhandler.processcontent.called
97
+			assert resource.eventhandler.callmethod.called
98
+			assert resource.eventhandler.processrequest.called
99
+			assert resource.eventhandler.log.called
100
+
101
+		return d
102
+
103
+
78 104
 	def test_invalid_data(self):
79 105
 		resource = jsonrpc.server.JSON_RPC()
80 106
 		resource.customize(SimpleEventHandler)