app-server-protocol/src/protocol/common_tests.rs
44 lines
use super::*;use anyhow::Result;use codex_protocol::protocol::TurnAbortReason;use pretty_assertions::assert_eq;use serde_json::json;#[test]fn client_response_payload_returns_jsonrpc_parts_and_client_response() -> Result<()> { let (request_id, result, payload) = ClientResponsePayload::ThreadArchive(v2::ThreadArchiveResponse {}) .into_jsonrpc_parts_and_payload(RequestId::Integer(7))?; assert_eq!(request_id, RequestId::Integer(7)); assert_eq!(result, json!({})); let Some(ClientResponse::ThreadArchive { request_id, response: _, }) = payload.and_then(|payload| payload.into_client_response(RequestId::Integer(7))) else { panic!("expected thread/archive client response"); }; assert_eq!(request_id, RequestId::Integer(7)); Ok(())}#[test]fn interrupt_conversation_payload_stays_jsonrpc_only() -> Result<()> { let (request_id, result, payload) = ClientResponsePayload::InterruptConversation(v1::InterruptConversationResponse { abort_reason: TurnAbortReason::Interrupted, }) .into_jsonrpc_parts_and_payload(RequestId::Integer(8))?; assert_eq!(request_id, RequestId::Integer(8)); assert_eq!( result, json!({ "abortReason": "interrupted", }) ); assert!(payload.is_none()); Ok(())}