Merge branch 'wt/review-002-cov13-dead-code'

# Conflicts:
#	src/gateway/dispatch.rs
This commit is contained in:
2026-08-30 23:07:39 +00:00
6 changed files with 40 additions and 164 deletions
+20 -71
View File
@@ -508,7 +508,6 @@ pub fn to_mcp_service(dispatch: Arc<GatewayDispatch>) -> ToMcpService {
#[cfg(test)]
mod tests {
use super::*;
use alkcall::core::auth::{AuthToken, IdentityProvider};
use alkcall::core::types::Capabilities;
use alkcall::registry::context::{OperationContext, ScopedPeerEnv};
use alkcall::registry::discovery::{
@@ -522,41 +521,6 @@ mod tests {
use futures::StreamExt;
use rmcp::model::Extensions;
use std::collections::HashMap;
use std::sync::Mutex as StdMutex;
struct StaticIdentityProvider {
tokens: StdMutex<HashMap<String, Identity>>,
}
impl StaticIdentityProvider {
fn new() -> Self {
Self {
tokens: StdMutex::new(HashMap::new()),
}
}
fn with_token(self, token: &str, identity: Identity) -> Self {
self.tokens
.lock()
.unwrap_or_else(|e| e.into_inner())
.insert(token.to_string(), identity);
self
}
}
impl IdentityProvider for StaticIdentityProvider {
fn resolve_from_fingerprint(&self, _fp: &str) -> Option<Identity> {
None
}
fn resolve_from_token(&self, token: &AuthToken) -> Option<Identity> {
let token_str = String::from_utf8_lossy(&token.raw);
self.tokens
.lock()
.unwrap_or_else(|e| e.into_inner())
.get(token_str.as_ref())
.cloned()
}
}
fn identity_with_scopes(id: &str, scopes: &[&str]) -> Identity {
Identity {
@@ -681,15 +645,8 @@ mod tests {
Arc::new(dispatch_registry)
}
fn dispatch(
registry: Arc<OperationRegistry>,
provider: Arc<dyn alkcall::core::auth::IdentityProvider>,
) -> Arc<GatewayDispatch> {
Arc::new(GatewayDispatch::new(registry, provider))
}
fn provider() -> Arc<dyn alkcall::core::auth::IdentityProvider> {
Arc::new(StaticIdentityProvider::new())
fn dispatch(registry: Arc<OperationRegistry>) -> Arc<GatewayDispatch> {
Arc::new(GatewayDispatch::new(registry))
}
fn extensions_with_identity(identity: Option<Identity>) -> Extensions {
@@ -734,7 +691,7 @@ mod tests {
#[tokio::test]
async fn list_tools_returns_exactly_four_gateway_tools() {
let _gateway = ToMcpGateway::new(dispatch(full_registry_with_ops(vec![]), provider()));
let _gateway = ToMcpGateway::new(dispatch(full_registry_with_ops(vec![])));
let tools = gateway_tools();
let names: Vec<String> = tools.iter().map(|t| t.name.to_string()).collect();
assert_eq!(names.len(), 4);
@@ -751,7 +708,7 @@ mod tests {
OperationType::Query,
AccessControl::default(),
)]);
let _gateway = ToMcpGateway::new(dispatch(registry, provider()));
let _gateway = ToMcpGateway::new(dispatch(registry));
let tools = gateway_tools();
for tool in &tools {
assert_ne!(tool.name, "fs/readFile");
@@ -783,9 +740,7 @@ mod tests {
AccessControl::default(),
),
]);
let idp: Arc<dyn alkcall::core::auth::IdentityProvider> =
Arc::new(StaticIdentityProvider::new());
let gateway = ToMcpGateway::new(dispatch(registry, idp));
let gateway = ToMcpGateway::new(dispatch(registry));
let result = invoke_tool(
&gateway,
@@ -839,7 +794,7 @@ mod tests {
AccessControl::default(),
),
]);
let gateway = ToMcpGateway::new(dispatch(registry, provider()));
let gateway = ToMcpGateway::new(dispatch(registry));
let result = invoke_tool(&gateway, "search", None, None).await;
assert_eq!(result.is_error, Some(false));
@@ -877,7 +832,7 @@ mod tests {
AccessControl::default(),
),
]);
let gateway = ToMcpGateway::new(dispatch(registry, provider()));
let gateway = ToMcpGateway::new(dispatch(registry));
let mut args = Map::new();
args.insert("query".to_string(), Value::String("fs".to_string()));
@@ -906,7 +861,7 @@ mod tests {
OperationType::Query,
AccessControl::default(),
)]);
let gateway = ToMcpGateway::new(dispatch(registry, provider()));
let gateway = ToMcpGateway::new(dispatch(registry));
let mut args = Map::new();
args.insert("name".to_string(), Value::String("fs/readFile".to_string()));
@@ -932,7 +887,7 @@ mod tests {
..Default::default()
},
)]);
let gateway = ToMcpGateway::new(dispatch(registry, provider()));
let gateway = ToMcpGateway::new(dispatch(registry));
let mut args = Map::new();
args.insert("name".to_string(), Value::String("fs/readFile".to_string()));
@@ -962,7 +917,7 @@ mod tests {
..Default::default()
},
)]);
let gateway = ToMcpGateway::new(dispatch(registry, provider()));
let gateway = ToMcpGateway::new(dispatch(registry));
let mut args = Map::new();
args.insert(
@@ -1033,7 +988,7 @@ mod tests {
Capabilities::new(),
))
.unwrap();
let gateway = ToMcpGateway::new(dispatch(Arc::new(dispatch_registry), provider()));
let gateway = ToMcpGateway::new(dispatch(Arc::new(dispatch_registry)));
let mut args = Map::new();
args.insert("name".to_string(), Value::String("secret/op".to_string()));
@@ -1072,7 +1027,7 @@ mod tests {
OperationType::Query,
AccessControl::default(),
)]);
let gateway = ToMcpGateway::new(dispatch(registry, provider()));
let gateway = ToMcpGateway::new(dispatch(registry));
let mut args = Map::new();
args.insert(
@@ -1101,7 +1056,7 @@ mod tests {
OperationType::Query,
AccessControl::default(),
)]);
let gateway = ToMcpGateway::new(dispatch(registry, provider()));
let gateway = ToMcpGateway::new(dispatch(registry));
let mut args = Map::new();
args.insert(
@@ -1122,7 +1077,7 @@ mod tests {
#[tokio::test]
async fn call_argument_errors_carry_retryable_and_truthy_messages() {
let registry = full_registry_with_ops(vec![]);
let gateway = ToMcpGateway::new(dispatch(registry, provider()));
let gateway = ToMcpGateway::new(dispatch(registry));
let missing = invoke_tool(&gateway, "call", None, None).await;
assert_eq!(missing.is_error, Some(true));
@@ -1160,7 +1115,7 @@ mod tests {
#[tokio::test]
async fn call_returns_structured_error_for_call_error() {
let registry = full_registry_with_ops(vec![]);
let gateway = ToMcpGateway::new(dispatch(registry, provider()));
let gateway = ToMcpGateway::new(dispatch(registry));
let mut args = Map::new();
args.insert(
@@ -1255,7 +1210,7 @@ mod tests {
OperationType::Query,
AccessControl::default(),
)]);
let gateway = ToMcpGateway::new(dispatch(registry, provider()));
let gateway = ToMcpGateway::new(dispatch(registry));
let mut args = Map::new();
args.insert(
@@ -1312,9 +1267,7 @@ mod tests {
..Default::default()
},
)]);
let idp: Arc<dyn alkcall::core::auth::IdentityProvider> =
Arc::new(StaticIdentityProvider::new());
let gateway = ToMcpGateway::new(dispatch(registry, idp));
let gateway = ToMcpGateway::new(dispatch(registry));
let mut args = Map::new();
args.insert(
@@ -1333,7 +1286,7 @@ mod tests {
#[tokio::test]
async fn unknown_tool_name_returns_not_found_structured_error() {
let gateway = ToMcpGateway::new(dispatch(Arc::new(OperationRegistry::new()), provider()));
let gateway = ToMcpGateway::new(dispatch(Arc::new(OperationRegistry::new())));
let result = invoke_tool(&gateway, "bogus", None, None).await;
assert_eq!(result.is_error, Some(true));
let structured = result.structured_content.expect("structured error present");
@@ -1353,11 +1306,7 @@ mod tests {
..Default::default()
},
)]);
let idp: Arc<dyn alkcall::core::auth::IdentityProvider> = Arc::new(
StaticIdentityProvider::new()
.with_token("alk_admin", identity_with_scopes("admin-peer", &["admin"])),
);
let gateway = ToMcpGateway::new(dispatch(registry, idp));
let gateway = ToMcpGateway::new(dispatch(registry));
let admin_identity = identity_with_scopes("admin-peer", &["admin"]);
let extensions = extensions_with_identity(Some(admin_identity.clone()));
@@ -1431,7 +1380,7 @@ mod tests {
OperationType::Query,
AccessControl::default(),
)]);
let gateway = ToMcpGateway::new(dispatch(registry, provider()));
let gateway = ToMcpGateway::new(dispatch(registry));
let search_result = invoke_tool(&gateway, "search", None, None).await;
let ops = search_result