Coverage for tests/test_misc.py: 100%
34 statements
« prev ^ index » next coverage.py v7.10.4, created at 2025-08-21 23:45 +0000
« prev ^ index » next coverage.py v7.10.4, created at 2025-08-21 23:45 +0000
1import importlib
2import os
3import runpy
4import typing
6from fastapi.testclient import TestClient
7from granian.constants import Interfaces
9from whole_app import views
10from whole_app.settings import SETTINGS, SettingsOfMicroservice
13if typing.TYPE_CHECKING:
14 import faker
17def test_main_py(monkeypatch: typing.Any) -> None:
18 captured_parameters: dict[str, typing.Any] = {}
20 class FakeGranian:
21 def __init__(
22 self: "FakeGranian",
23 target: str,
24 *,
25 address: str,
26 port: int,
27 workers: int,
28 interface: Interfaces,
29 ) -> None:
30 captured_parameters.update(
31 {
32 "target": target,
33 "address": address,
34 "port": port,
35 "workers": workers,
36 "interface": interface,
37 },
38 )
40 def serve(self: "FakeGranian") -> None:
41 captured_parameters["served"] = True
43 monkeypatch.setattr("granian.Granian", FakeGranian)
44 runpy.run_module("whole_app.__main__", run_name="__main__")
46 assert captured_parameters == {
47 "target": "whole_app.views:SPELL_APP",
48 "address": SETTINGS.server_address,
49 "port": SETTINGS.port,
50 "workers": SETTINGS.workers,
51 "interface": Interfaces.ASGI,
52 "served": True,
53 }
56def test_incorrect_settings(monkeypatch: typing.Any) -> None:
57 fake_settings: SettingsOfMicroservice = SettingsOfMicroservice()
58 assert fake_settings.cache_size == 10_000
60 os.environ["SPELLCHECK_CACHE_SIZE"] = "-666"
62 monkeypatch.setattr(
63 "pathlib.Path.read_text",
64 lambda _: "version === fucked == up == totally == 666.13.13",
65 )
66 fake_settings = SettingsOfMicroservice()
67 assert fake_settings.cache_size == 0
68 assert fake_settings.current_version == ""
71def test_sentry_integration(monkeypatch: typing.Any, faker_obj: "faker.Faker") -> None:
72 with monkeypatch.context() as patcher:
73 patcher.setattr(SETTINGS, "sentry_dsn", f"https://{faker_obj.pystr()}")
74 patcher.setattr("sentry_sdk.init", lambda **_: None)
75 importlib.reload(views)
76 server_response = TestClient(views.SPELL_APP).get(
77 f"{SETTINGS.api_prefix}/health/",
78 )
79 assert server_response.status_code == 200
80 # restore back api state to ensure other tests wont break
81 importlib.reload(views)