1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pytest
from tinyrpc.protocols.jsonrpc import JSONRPCProtocol
from tinyrpc import RPCErrorResponse
@pytest.fixture(params=['jsonrpc'])
def protocol(request):
if 'jsonrpc':
return JSONRPCProtocol()
raise RuntimeError('Bad protocol name in test case')
def test_protocol_returns_strings(protocol):
req = protocol.create_request('foo', ['bar'])
assert isinstance(req.serialize(), str)
def test_procotol_responds_strings(protocol):
req = protocol.create_request('foo', ['bar'])
rep = req.respond(42)
err_rep = req.error_respond(Exception('foo'))
assert isinstance(rep.serialize(), str)
assert isinstance(err_rep.serialize(), str)
def test_one_way(protocol):
req = protocol.create_request('foo', None, {'a': 'b'}, True)
assert req.respond(None) == None
def test_raises_on_args_and_kwargs(protocol):
with pytest.raises(Exception):
protocol.create_request('foo', ['arg1', 'arg2'], {'kw_key': 'kw_value'})
def test_supports_no_args(protocol):
protocol.create_request('foo')
def test_creates_error_response(protocol):
req = protocol.create_request('foo', ['bar'])
err_rep = req.error_respond(Exception('foo'))
assert hasattr(err_rep, 'error')
def test_parses_error_response(protocol):
req = protocol.create_request('foo', ['bar'])
err_rep = req.error_respond(Exception('foo'))
parsed = protocol.parse_reply(err_rep.serialize())
assert hasattr(parsed, 'error')
|