Skip to content

Commit 660914f

Browse files
committed
Add tests for healthcheck and sessions endpoints.
1 parent cbf1b41 commit 660914f

File tree

2 files changed

+45
-3
lines changed

2 files changed

+45
-3
lines changed

tests/test_tileserver.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -734,3 +734,44 @@ def test_prop_range(app: TileServer) -> None:
734734
assert response.status_code == 200
735735
# should be back to no scaling
736736
assert layer.renderer.score_fn(0.5) == 0.5
737+
738+
739+
def test_healthcheck(empty_app: TileServer) -> None:
740+
"""Test the /tileserver/healthcheck endpoint."""
741+
with empty_app.test_client() as client:
742+
response = client.get("/tileserver/healthcheck")
743+
assert response.status_code == 200
744+
assert response.content_type == "application/json"
745+
assert response.get_json() == {"status": "OK"}
746+
747+
748+
def test_sessions_no_slide_loaded(empty_app: TileServer) -> None:
749+
"""Test /tileserver/sessions when no slides are loaded."""
750+
with empty_app.test_client() as client:
751+
setup_app(client)
752+
response = client.get("/tileserver/sessions")
753+
assert response.status_code == 200
754+
assert response.is_json
755+
assert response.get_json() == {}
756+
757+
758+
def test_sessions_one_slide_loaded(
759+
empty_app: TileServer, remote_sample: Callable
760+
) -> None:
761+
"""Test /tileserver/sessions after loading one slide."""
762+
with empty_app.test_client() as client:
763+
setup_app(client)
764+
slide_path = safe_str(remote_sample("svs-1-small"))
765+
766+
response = client.put(
767+
"/tileserver/slide",
768+
data={"slide_path": slide_path},
769+
)
770+
assert response.status_code == 200
771+
772+
response = client.get("/tileserver/sessions")
773+
assert response.status_code == 200
774+
sessions = response.get_json()
775+
776+
assert isinstance(sessions, dict)
777+
assert len(sessions) == 1

tiatoolbox/visualization/tileserver.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -725,12 +725,13 @@ def sessions(self: TileServer) -> Response:
725725
726726
Returns:
727727
Response: A JSON response containing a mapping of session keys
728-
and their respective slide file paths.
728+
and their respective slide file paths.
729729
"""
730730
session_paths = {}
731731
for key, layer in self.layers.items():
732-
session_paths[key] = str(layer.get("slide").info.as_dict()["file_path"])
733-
732+
slide = layer.get("slide")
733+
if slide is not None:
734+
session_paths[key] = str(slide.info.as_dict().get("file_path", ""))
734735
return jsonify(session_paths)
735736

736737
def healthcheck(self: TileServer) -> Response:

0 commit comments

Comments
 (0)