tests/test_integrations.py
1.8 KB · 61 lines · python Raw
1 """Tests for LangChain + env_shim integrations."""
2
3 from __future__ import annotations
4
5 import os
6
7 import pytest
8
9 from pqc_agent_wallet import Wallet
10 from pqc_agent_wallet.integrations import (
11 install_env_shim,
12 make_langchain_secret_provider,
13 walletize_env,
14 )
15 from pqc_agent_wallet.integrations.env_shim import uninstall_env_shim
16
17
18 def test_make_langchain_provider_returns_value(open_wallet: Wallet) -> None:
19 provider = make_langchain_secret_provider(open_wallet)
20 assert provider("openai_api_key") == "sk-test-openai"
21
22
23 def test_langchain_provider_raises_on_missing(open_wallet: Wallet) -> None:
24 provider = make_langchain_secret_provider(open_wallet)
25 with pytest.raises(KeyError):
26 provider("does-not-exist")
27
28
29 def test_env_shim_falls_back_to_wallet(open_wallet: Wallet) -> None:
30 # Make sure the env var is not already set.
31 os.environ.pop("openai_api_key", None)
32 try:
33 install_env_shim(open_wallet)
34 assert os.getenv("openai_api_key") == "sk-test-openai"
35 # Default still returned when credential is missing
36 assert os.getenv("totally_missing_thing", "default-val") == "default-val"
37 finally:
38 uninstall_env_shim()
39
40
41 def test_env_shim_prefers_real_env(open_wallet: Wallet) -> None:
42 os.environ["openai_api_key"] = "real-env-value"
43 try:
44 install_env_shim(open_wallet)
45 assert os.getenv("openai_api_key") == "real-env-value"
46 finally:
47 uninstall_env_shim()
48 os.environ.pop("openai_api_key", None)
49
50
51 def test_walletize_env_resolves_mapping(open_wallet: Wallet) -> None:
52 mapping = {
53 "OPENAI_API_KEY": "openai_api_key",
54 "POSTGRES_PASSWORD": "postgres_password",
55 }
56 resolved = walletize_env(open_wallet, mapping)
57 assert resolved == {
58 "OPENAI_API_KEY": "sk-test-openai",
59 "POSTGRES_PASSWORD": "db-pass-123",
60 }
61