FreshPixels commited on
Commit
6fd04ab
·
verified ·
1 Parent(s): 5dcad65

Create tests/unit/test_settings.py

Browse files
Files changed (1) hide show
  1. tests/unit/test_settings.py +89 -0
tests/unit/test_settings.py ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from __future__ import annotations
2
+
3
+ import os
4
+ import pytest
5
+
6
+ from core.config.settings import Settings, get_settings
7
+
8
+
9
+ class TestGetSettings:
10
+ def test_returns_settings_instance(self, env_full) -> None:
11
+ result = get_settings()
12
+ assert isinstance(result, Settings)
13
+
14
+ def test_caches_result(self, env_full) -> None:
15
+ a = get_settings()
16
+ b = get_settings()
17
+ assert a is b
18
+
19
+ def test_cache_clear_allows_new_instance(self, env_full) -> None:
20
+ a = get_settings()
21
+ get_settings.cache_clear()
22
+ b = get_settings()
23
+ assert a is not b
24
+
25
+
26
+ class TestSettings:
27
+ def test_defaults(self) -> None:
28
+ s = Settings(
29
+ BOT_TOKEN="123456789:AAHdqTcvCH1vGWJxfSeofSAsQK6PALsAWo",
30
+ OPENAI_API_KEY="sk-test",
31
+ ADMIN_ID="1",
32
+ )
33
+ assert s.PORT == 7860
34
+ assert s.LOG_LEVEL == "INFO"
35
+ assert s.LOG_FORMAT == "json"
36
+ assert s.DEFAULT_PROVIDER == "openai"
37
+
38
+ def test_required_fields(self) -> None:
39
+ s = Settings(
40
+ BOT_TOKEN="123456789:AAHdqTcvCH1vGWJxfSeofSAsQK6PALsAWo",
41
+ OPENAI_API_KEY="sk-test",
42
+ ADMIN_ID="1",
43
+ )
44
+ rf = s.required_fields
45
+ assert "BOT_TOKEN" in rf
46
+ assert "OPENAI_API_KEY" in rf
47
+ assert "ADMIN_ID" in rf
48
+
49
+ def test_port_validation_low(self) -> None:
50
+ with pytest.raises(Exception):
51
+ Settings(
52
+ BOT_TOKEN="t",
53
+ OPENAI_API_KEY="k",
54
+ ADMIN_ID="1",
55
+ PORT=0,
56
+ )
57
+
58
+ def test_port_validation_high(self) -> None:
59
+ with pytest.raises(Exception):
60
+ Settings(
61
+ BOT_TOKEN="t",
62
+ OPENAI_API_KEY="k",
63
+ ADMIN_ID="1",
64
+ PORT=70000,
65
+ )
66
+
67
+ def test_reads_from_env(self, env_full) -> None:
68
+ s = get_settings()
69
+ assert s.BOT_TOKEN == "123456789:AAHdqTcvCH1vGWJxfSeofSAsQK6PALsAWo"
70
+ assert s.ADMIN_ID == "123456789"
71
+
72
+ def test_default_provider_literal(self) -> None:
73
+ s = Settings(
74
+ BOT_TOKEN="t",
75
+ OPENAI_API_KEY="k",
76
+ ADMIN_ID="1",
77
+ DEFAULT_PROVIDER="claude",
78
+ )
79
+ assert s.DEFAULT_PROVIDER == "claude"
80
+
81
+ def test_invalid_default_provider(self) -> None:
82
+ with pytest.raises(Exception):
83
+ Settings(
84
+ BOT_TOKEN="t",
85
+ OPENAI_API_KEY="k",
86
+ ADMIN_ID="1",
87
+ DEFAULT_PROVIDER="invalid_provider",
88
+ )
89
+