URI: 
       tSome more coverage test cases. - obelisk - Electrum server using libbitcoin as its backend
  HTML git clone https://git.parazyd.org/obelisk
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 9cb7c061945451facab01970e1f0bd5f6c8b48c8
   DIR parent d684e27e0f453dd35e93c8d79325a20cfd5970b8
  HTML Author: parazyd <parazyd@dyne.org>
       Date:   Mon, 19 Apr 2021 14:44:32 +0200
       
       Some more coverage test cases.
       
       Diffstat:
         M obelisk/protocol.py                 |       6 +++++-
         M obelisk/util.py                     |       6 +++---
         M tests/test_electrum_protocol.py     |      40 +++++++++++++++++++++++++++++++
       
       3 files changed, 48 insertions(+), 4 deletions(-)
       ---
   DIR diff --git a/obelisk/protocol.py b/obelisk/protocol.py
       t@@ -555,6 +555,9 @@ class ElectrumProtocol(asyncio.Protocol):  # pylint: disable=R0904,R0902
                tx_hash = query["params"][0]
                verbose = query["params"][1] if len(query["params"]) > 1 else False
        
       +        if not is_hex_str(tx_hash):
       +            return JsonRPCError.invalidparams()
       +
                # _ec, rawtx = await self.bx.fetch_blockchain_transaction(tx_hash)
                _ec, rawtx = await self.bx.fetch_mempool_transaction(tx_hash)
                if _ec and _ec != 0 and _ec != ErrorCode.not_found.value:
       t@@ -563,7 +566,8 @@ class ElectrumProtocol(asyncio.Protocol):  # pylint: disable=R0904,R0902
        
                # Behaviour is undefined in spec
                if not rawtx:
       -            return {"result": None}
       +            return JsonRPCError.internalerror()
       +            # return {"result": None}
        
                if verbose:
                    # TODO: Help needed
   DIR diff --git a/obelisk/util.py b/obelisk/util.py
       t@@ -30,7 +30,7 @@ def is_non_negative_integer(val):
            """Check if val is of type int and non-negative"""
            if is_integer(val):
                return val >= 0
       -    return False  # pragma: no cover
       +    return False
        
        
        def is_boolean(val):
       t@@ -38,7 +38,7 @@ def is_boolean(val):
            return isinstance(val, bool)
        
        
       -def is_hex_str(text):  # pragma: no cover
       +def is_hex_str(text):
            """Check if text is a hex string"""
            if not isinstance(text, str):
                return False
       t@@ -52,7 +52,7 @@ def is_hex_str(text):  # pragma: no cover
            return True
        
        
       -def is_hash256_str(text):  # pragma: no cover
       +def is_hash256_str(text):
            """Check if text is a sha256 hash"""
            if not isinstance(text, str):
                return False
   DIR diff --git a/tests/test_electrum_protocol.py b/tests/test_electrum_protocol.py
       t@@ -92,6 +92,16 @@ async def test_server_version(protocol, writer, method):
            data = await protocol.server_version(writer, {"params": params})
            assert_equal(data["result"], expect["result"])
        
       +    params = ["obelisk", "0.0"]
       +    expect = JsonRPCError.protonotsupported()
       +    data = await protocol.server_version(writer, {"params": params})
       +    assert_equal(data, expect)
       +
       +    params = ["obelisk"]
       +    expect = JsonRPCError.invalidparams()
       +    data = await protocol.server_version(writer, {"params": params})
       +    assert_equal(data, expect)
       +
        
        async def test_ping(protocol, writer, method):
            params = []
       t@@ -280,6 +290,12 @@ async def test_transaction_get(protocol, writer, method):
                data = await protocol.transaction_get(writer, {"params": i})
                assert_equal(data["result"], expect["result"])
        
       +    params = [[], [1], ["foo"], ["dead beef"]]
       +    for i in params:
       +        expect = JsonRPCError.invalidparams()
       +        data = await protocol.transaction_get(writer, {"params": i})
       +        assert_equal(data, expect)
       +
        
        async def test_transaction_get_merkle(protocol, writer, method):
            params = [
       t@@ -293,6 +309,24 @@ async def test_transaction_get_merkle(protocol, writer, method):
                data = await protocol.transaction_get_merkle(writer, {"params": i})
                assert_equal(data["result"], expect["result"])
        
       +    params = [
       +        [],
       +        ["foo", 1],
       +        [3, 1],
       +        [
       +            "a9c3c22cc2589284288b28e802ea81723d649210d59dfa7e03af00475f4cec20",
       +            -4,
       +        ],
       +        [
       +            "a9c3c22cc2589284288b28e802ea81723d649210d59dfa7e03af00475f4cec20",
       +            "foo",
       +        ],
       +    ]
       +    for i in params:
       +        expect = JsonRPCError.invalidparams()
       +        data = await protocol.transaction_get_merkle(writer, {"params": i})
       +        assert_equal(data, expect)
       +
        
        async def test_transaction_id_from_pos(protocol, writer, method):
            params = [[1970700, 28], [1970700, 28, True]]
       t@@ -301,6 +335,12 @@ async def test_transaction_id_from_pos(protocol, writer, method):
                data = await protocol.transaction_id_from_pos(writer, {"params": i})
                assert_equal(data["result"], expect["result"])
        
       +    params = [[123], [-1, 1], [1, -1], [3, 42, 4]]
       +    for i in params:
       +        expect = JsonRPCError.invalidparams()
       +        data = await protocol.transaction_id_from_pos(writer, {"params": i})
       +        assert_equal(data, expect)
       +
        
        async def test_get_fee_histogram(protocol, writer, method):
            data = await protocol.get_fee_histogram(writer, {"params": []})