merge: eliminate test-only env vars
This commit is contained in:
commit
b61504e821
|
|
@ -234,6 +234,17 @@ async fn brave_search(
|
|||
)));
|
||||
}
|
||||
|
||||
brave_search_with_api_key(client, cfg, &api_key, query, limit, offset).await
|
||||
}
|
||||
|
||||
async fn brave_search_with_api_key(
|
||||
client: &Client,
|
||||
cfg: &WebSearchConfig,
|
||||
api_key: &str,
|
||||
query: &str,
|
||||
limit: usize,
|
||||
offset: usize,
|
||||
) -> Result<ToolOutput, ToolError> {
|
||||
let endpoint = cfg.base_url.as_deref().unwrap_or(BRAVE_SEARCH_ENDPOINT);
|
||||
let mut url = Url::parse(endpoint).map_err(|err| {
|
||||
ToolError::InvalidArgument(format!("invalid Brave search endpoint: {err}"))
|
||||
|
|
@ -1694,6 +1705,17 @@ mod tests {
|
|||
}))
|
||||
}
|
||||
|
||||
fn brave_search_config(base_url: String) -> WebSearchConfig {
|
||||
WebSearchConfig {
|
||||
enabled: Some(true),
|
||||
provider: Some(WebSearchProvider::Brave),
|
||||
api_key_env: None,
|
||||
timeout_secs: Some(2),
|
||||
base_url: Some(base_url),
|
||||
..Default::default()
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn validates_brave_query_limits() {
|
||||
validate_brave_query("hello world").unwrap();
|
||||
|
|
@ -2019,30 +2041,16 @@ mod tests {
|
|||
async fn searches_brave_with_bounded_output() {
|
||||
let response = "HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{\"web\":{\"results\":[{\"title\":\"Example\",\"url\":\"https://example.com\",\"description\":\"Snippet\",\"extra_snippets\":[\"Extra\"],\"language\":\"en\"}]}}";
|
||||
let (addr, captured) = serve_once_capture(response).await;
|
||||
let env_name = format!("INSOMNIA_TEST_BRAVE_KEY_{}", std::process::id());
|
||||
unsafe { std::env::set_var(&env_name, "test-key") };
|
||||
let tools = WebTools::new(Some(WebConfig {
|
||||
enabled: Some(true),
|
||||
allow_private_addresses: Some(true),
|
||||
search: Some(WebSearchConfig {
|
||||
enabled: Some(true),
|
||||
provider: Some(WebSearchProvider::Brave),
|
||||
api_key_env: Some(env_name.clone()),
|
||||
timeout_secs: Some(2),
|
||||
base_url: Some(format!("http://{addr}/search")),
|
||||
..Default::default()
|
||||
}),
|
||||
search: None,
|
||||
fetch: None,
|
||||
}));
|
||||
let result = tools
|
||||
.run_search(WebSearchInput {
|
||||
query: "insomnia".into(),
|
||||
limit: Some(1),
|
||||
offset: Some(0),
|
||||
})
|
||||
let cfg = brave_search_config(format!("http://{addr}/search"));
|
||||
let result = brave_search_with_api_key(&tools.client, &cfg, "test-key", "insomnia", 1, 0)
|
||||
.await
|
||||
.unwrap();
|
||||
unsafe { std::env::remove_var(&env_name) };
|
||||
let value: Value = serde_json::from_str(result.content.as_deref().unwrap()).unwrap();
|
||||
let request = captured.lock().await.clone().unwrap();
|
||||
assert!(request.starts_with("GET /search?q=insomnia&count=1&offset=0 "));
|
||||
|
|
@ -2065,29 +2073,16 @@ mod tests {
|
|||
);
|
||||
let response: &'static str = Box::leak(response.into_boxed_str());
|
||||
let addr = serve_once(response).await;
|
||||
let env_name = format!("INSOMNIA_TEST_BRAVE_OVERSIZED_KEY_{}", std::process::id());
|
||||
unsafe { std::env::set_var(&env_name, "test-key") };
|
||||
let tools = WebTools::new(Some(WebConfig {
|
||||
enabled: Some(true),
|
||||
allow_private_addresses: Some(true),
|
||||
search: Some(WebSearchConfig {
|
||||
enabled: Some(true),
|
||||
provider: Some(WebSearchProvider::Brave),
|
||||
api_key_env: Some(env_name.clone()),
|
||||
base_url: Some(format!("http://{addr}/search")),
|
||||
..Default::default()
|
||||
}),
|
||||
search: None,
|
||||
fetch: None,
|
||||
}));
|
||||
let err = tools
|
||||
.run_search(WebSearchInput {
|
||||
query: "insomnia".into(),
|
||||
limit: Some(1),
|
||||
offset: Some(0),
|
||||
})
|
||||
let cfg = brave_search_config(format!("http://{addr}/search"));
|
||||
let err = brave_search_with_api_key(&tools.client, &cfg, "test-key", "insomnia", 1, 0)
|
||||
.await
|
||||
.unwrap_err();
|
||||
unsafe { std::env::remove_var(&env_name) };
|
||||
assert!(err.to_string().contains("Content-Length"));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ Credential env var は interoperability のために現時点では残ってい
|
|||
|
||||
## Build / example / test 変数
|
||||
|
||||
これらは通常の application configuration ではない。test-only の user-facing env var は supported surface として立てず、既存の `INSOMNIA_TEST_*` も削除する。test が public env behavior を検証する必要がある場合だけ、shared guard / test-support crate で process environment mutation を閉じ込める。
|
||||
これらは通常の application configuration ではない。test-only の user-facing env var は supported surface として立てず、既存のものも active code/tests から削除する。test が public env behavior を検証する必要がある場合だけ、shared guard / test-support crate で process environment mutation を閉じ込める。
|
||||
|
||||
| 変数 | Context | 備考 |
|
||||
| --- | --- | --- |
|
||||
|
|
@ -78,7 +78,7 @@ Credential env var は interoperability のために現時点では残ってい
|
|||
- `INSOMNIA_USER_MANIFEST` は通常の profile-based Pod/TUI startup の一部ではない。one-file manifest の debug / compatibility path には `insomnia pod --manifest <PATH>` を使う。
|
||||
- ambient `.insomnia/manifest.toml` discovery は通常の fresh startup の一部ではない。
|
||||
- `INSOMNIA_POD_COMMAND` は single-binary 化に伴って削除する。Pod runtime は `insomnia pod ...` の typed command として起動する。
|
||||
- `INSOMNIA_TEST_*` のような test-only 環境変数は supported surface にしない。既存利用も削除する。
|
||||
- 開発・テスト専用の環境変数は supported surface にしない。既存利用も削除する。
|
||||
- `insomnia-pod` は installed command ではない。Pod runtime は `insomnia pod ...` から起動する。
|
||||
- 通常 runtime は `.env` ファイルを load しない。
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user