def get_open_api_json(request: Request): return get_response_for_static_content( request, b"application/json", self._json_docs, current_time, cache_time=1, )
async def test_get_response_for_static_content_handles_304(): response = get_response_for_static_content( Request("GET", b"/", None), b"text/plain", b"Lorem ipsum dolor sit amet\n", datetime(2020, 10, 24).timestamp(), ) assert response.status == 200 response = get_response_for_static_content( Request("GET", b"/", [(b"If-None-Match", response.get_first_header(b"etag"))]), b"text/plain", b"Lorem ipsum dolor sit amet\n", datetime(2020, 10, 24).timestamp(), ) assert response.status == 304
async def test_get_response_for_static_content_returns_given_bytes(): response = get_response_for_static_content( Request("GET", b"/", None), b"text/plain", b"Lorem ipsum dolor sit amet\n", datetime(2020, 10, 24).timestamp(), ) assert response.status == 200 data = await response.read() assert data == b"Lorem ipsum dolor sit amet\n"
async def test_get_response_for_static_content_can_disable_max_age(): response = get_response_for_static_content( Request("GET", b"/", None), b"text/plain", b"Lorem ipsum dolor sit amet\n", datetime(2020, 10, 24).timestamp(), cache_time=-1, ) assert response.status == 200 assert response.headers.contains(b"Cache-Control") is False response = get_response_for_static_content( Request("GET", b"/", None), b"text/plain", b"Lorem ipsum dolor sit amet\n", datetime(2020, 10, 24).timestamp(), cache_time=20, ) assert response.status == 200 assert b"20" in response.headers.get_first(b"Cache-Control")
async def test_get_response_for_static_content_handles_head(): response = get_response_for_static_content( Request("GET", b"/", None), b"text/plain", b"Lorem ipsum dolor sit amet\n", datetime(2020, 10, 24).timestamp(), ) assert response.status == 200 head_response = get_response_for_static_content( Request("HEAD", b"/", None), b"text/plain", b"Lorem ipsum dolor sit amet\n", datetime(2020, 10, 24).timestamp(), ) data = await head_response.read() assert data is None for name in {b"content-length", b"content-type"}: # Note: a response with content has these headers handled automatically assert head_response.get_single_header(name) is not None
def get_open_api_yaml(request: Request): return get_response_for_static_content( request, b"text/yaml", self._yaml_docs, current_time, cache_time=1 )
def get_open_api_ui(request: Request): return get_response_for_static_content( request, b"text/html; charset=utf-8", self._ui_html, current_time )