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
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}'
def test_namespaces_config_is_jsonrpc(): with pytest.raises(AssertionError): upstreams = _Upstreams(INVALID_NAMESPACE2_CONFIG, validate=False)
def test_namespaces_config_ends_with_api(): with pytest.raises(AssertionError): upstreams = _Upstreams(INVALID_NAMESPACE1_CONFIG, validate=False)
def test_namespaces_config(): upstreams = _Upstreams(SIMPLE_CONFIG, validate=False) assert upstreams.namespaces == frozenset(['test', 'test2'])
def test_hash_ineq(): upstreams1 = _Upstreams(SIMPLE_CONFIG, validate=False) upstreams2 = _Upstreams(VALID_HOSTNAME_CONFIG, validate=False) assert hash(upstreams1) != hash(upstreams2)
def test_hash(): upstreams = _Upstreams(SIMPLE_CONFIG, validate=False) upstreams_hash = hash(ujson.dumps(SIMPLE_CONFIG['upstreams'])) assert hash(upstreams) == upstreams_hash
def test_validate_urls(): upstreams = _Upstreams(VALID_HOSTNAME_CONFIG, validate=True) assert isinstance(upstreams, _Upstreams)
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
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
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
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'
def test_urls_config(): upstreams = _Upstreams(SIMPLE_CONFIG, validate=False) assert upstreams.urls == frozenset(['http://test.com', 'http://test2.com'])
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
def test_validate_urls_raises(): with pytest.raises(InvalidUpstreamHost): upstreams = _Upstreams(SIMPLE_CONFIG)