sdk

Radroots SDK and bindings
git clone https://radroots.dev/git/sdk.git
Log | Files | Refs | README

commit 0bd6b0a7fae7b4676b22bb721f5d6452863d0e89
parent a5f2722e28bfc2e8969c7a368605f1fbbf1502ba
Author: triesap <tyson@radroots.org>
Date:   Tue, 14 Jul 2026 19:18:41 +0000

tests: align proxy publish protocol fixtures

- update radrootsd proxy test servers for raw_event_json requests
- assert proxy default-profile enqueue remains ready before push
- cover fallible event envelope construction at evidence boundaries
- keep downstream tests on current transport publish contracts

Diffstat:
Mcrates/sdk/tests/sync_runtime.rs | 42+++++++++++++++++++++++++++++++++++++++---
Mcrates/sdk/tests/trade_product_publish_runtime.rs | 5++++-
Mcrates/sdk/tests/unit/orders_runtime_tests.rs | 19++++++++++++++-----
3 files changed, 57 insertions(+), 9 deletions(-)

diff --git a/crates/sdk/tests/sync_runtime.rs b/crates/sdk/tests/sync_runtime.rs @@ -182,7 +182,10 @@ fn write_transport_publish_response( job_number: usize, ) { let body_json: serde_json::Value = serde_json::from_str(body).expect("body json"); - let event = &body_json["params"]["event"]; + let raw_event_json = body_json["params"]["raw_event_json"] + .as_str() + .expect("raw event json"); + let event: serde_json::Value = serde_json::from_str(raw_event_json).expect("event json"); let ( status, terminal, @@ -1746,6 +1749,35 @@ async fn product_push_outbox_uses_radrootsd_proxy_transport_with_daemon_resolved ) .await .expect("enqueue"); + let pre_push_outbox = + RadrootsOutbox::open_file(&sdk.storage_paths().expect("paths").outbox_path) + .await + .expect("pre-push outbox"); + let pre_push_stored = pre_push_outbox + .get_event(enqueue.outbox_event_id) + .await + .expect("pre-push stored") + .expect("pre-push stored"); + assert_eq!(pre_push_stored.state, RadrootsOutboxEventState::Signed); + let pre_push_targets = pre_push_outbox + .delivery_targets(enqueue.outbox_event_id) + .await + .expect("pre-push targets"); + assert_eq!(pre_push_targets.len(), 1); + assert_eq!( + pre_push_targets[0].transport_kind, + radroots_sdk::RadrootsTransportKind::Proxy + ); + assert_eq!( + pre_push_targets[0].status, + RadrootsOutboxDeliveryTargetStatus::Pending + ); + let pre_push_status = sdk + .sync() + .status(SyncStatusRequest::new()) + .await + .expect("pre-push status"); + assert_eq!(pre_push_status.outbox.ready_signed_events, 1); let receipt = sdk .sync() @@ -1754,12 +1786,12 @@ async fn product_push_outbox_uses_radrootsd_proxy_transport_with_daemon_resolved .expect("transport publish push"); assert_eq!(receipt.attempted_events, 1); - assert_eq!(receipt.published_events, 1); assert_eq!(receipt.events[0].outbox_event_id, enqueue.outbox_event_id); assert_eq!( receipt.events[0].final_state, PushOutboxEventState::Published ); + assert_eq!(receipt.published_events, 1); assert_eq!(receipt.events[0].targets.len(), 1); assert_eq!( receipt.events[0].targets[0].endpoint_uri, @@ -1783,7 +1815,11 @@ async fn product_push_outbox_uses_radrootsd_proxy_transport_with_daemon_resolved "request_then_author_write_then_daemon_default" ); assert_eq!(body["params"]["delivery_policy"]["mode"], "all"); - assert!(body["params"]["event"]["sig"].as_str().is_some()); + let raw_event_json = body["params"]["raw_event_json"] + .as_str() + .expect("raw event json"); + let event: serde_json::Value = serde_json::from_str(raw_event_json).expect("event json"); + assert!(event["sig"].as_str().is_some()); assert!(!recorded.body.contains("bridge.")); assert!(!recorded.body.contains("signer_session_id")); diff --git a/crates/sdk/tests/trade_product_publish_runtime.rs b/crates/sdk/tests/trade_product_publish_runtime.rs @@ -96,7 +96,10 @@ fn read_transport_publish_request_body(stream: &mut TcpStream) -> String { fn write_transport_publish_accept_response(stream: &mut TcpStream, body: &str) { let body_json: serde_json::Value = serde_json::from_str(body).expect("body json"); - let event = &body_json["params"]["event"]; + let raw_event_json = body_json["params"]["raw_event_json"] + .as_str() + .expect("raw event json"); + let event: serde_json::Value = serde_json::from_str(raw_event_json).expect("event json"); let response_body = serde_json::json!({ "jsonrpc": "2.0", "id": body_json["id"], diff --git a/crates/sdk/tests/unit/orders_runtime_tests.rs b/crates/sdk/tests/unit/orders_runtime_tests.rs @@ -2039,12 +2039,21 @@ fn evidence_reference_helpers_reject_invalid_ids_and_payload_mismatches() { } #[test] -fn parse_order_evidence_reports_invalid_ids_unsupported_kinds_and_decode_errors() { +fn parse_order_evidence_reports_constructor_id_unsupported_kind_and_decode_errors() { + let invalid_id = RadrootsEventEnvelope::new(RadrootsEventEnvelopeParts { + id: "not-hex".to_owned(), + author: hex_64('c'), + created_at: 1_700_000_000, + kind: KIND_ORDER_REQUEST, + tags: Vec::new(), + content: "{}".to_owned(), + sig: hex_128('f'), + }) + .expect_err("invalid id"); assert!( - invalid_request_message(parsed_order_evidence_error(parse_order_evidence( - &nostr_event("not-hex".to_owned(), KIND_ORDER_REQUEST,) - ))) - .contains("order evidence event id is invalid") + invalid_id + .to_string() + .contains("event envelope id is invalid") ); assert!( invalid_request_message(parsed_order_evidence_error(parse_order_evidence(