sdk

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

commit ac234eda1ff594ee0a96497e2cad326070fef46b
parent 91e3b1f224cbc0ed4fe9ba7566b03e61ea781cd1
Author: triesap <tyson@radroots.org>
Date:   Tue, 16 Jun 2026 00:17:07 -0700

sdk: harden sync failure tests

Diffstat:
Mcrates/sdk/tests/sync_runtime.rs | 37+++++++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+), 0 deletions(-)

diff --git a/crates/sdk/tests/sync_runtime.rs b/crates/sdk/tests/sync_runtime.rs @@ -521,6 +521,43 @@ async fn push_outbox_continues_after_adapter_transport_failure_and_releases_clai } #[tokio::test] +async fn push_outbox_returns_fatal_error_for_malformed_signed_event_data() { + let (_tempdir, sdk) = directory_sdk(&[RELAY_A, RELAY_B]).await; + let corrupt_outbox_event_id = + enqueue_listing(&sdk, LISTING_A_D_TAG, "Corrupt Coffee", &[RELAY_A]).await; + let safe_outbox_event_id = + enqueue_listing(&sdk, LISTING_B_D_TAG, "Safe Coffee", &[RELAY_B]).await; + let outbox = RadrootsOutbox::open_file(&sdk.storage_paths().expect("paths").outbox_path) + .await + .expect("outbox"); + let changed = + sqlx::query("UPDATE outbox_event SET signed_event_json = ? WHERE outbox_event_id = ?") + .bind("{malformed-signed-event-json") + .bind(corrupt_outbox_event_id) + .execute(outbox.pool()) + .await + .expect("corrupt signed event"); + assert_eq!(changed.rows_affected(), 1); + let adapter = RadrootsMockRelayPublishAdapter::new(); + + let error = sdk + .sync() + .push_outbox_with_adapter(&adapter, PushOutboxRequest::new().with_limit(2)) + .await + .expect_err("fatal malformed outbox data"); + + assert!(matches!(error, RadrootsSdkError::Outbox { .. })); + assert!(adapter.captured_raw_events().is_empty()); + let safe_event = outbox + .get_event(safe_outbox_event_id) + .await + .expect("safe event") + .expect("safe event"); + assert_eq!(safe_event.state, RadrootsOutboxEventState::Signed); + assert!(safe_event.claim_token.is_none()); +} + +#[tokio::test] async fn push_outbox_does_not_claim_unsigned_outbox_work() { let (_tempdir, sdk) = directory_sdk(&[RELAY_A]).await; let prepared = sdk