Coverage for microservice_websocket/app/config.py: 100%

40 statements  

« prev     ^ index     » next       coverage.py v7.0.0, created at 2022-12-20 14:31 +0000

1import os 

2 

3import yaml 

4from pydantic import BaseModel 

5from yaml.loader import Loader 

6 

7TESTING = os.environ.get("TESTING", False) 

8 

9 

10class AppConfig(BaseModel): 

11 READING_SYNC_WAIT: int 

12 CHECK_SYNC_READY: int 

13 NODE_TIMEOUT_CHECK_INTERVAL: int 

14 NODE_TIMEOUT_INTERVAL: int 

15 ALERT_TRESHOLD: int 

16 

17 

18class JwtConfig(BaseModel): 

19 secret_key: str 

20 access_token_expires_minutes: int = 10 

21 

22 

23class MQTTConfig(BaseModel): 

24 username: str 

25 password: str 

26 host: str = "localhost" 

27 port: int = 1883 

28 tls_enabled: bool = False 

29 tls_version: int = 1 

30 

31 

32class RedisConfig(BaseModel): 

33 host: str = "localhost" 

34 port: int = 6379 

35 db: int = 0 

36 

37 

38class MongoConfig(BaseModel): 

39 db: str 

40 uri: str = "mongodb://localhost:27017" 

41 

42 

43class Config(BaseModel): 

44 app: AppConfig 

45 jwt: JwtConfig 

46 mqtt: MQTTConfig 

47 redis: RedisConfig 

48 mongo: MongoConfig 

49 

50 

51script_path = os.path.abspath(__file__) 

52path_list = script_path.split(os.sep) 

53relpath = "/config/config.yaml" 

54 

55path = "/".join(path_list[:-2]) + relpath 

56 

57with open(path) as f: 

58 config: Config = Config.parse_obj(yaml.load(f, Loader=Loader)["config"])