@@ -29,3 +29,61 @@ def test_cfg_from_env__happy_path(monkeypatch):
2929 cfg = AgentConfig .from_env ()
3030 assert cfg .environment == "qa"
3131 assert cfg .core_api_url == "https://api-gw.qa1.eu-west-1.jenticdev.net/api/v1/"
32+
33+
34+ def test_cfg_from_env__timeouts_defaults (monkeypatch ):
35+ # Ensure required env vars are set and timeout vars are *not* set
36+ monkeypatch .setenv ("JENTIC_AGENT_API_KEY" , "ak_19814bi2f98jhwg" )
37+ monkeypatch .setenv ("JENTIC_ENVIRONMENT" , "prod" )
38+ monkeypatch .delenv ("JENTIC_CONNECT_TIMEOUT" , raising = False )
39+ monkeypatch .delenv ("JENTIC_READ_TIMEOUT" , raising = False )
40+ monkeypatch .delenv ("JENTIC_WRITE_TIMEOUT" , raising = False )
41+ monkeypatch .delenv ("JENTIC_POOL_TIMEOUT" , raising = False )
42+
43+ cfg = AgentConfig .from_env ()
44+
45+ assert cfg .connect_timeout == 10.0
46+ assert cfg .read_timeout == 10.0
47+ assert cfg .write_timeout == 120.0
48+ assert cfg .pool_timeout == 120.0
49+
50+
51+ @pytest .mark .parametrize (
52+ "env_var, value, attr" ,
53+ [
54+ ("JENTIC_CONNECT_TIMEOUT" , "1.5" , "connect_timeout" ),
55+ ("JENTIC_READ_TIMEOUT" , "2.5" , "read_timeout" ),
56+ ("JENTIC_WRITE_TIMEOUT" , "130.0" , "write_timeout" ),
57+ ("JENTIC_POOL_TIMEOUT" , "140.0" , "pool_timeout" ),
58+ ],
59+ )
60+ def test_cfg_from_env__timeouts_overrides (monkeypatch , env_var , value , attr ):
61+ monkeypatch .setenv ("JENTIC_AGENT_API_KEY" , "ak_19814bi2f98jhwg" )
62+ monkeypatch .setenv ("JENTIC_ENVIRONMENT" , "prod" )
63+ monkeypatch .setenv (env_var , value )
64+
65+ cfg = AgentConfig .from_env ()
66+
67+ assert getattr (cfg , attr ) == float (value )
68+
69+
70+ @pytest .mark .parametrize (
71+ "env_var, bad_value" ,
72+ [
73+ ("JENTIC_CONNECT_TIMEOUT" , "" ),
74+ ("JENTIC_CONNECT_TIMEOUT" , " " ),
75+ ("JENTIC_READ_TIMEOUT" , "" ),
76+ ("JENTIC_READ_TIMEOUT" , " " ),
77+ ("JENTIC_WRITE_TIMEOUT" , "" ),
78+ ("JENTIC_WRITE_TIMEOUT" , " " ),
79+ ("JENTIC_POOL_TIMEOUT" , "" ),
80+ ("JENTIC_POOL_TIMEOUT" , " " ),
81+ ],
82+ )
83+ def test_cfg_from_env__timeouts_invalid_values (monkeypatch , env_var , bad_value ):
84+ monkeypatch .setenv ("JENTIC_AGENT_API_KEY" , "ak_19814bi2f98jhwg" )
85+ monkeypatch .setenv ("JENTIC_ENVIRONMENT" , "prod" )
86+ monkeypatch .setenv (env_var , bad_value )
87+
88+ with pytest .raises (ValueError ):
89+ AgentConfig .from_env ()
0 commit comments