diff --git a/crates/workspace-server/src/server/tests/subject_authorization_tests.rs b/crates/workspace-server/src/server/tests/subject_authorization_tests.rs index dfbf909c2..06253056d 100644 --- a/crates/workspace-server/src/server/tests/subject_authorization_tests.rs +++ b/crates/workspace-server/src/server/tests/subject_authorization_tests.rs @@ -1997,10 +1997,10 @@ async fn native_wip_ticket_create_uses_same_signed_authorization_before_real_bac .as_array() .unwrap() .iter() - .find(|interface| interface["reference"]["name"] == "yoi.ticket/collection/v1") + .find(|interface| interface["reference"]["name"] == "yoi.ticket/collection/v2") .expect("native Ticket collection interface")["reference"] .clone(); - let args = json!({"path":"/tickets","interface":reference,"operation":"create","arguments":{"title":"Native authorized Ticket"}}).to_string(); + let args = json!({"path":"/tickets","interface":reference,"operation":"create","arguments":{"content":{"title":"Native authorized Ticket"}}}).to_string(); assert!( invoke .execute(&args, ToolExecutionContext::direct()) diff --git a/crates/workspace-server/src/server_ticket_tools_backend_tests.rs b/crates/workspace-server/src/server_ticket_tools_backend_tests.rs index 7562c53ab..e59da167c 100644 --- a/crates/workspace-server/src/server_ticket_tools_backend_tests.rs +++ b/crates/workspace-server/src/server_ticket_tools_backend_tests.rs @@ -207,6 +207,14 @@ impl TicketSurface { ) .await?; if name == "ShowTicket" { + let mut page = serde_json::Map::new(); + for (tool_field, native_field) in [("event_cursor", "cursor"), ("event_limit", "limit")] { + if let Some(value) = input.as_object_mut().unwrap().remove(tool_field) { + page.insert(native_field.into(), value); + } + } + assert!(input.as_object().unwrap().is_empty()); + input = serde_json::json!({"page": page}); return execute_tool(self.tools["Invoke"].clone(), serde_json::json!({"path":path,"interface":inspected["interfaces"][0]["reference"],"operation":"read","arguments":input}), context).await; } execute_tool(self.tools["Invoke"].clone(), serde_json::json!({"path":path,"interface":inspected["interfaces"][0]["reference"],"operation":"read","arguments":{}}), ToolExecutionContext::direct()).await?; @@ -216,6 +224,16 @@ impl TicketSurface { ToolExecutionContext::direct(), ) .await?; + // The fixture accepts Tool commands for shared scenarios, but invokes the real v2 + // native coordinates. Do not weaken the production descriptor to accept flat v1 input. + if name == "TicketAssignmentAnswer" { + let fields = input.as_object_mut().unwrap(); + let observed = serde_json::json!({ + "assignment_id": fields.remove("assignment_id").unwrap(), + "expected_last_event_id": fields.remove("expected_last_event_id").unwrap(), + }); + fields.insert("observed".into(), observed); + } let operation = match name { "TicketAssignmentTrackingQuery" => "assignment_tracking_query", "TicketAssignmentAnswer" => "assignment_answer",