Show More
@@ -25,6 +25,7 b' import mercurial.ui' | |||
|
25 | 25 | import mock |
|
26 | 26 | import pytest |
|
27 | 27 | |
|
28 | from vcsserver.hooks import HooksHttpClient | |
|
28 | 29 | from vcsserver.lib.rc_json import json |
|
29 | 30 | from vcsserver import hooks |
|
30 | 31 | |
@@ -243,3 +244,43 b' class MirrorHttpServer(object):' | |||
|
243 | 244 | @property |
|
244 | 245 | def uri(self): |
|
245 | 246 | return '{}:{}'.format(self.ip_address, self.port) |
|
247 | ||
|
248 | ||
|
249 | def test_hooks_http_client_init(): | |
|
250 | hooks_uri = 'http://localhost:8000' | |
|
251 | client = HooksHttpClient(hooks_uri) | |
|
252 | assert client.hooks_uri == hooks_uri | |
|
253 | ||
|
254 | ||
|
255 | def test_hooks_http_client_call(): | |
|
256 | hooks_uri = 'http://localhost:8000' | |
|
257 | ||
|
258 | method = 'test_method' | |
|
259 | extras = {'key': 'value'} | |
|
260 | ||
|
261 | with \ | |
|
262 | mock.patch('vcsserver.hooks.HTTPConnection') as mock_connection,\ | |
|
263 | mock.patch('msgpack.load') as mock_load: | |
|
264 | ||
|
265 | client = HooksHttpClient(hooks_uri) | |
|
266 | ||
|
267 | mock_load.return_value = {'result': 'success'} | |
|
268 | response = mock.MagicMock() | |
|
269 | response.status = 200 | |
|
270 | mock_connection.request.side_effect = None | |
|
271 | mock_connection.getresponse.return_value = response | |
|
272 | ||
|
273 | result = client(method, extras) | |
|
274 | ||
|
275 | mock_connection.assert_called_with(hooks_uri) | |
|
276 | mock_connection.return_value.request.assert_called_once() | |
|
277 | assert result == {'result': 'success'} | |
|
278 | ||
|
279 | ||
|
280 | def test_hooks_http_client_serialize(): | |
|
281 | method = 'test_method' | |
|
282 | extras = {'key': 'value'} | |
|
283 | headers, body = HooksHttpClient._serialize(method, extras) | |
|
284 | ||
|
285 | assert headers == {'rc-hooks-protocol': HooksHttpClient.proto} | |
|
286 | assert msgpack.unpackb(body) == {'method': method, 'extras': extras} |
General Comments 0
You need to be logged in to leave comments.
Login now