fix(permissions): tools MCP inter-projets exposés (idea_project_*) + contactable agent/template persisté — update_agent_contactable (application/web-server/app-tauri), defaultContactable TemplateEditor save/reopen, groupes MCP 'IdeA inter-projets' avec fallback, permissions agent Contactable — #267 (QA verte)
This commit is contained in:
@ -57,8 +57,8 @@ use application::{
|
||||
DeleteAgent, DeleteAgentInput, LaunchAgent, LaunchAgentInput, ListAgents, ListAgentsInput,
|
||||
LiveSessions, ManagedTempExposureRequest, PermissionProjectorRegistry, ReadAgentContext,
|
||||
ReadAgentContextInput, ReleaseManagedTemp, ResolveManagedTemp, StructuredRoutingMode,
|
||||
StructuredSessions, TerminalSessions, UpdateAgentContext, UpdateAgentContextInput,
|
||||
UpdateAgentEffort, UpdateAgentEffortInput,
|
||||
StructuredSessions, TerminalSessions, UpdateAgentContactable, UpdateAgentContactableInput,
|
||||
UpdateAgentContext, UpdateAgentContextInput, UpdateAgentEffort, UpdateAgentEffortInput,
|
||||
};
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
@ -1163,6 +1163,53 @@ async fn update_agent_effort_not_found_for_unknown_agent_id() {
|
||||
assert_eq!(err.code(), "NOT_FOUND", "got {err:?}");
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn update_agent_contactable_persists_manifest_and_can_be_cleared() {
|
||||
let a = scratch_agent(aid(1), "Backend", "agents/backend.md", pid(9));
|
||||
let contexts = FakeContexts::with_agent(&a, "ctx");
|
||||
let update = UpdateAgentContactable::new(Arc::new(contexts.clone()));
|
||||
|
||||
let enabled = update
|
||||
.execute(UpdateAgentContactableInput {
|
||||
project: project(),
|
||||
agent_id: a.id,
|
||||
contactable: true,
|
||||
})
|
||||
.await
|
||||
.unwrap();
|
||||
assert!(enabled.agent.contactable);
|
||||
assert!(contexts.manifest().entries[0].contactable);
|
||||
|
||||
let disabled = update
|
||||
.execute(UpdateAgentContactableInput {
|
||||
project: project(),
|
||||
agent_id: a.id,
|
||||
contactable: false,
|
||||
})
|
||||
.await
|
||||
.unwrap();
|
||||
assert!(!disabled.agent.contactable);
|
||||
assert!(!contexts.manifest().entries[0].contactable);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn update_agent_contactable_not_found_for_unknown_agent_id() {
|
||||
let a = scratch_agent(aid(1), "Backend", "agents/backend.md", pid(9));
|
||||
let contexts = FakeContexts::with_agent(&a, "ctx");
|
||||
let update = UpdateAgentContactable::new(Arc::new(contexts));
|
||||
|
||||
let err = update
|
||||
.execute(UpdateAgentContactableInput {
|
||||
project: project(),
|
||||
agent_id: aid(404),
|
||||
contactable: true,
|
||||
})
|
||||
.await
|
||||
.unwrap_err();
|
||||
|
||||
assert_eq!(err.code(), "NOT_FOUND", "got {err:?}");
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn delete_removes_entry_then_unknown_is_not_found() {
|
||||
let a = scratch_agent(aid(1), "Backend", "agents/backend.md", pid(9));
|
||||
|
||||
Reference in New Issue
Block a user