Skip to content

Commit 35dba33

Browse files
Raise explicit client error for blank env base URL
Co-authored-by: Shri Sukhani <shrisukhani@users.noreply.github.com>
1 parent 801f3fd commit 35dba33

File tree

2 files changed

+33
-7
lines changed

2 files changed

+33
-7
lines changed

hyperbrowser/client/base.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,21 @@ def __init__(
4848
os.environ.get("HYPERBROWSER_HEADERS")
4949
)
5050
)
51+
env_base_url = os.environ.get("HYPERBROWSER_BASE_URL")
52+
if base_url is None:
53+
if env_base_url is None:
54+
resolved_base_url = "https://api.hyperbrowser.ai"
55+
elif not env_base_url.strip():
56+
raise HyperbrowserError(
57+
"HYPERBROWSER_BASE_URL must not be empty when set"
58+
)
59+
else:
60+
resolved_base_url = env_base_url
61+
else:
62+
resolved_base_url = base_url
5163
config = ClientConfig(
5264
api_key=resolved_api_key,
53-
base_url=(
54-
base_url
55-
if base_url is not None
56-
else os.environ.get(
57-
"HYPERBROWSER_BASE_URL", "https://api.hyperbrowser.ai"
58-
)
59-
),
65+
base_url=resolved_base_url,
6066
headers=resolved_headers,
6167
)
6268

tests/test_client_api_key.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,26 @@ def test_sync_client_rejects_blank_env_api_key(monkeypatch):
3434
Hyperbrowser()
3535

3636

37+
def test_sync_client_rejects_blank_env_base_url(monkeypatch):
38+
monkeypatch.setenv("HYPERBROWSER_API_KEY", "test-key")
39+
monkeypatch.setenv("HYPERBROWSER_BASE_URL", " ")
40+
41+
with pytest.raises(
42+
HyperbrowserError, match="HYPERBROWSER_BASE_URL must not be empty"
43+
):
44+
Hyperbrowser()
45+
46+
47+
def test_async_client_rejects_blank_env_base_url(monkeypatch):
48+
monkeypatch.setenv("HYPERBROWSER_API_KEY", "test-key")
49+
monkeypatch.setenv("HYPERBROWSER_BASE_URL", " ")
50+
51+
with pytest.raises(
52+
HyperbrowserError, match="HYPERBROWSER_BASE_URL must not be empty"
53+
):
54+
AsyncHyperbrowser()
55+
56+
3757
def test_sync_client_rejects_non_string_api_key():
3858
with pytest.raises(HyperbrowserError, match="api_key must be a string"):
3959
Hyperbrowser(api_key=123) # type: ignore[arg-type]

0 commit comments

Comments
 (0)