Coverage for src/lexigram/notification/cli/doctor.py: 0%

12 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-26 02:26 +0800

1"""CLI doctor checks for lexigram-notification.""" 

2 

3from __future__ import annotations 

4 

5import os 

6 

7 

8def check_smtp_config() -> dict[str, object]: 

9 """Check SMTP configuration is present. 

10 

11 Looks for ``SMTP_HOST`` environment variable. 

12 

13 Returns: 

14 A DoctorCheckResult-compatible dict. 

15 """ 

16 if os.environ.get("SMTP_HOST"): 

17 return {"status": "ok", "message": "SMTP_HOST is configured"} 

18 return { 

19 "status": "warning", 

20 "message": "SMTP_HOST is not set. Email notifications may not work.", 

21 } 

22 

23 

24def check_push_credentials() -> dict[str, object]: 

25 """Check push notification credentials are configured. 

26 

27 Looks for ``FCM_SERVER_KEY`` or ``APNS_KEY_PATH`` environment variables. 

28 

29 Returns: 

30 A DoctorCheckResult-compatible dict. 

31 """ 

32 if os.environ.get("FCM_SERVER_KEY"): 

33 return {"status": "ok", "message": "FCM_SERVER_KEY is configured"} 

34 if os.environ.get("APNS_KEY_PATH"): 

35 return {"status": "ok", "message": "APNS_KEY_PATH is configured"} 

36 return { 

37 "status": "warning", 

38 "message": "No push credentials found. Set FCM_SERVER_KEY or APNS_KEY_PATH.", 

39 }