Something went wrong on our end
-
John Gerlock authored
Add websocket connection pooling, better middleware isolation, request and response validation, improved caching api
John Gerlock authoredAdd websocket connection pooling, better middleware isolation, request and response validation, improved caching api
test_cache_middleware.py 1.77 KiB
# -*- coding: utf-8 -*-
import json
from sanic import Sanic
import asynctest
import pytest
from jussi.middlewares.caching import cache_response
from jussi.middlewares.caching import get_response
req = {"id":1,"jsonrpc":"2.0","method":"get_block","params":[1000]}
expected_response = {
"id": 1,
"result": {
"previous": "000003e7c4fd3221cf407efcf7c1730e2ca54b05",
"timestamp": "2016-03-24T16:55:30",
"witness": "initminer",
"transaction_merkle_root": "0000000000000000000000000000000000000000",
"extensions": [],
"witness_signature": "207f15578cac20ac0e8af1ebb8f463106b8849577e21cca9fc60da146d1d95df88072dedc6ffb7f7f44a9185bbf9bf8139a5b4285c9f423843720296a44d428856",
"transactions": [],
"block_id": "000003e8b922f4906a45af8e99d86b3511acd7a5",
"signing_key": "STM8GC13uCZbP44HzMLV6zPZGwVQ8Nt4Kji8PapsPiNq1BK153XTX",
"transaction_ids": []
}
}
@pytest.mark.live
async def test_cache_response_middleware(test_cli):
response = await test_cli.post('/', json=req)
assert await response.json() == expected_response
response = await test_cli.post('/', json=req)
assert response.headers['x-jussi-cache-hit'] == 'steemd.database_api.get_block.params=[1000]'
async def test_mocked_cache_response_middleware(mocked_app_test_cli):
mocked_ws_conn, test_cli = mocked_app_test_cli
mocked_ws_conn.recv.return_value = json.dumps(expected_response)
response = await test_cli.post('/', json=req)
assert 'x-jussi-cache-hit' not in response.headers
assert await response.json() == expected_response
response = await test_cli.post('/', json=req)
assert response.headers['x-jussi-cache-hit'] == 'steemd.database_api.get_block.params=[1000]'
assert await response.json() == expected_response