def test_request_id_in_response_headers():
    app = sanic.Sanic('testApp', request_class=HTTPRequest)

    @app.post('/post')
    def handler(r):
        return sanic.response.text('post')

    @app.get('/get')
    def handler(r):
        return sanic.response.text('get')

    @app.head('/head')
    def handler(r):
        return sanic.response.text('head')

    @app.options('/options')
    def handler(r):
        return sanic.response.text('options')

    app.config.upstreams = _Upstreams(TEST_UPSTREAM_CONFIG, validate=False)
    app.response_middleware.append(finalize_jefferson_response)

    _, response = app.test_client.get('/get')
    assert 'x-jefferson-request-id' in response.headers

    _, response = app.test_client.post('/post')
    assert 'x-jefferson-request-id' in response.headers

    _, response = app.test_client.head('/head')
    assert 'x-jefferson-request-id' in response.headers

    _, response = app.test_client.options('/options')
    assert 'x-jefferson-request-id' in response.headers
示例#2
0
def test_upstream_url(urn_test_request_dict):
    os.environ['JEFFERSON_ACCOUNT_TRANSFER_DPAYD_URL'] = 'account_transfer_url'
    upstreams = _Upstreams(TEST_UPSTREAM_CONFIG, validate=False)
    jsonrpc_request, urn, url, ttl, timeout = urn_test_request_dict
    test_urn = from_request(jsonrpc_request)
    upstream = Upstream.from_urn(test_urn, upstreams=upstreams)
    del os.environ['JEFFERSON_ACCOUNT_TRANSFER_DPAYD_URL']
    assert upstream.url == url
def test_urn_parts_not_in_options_response_headers():
    app = sanic.Sanic('testApp', request_class=HTTPRequest)

    @app.options('/options')
    def handler(r):
        _ = r.jsonrpc  # trigger lazy parsing
        return sanic.response.text('options')

    app.config.upstreams = _Upstreams(TEST_UPSTREAM_CONFIG, validate=False)
    app.response_middleware.append(finalize_jefferson_response)

    _, response = app.test_client.options('/options')
    assert 'x-jefferson-request-namespace' not in response.headers
    assert 'x-jefferson-request-api' not in response.headers
    assert 'x-jefferson-request-method' not in response.headers
    assert 'x-jefferson-request-params' not in response.headers
def test_urn_parts_in_post_response_headers():
    app = sanic.Sanic('testApp', request_class=HTTPRequest)

    @app.post('/post')
    def handler(r):
        _ = r.jsonrpc  # trigger lazy parsing
        return sanic.response.text('post')

    app.config.upstreams = _Upstreams(TEST_UPSTREAM_CONFIG, validate=False)
    app.response_middleware.append(finalize_jefferson_response)

    _, response = app.test_client.post('/post', json=req)
    assert 'x-jefferson-request-id' in response.headers
    assert response.headers[
        'x-jefferson-namespace'] == 'dpayd', f'{response.headers}'
    assert response.headers[
        'x-jefferson-api'] == 'database_api', f'{response.headers}'
    assert response.headers[
        'x-jefferson-method'] == 'get_block', f'{response.headers}'
    assert response.headers[
        'x-jefferson-params'] == '[1000]', f'{response.headers}'
示例#5
0
def test_namespaces_config_is_jsonrpc():
    with pytest.raises(AssertionError):
        upstreams = _Upstreams(INVALID_NAMESPACE2_CONFIG, validate=False)
示例#6
0
def test_namespaces_config_ends_with_api():
    with pytest.raises(AssertionError):
        upstreams = _Upstreams(INVALID_NAMESPACE1_CONFIG, validate=False)
示例#7
0
def test_namespaces_config():
    upstreams = _Upstreams(SIMPLE_CONFIG, validate=False)
    assert upstreams.namespaces == frozenset(['test', 'test2'])
示例#8
0
def test_hash_ineq():
    upstreams1 = _Upstreams(SIMPLE_CONFIG, validate=False)
    upstreams2 = _Upstreams(VALID_HOSTNAME_CONFIG, validate=False)
    assert hash(upstreams1) != hash(upstreams2)
示例#9
0
def test_hash():
    upstreams = _Upstreams(SIMPLE_CONFIG, validate=False)
    upstreams_hash = hash(ujson.dumps(SIMPLE_CONFIG['upstreams']))
    assert hash(upstreams) == upstreams_hash
示例#10
0
def test_validate_urls():
    upstreams = _Upstreams(VALID_HOSTNAME_CONFIG, validate=True)
    assert isinstance(upstreams, _Upstreams)
示例#11
0
def test_upstream_timeout(urn_test_request_dict):
    upstreams = _Upstreams(TEST_UPSTREAM_CONFIG, validate=False)
    jsonrpc_request, urn, url, ttl, timeout = urn_test_request_dict
    test_urn = from_request(jsonrpc_request)
    upstream = Upstream.from_urn(test_urn, upstreams=upstreams)
    assert upstream.timeout == timeout
示例#12
0
def test_ttl_object():
    from jefferson.urn import URN
    urn = URN('test2', 'api', 'method', False)
    upstreams = _Upstreams(SIMPLE_CONFIG, validate=False)
    assert upstreams.ttl(urn) == 2
示例#13
0
def test_timeout_pair():
    from jefferson.urn import URN
    urn = URN('test', 'api', 'method', False)
    upstreams = _Upstreams(SIMPLE_CONFIG, validate=False)
    assert upstreams.timeout(urn) == 1
示例#14
0
def test_url_pair():
    from jefferson.urn import URN
    urn = URN('test', 'api', 'method', False)
    upstreams = _Upstreams(SIMPLE_CONFIG, validate=False)
    assert upstreams.url(urn) == 'http://test.com'
示例#15
0
def test_urls_config():
    upstreams = _Upstreams(SIMPLE_CONFIG, validate=False)
    assert upstreams.urls == frozenset(['http://test.com', 'http://test2.com'])
示例#16
0
def test_translate_to_appbase_config_false():
    from jefferson.urn import URN
    urn = URN('test2', 'api', 'method', False)
    upstreams = _Upstreams(SIMPLE_CONFIG, validate=False)
    assert upstreams.translate_to_appbase(urn) is False
示例#17
0
def test_validate_urls_raises():
    with pytest.raises(InvalidUpstreamHost):
        upstreams = _Upstreams(SIMPLE_CONFIG)