fix: include idle-only input in runtime API contract

This commit is contained in:
2026-10-02 03:33:30 +09:00
parent d5f49cbf00
commit d0ea9f598d
3 changed files with 49 additions and 8 deletions
+25 -8
View File
@@ -3490,14 +3490,31 @@ mod tests {
conflicting_request.create_fingerprint = "different-fingerprint".to_string();
let generated = client.create_worker(generated_request).await.unwrap();
assert_eq!(generated.worker.worker_id.to_string(), generated_worker_id);
let generated_input: runtime_api::WorkerInput = serde_json::from_value(
serde_json::to_value(WorkerInput::user("generated client input")).unwrap(),
)
.unwrap();
client
.send_worker_input(generated_worker_id.clone(), generated_input)
.await
.unwrap();
for kind in [
crate::interaction::WorkerInputKind::User,
crate::interaction::WorkerInputKind::UserIfIdle,
] {
let mut input = WorkerInput::user("generated client input");
input.kind = kind.clone();
input.submission_request_id = Some(format!("generated-{kind:?}"));
// The remote adapter performs this same conversion before sending.
// Both the generated API contract and the HTTP receiver must retain
// Idle-only admission rather than silently downgrading it to User.
let generated_input: runtime_api::WorkerInput =
serde_json::from_value(serde_json::to_value(&input).unwrap()).unwrap();
assert_eq!(
serde_json::to_value(&generated_input).unwrap(),
serde_json::to_value(&input).unwrap()
);
let response = client
.send_worker_input(generated_worker_id.clone(), generated_input)
.await
.unwrap();
assert_eq!(
Some(response.ack.submission.unwrap().submission_request_id),
input.submission_request_id
);
}
client
.stop_worker(
generated_worker_id.clone(),