Skip to content

Commit 11faf30

Browse files
Differentiate blank constructor API key errors
Co-authored-by: Shri Sukhani <shrisukhani@users.noreply.github.com>
1 parent d185350 commit 11faf30

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

hyperbrowser/client/base.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,10 @@ def __init__(
2626
)
2727

2828
if config is None:
29+
api_key_from_constructor = api_key is not None
2930
resolved_api_key = (
3031
api_key
31-
if api_key is not None
32+
if api_key_from_constructor
3233
else os.environ.get("HYPERBROWSER_API_KEY")
3334
)
3435
if resolved_api_key is None:
@@ -38,6 +39,8 @@ def __init__(
3839
if not isinstance(resolved_api_key, str):
3940
raise HyperbrowserError("api_key must be a string")
4041
if not resolved_api_key.strip():
42+
if api_key_from_constructor:
43+
raise HyperbrowserError("api_key must not be empty")
4144
raise HyperbrowserError(
4245
"API key must be provided via `api_key` or HYPERBROWSER_API_KEY"
4346
)

tests/test_client_api_key.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,3 +62,17 @@ def test_sync_client_rejects_non_string_api_key():
6262
def test_async_client_rejects_non_string_api_key():
6363
with pytest.raises(HyperbrowserError, match="api_key must be a string"):
6464
AsyncHyperbrowser(api_key=123) # type: ignore[arg-type]
65+
66+
67+
def test_sync_client_rejects_blank_constructor_api_key(monkeypatch):
68+
monkeypatch.setenv("HYPERBROWSER_API_KEY", "env-key")
69+
70+
with pytest.raises(HyperbrowserError, match="api_key must not be empty"):
71+
Hyperbrowser(api_key=" ")
72+
73+
74+
def test_async_client_rejects_blank_constructor_api_key(monkeypatch):
75+
monkeypatch.setenv("HYPERBROWSER_API_KEY", "env-key")
76+
77+
with pytest.raises(HyperbrowserError, match="api_key must not be empty"):
78+
AsyncHyperbrowser(api_key="\t")

0 commit comments

Comments
 (0)