@@ -175,9 +175,47 @@ def test_continue_request_400_if_method_name_is_empty(self):
175
175
else :
176
176
expected = 2
177
177
self .assertEqual (len (logdata ), expected )
178
- self .assertEqual (logdata [- 1 ],
179
- u'XML-RPC request received with no method name' )
180
- self .assertEqual (len (request .producers ), 0 )
178
+ self .assertTrue (logdata [- 1 ].startswith ('XML-RPC request data' ))
179
+ self .assertTrue (repr (data ) in logdata [- 1 ])
180
+ self .assertTrue (logdata [- 1 ].endswith ('is invalid: no method name' ))
181
+ self .assertEqual (request ._error , 400 )
182
+
183
+ def test_continue_request_400_if_loads_raises_not_xml (self ):
184
+ supervisor = DummySupervisor ()
185
+ subinterfaces = [('supervisor' , DummySupervisorRPCNamespace ())]
186
+ handler = self ._makeOne (supervisor , subinterfaces )
187
+ data = 'this is not an xml-rpc request body'
188
+ request = DummyRequest ('/what/ever' , None , None , None )
189
+ handler .continue_request (data , request )
190
+ logdata = supervisor .options .logger .data
191
+ from supervisor .xmlrpc import loads
192
+ if loads :
193
+ expected = 1
194
+ else :
195
+ expected = 2
196
+ self .assertEqual (len (logdata ), expected )
197
+ self .assertTrue (logdata [- 1 ].startswith ('XML-RPC request data' ))
198
+ self .assertTrue (repr (data ) in logdata [- 1 ])
199
+ self .assertTrue (logdata [- 1 ].endswith ('is invalid: unmarshallable' ))
200
+ self .assertEqual (request ._error , 400 )
201
+
202
+ def test_continue_request_400_if_loads_raises_weird_xml (self ):
203
+ supervisor = DummySupervisor ()
204
+ subinterfaces = [('supervisor' , DummySupervisorRPCNamespace ())]
205
+ handler = self ._makeOne (supervisor , subinterfaces )
206
+ data = '<methodName></methodName><junk></junk>'
207
+ request = DummyRequest ('/what/ever' , None , None , None )
208
+ handler .continue_request (data , request )
209
+ logdata = supervisor .options .logger .data
210
+ from supervisor .xmlrpc import loads
211
+ if loads :
212
+ expected = 1
213
+ else :
214
+ expected = 2
215
+ self .assertEqual (len (logdata ), expected )
216
+ self .assertTrue (logdata [- 1 ].startswith ('XML-RPC request data' ))
217
+ self .assertTrue (repr (data ) in logdata [- 1 ])
218
+ self .assertTrue (logdata [- 1 ].endswith ('is invalid: unmarshallable' ))
181
219
self .assertEqual (request ._error , 400 )
182
220
183
221
def test_continue_request_500_if_rpcinterface_method_call_raises (self ):
@@ -228,6 +266,7 @@ def test_continue_request_500_if_xmlrpc_dumps_raises(self):
228
266
self .assertTrue (repr (data ) in logdata [- 1 ])
229
267
self .assertTrue ("Traceback" in logdata [- 1 ])
230
268
self .assertTrue ("TypeError: cannot marshal" in logdata [- 1 ])
269
+ self .assertEqual (request ._error , 500 )
231
270
232
271
class TraverseTests (unittest .TestCase ):
233
272
def test_underscore (self ):
0 commit comments