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

1import importlib 

2import os 

3import runpy 

4import typing 

5 

6from fastapi.testclient import TestClient 

7from granian.constants import Interfaces 

8 

9from whole_app import views 

10from whole_app.settings import SETTINGS, SettingsOfMicroservice 

11 

12 

13if typing.TYPE_CHECKING: 

14 import faker 

15 

16 

17def test_main_py(monkeypatch: typing.Any) -> None: 

18 captured_parameters: dict[str, typing.Any] = {} 

19 

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 ) 

39 

40 def serve(self: "FakeGranian") -> None: 

41 captured_parameters["served"] = True 

42 

43 monkeypatch.setattr("granian.Granian", FakeGranian) 

44 runpy.run_module("whole_app.__main__", run_name="__main__") 

45 

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 } 

54 

55 

56def test_incorrect_settings(monkeypatch: typing.Any) -> None: 

57 fake_settings: SettingsOfMicroservice = SettingsOfMicroservice() 

58 assert fake_settings.cache_size == 10_000 

59 

60 os.environ["SPELLCHECK_CACHE_SIZE"] = "-666" 

61 

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 == "" 

69 

70 

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)