fix(runtime): isolate agent state by project (#101)
This commit is contained in:
@ -1415,9 +1415,7 @@ mod mcp_tests {
|
||||
#[test]
|
||||
fn opencode_provider_config_rejects_empty_fields() {
|
||||
let secret_ref = crate::ports::SecretRef::new("secret-1");
|
||||
assert!(
|
||||
OpenCodeProviderConfig::new("", "claude-sonnet-5", secret_ref.clone()).is_err()
|
||||
);
|
||||
assert!(OpenCodeProviderConfig::new("", "claude-sonnet-5", secret_ref.clone()).is_err());
|
||||
assert!(OpenCodeProviderConfig::new("anthropic", "", secret_ref).is_err());
|
||||
}
|
||||
|
||||
@ -1448,7 +1446,12 @@ mod mcp_tests {
|
||||
|
||||
#[test]
|
||||
fn profile_with_opencode_provider_round_trips_camelcase() {
|
||||
let provider = OpenCodeProviderConfig::new("anthropic", "claude-sonnet-5", crate::ports::SecretRef::new("secret-anthropic")).unwrap();
|
||||
let provider = OpenCodeProviderConfig::new(
|
||||
"anthropic",
|
||||
"claude-sonnet-5",
|
||||
crate::ports::SecretRef::new("secret-anthropic"),
|
||||
)
|
||||
.unwrap();
|
||||
let profile = profile_without_mcp()
|
||||
.with_structured_adapter(StructuredAdapter::OpenCode)
|
||||
.with_opencode_provider(provider.clone());
|
||||
@ -1469,7 +1472,12 @@ mod mcp_tests {
|
||||
None,
|
||||
)
|
||||
.unwrap();
|
||||
let cloud = OpenCodeProviderConfig::new("anthropic", "claude-sonnet-5", crate::ports::SecretRef::new("secret-cloud")).unwrap();
|
||||
let cloud = OpenCodeProviderConfig::new(
|
||||
"anthropic",
|
||||
"claude-sonnet-5",
|
||||
crate::ports::SecretRef::new("secret-cloud"),
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
let only_local = profile_without_mcp()
|
||||
.with_structured_adapter(StructuredAdapter::OpenCode)
|
||||
@ -1504,7 +1512,12 @@ mod mcp_tests {
|
||||
None,
|
||||
)
|
||||
.unwrap();
|
||||
let cloud = OpenCodeProviderConfig::new("anthropic", "claude-sonnet-5", crate::ports::SecretRef::new("secret-cloud")).unwrap();
|
||||
let cloud = OpenCodeProviderConfig::new(
|
||||
"anthropic",
|
||||
"claude-sonnet-5",
|
||||
crate::ports::SecretRef::new("secret-cloud"),
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
// Setting the cloud provider clears a previously-set local one.
|
||||
let cloud_wins = profile_without_mcp()
|
||||
@ -1513,7 +1526,10 @@ mod mcp_tests {
|
||||
.with_opencode_provider(cloud.clone());
|
||||
assert!(cloud_wins.opencode_backend_is_consistent());
|
||||
assert!(cloud_wins.opencode.is_none(), "stale local backend dropped");
|
||||
assert_eq!(cloud_wins.opencode_provider.as_ref().unwrap().provider_id, "anthropic");
|
||||
assert_eq!(
|
||||
cloud_wins.opencode_provider.as_ref().unwrap().provider_id,
|
||||
"anthropic"
|
||||
);
|
||||
|
||||
// Setting the local provider clears a previously-set cloud one.
|
||||
let local_wins = profile_without_mcp()
|
||||
@ -1521,13 +1537,21 @@ mod mcp_tests {
|
||||
.with_opencode_provider(cloud)
|
||||
.with_opencode(local);
|
||||
assert!(local_wins.opencode_backend_is_consistent());
|
||||
assert!(local_wins.opencode_provider.is_none(), "stale cloud backend dropped");
|
||||
assert!(
|
||||
local_wins.opencode_provider.is_none(),
|
||||
"stale cloud backend dropped"
|
||||
);
|
||||
assert!(local_wins.opencode.is_some());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn opencode_provider_config_serialises_no_local_model_server_id_leak() {
|
||||
let config = OpenCodeProviderConfig::new("openrouter", "some-model", crate::ports::SecretRef::new("secret-openrouter")).unwrap();
|
||||
let config = OpenCodeProviderConfig::new(
|
||||
"openrouter",
|
||||
"some-model",
|
||||
crate::ports::SecretRef::new("secret-openrouter"),
|
||||
)
|
||||
.unwrap();
|
||||
let json = serde_json::to_string(&config).expect("serialise");
|
||||
assert!(!json.contains("localModelServerId"));
|
||||
assert!(!json.contains("baseURL"));
|
||||
|
||||
Reference in New Issue
Block a user