sdk

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

commit 4f12d0215da93b51d2b9a6a8b597c7308938515e
parent 9b7e4a4ef5fa07f6c2f4fe7c759a63800e503a69
Author: triesap <tyson@radroots.org>
Date:   Mon, 15 Jun 2026 22:39:51 -0700

sdk: add product api guard tests

Diffstat:
Mcrates/sdk/tests/listings_runtime.rs | 38++++++++++++++++++++++++++++++++++++++
Mcrates/sdk/tests/runtime_foundation.rs | 11+++++++++++
2 files changed, 49 insertions(+), 0 deletions(-)

diff --git a/crates/sdk/tests/listings_runtime.rs b/crates/sdk/tests/listings_runtime.rs @@ -328,6 +328,44 @@ async fn prepare_then_enqueue_prepared_uses_same_event_id() { } #[tokio::test] +async fn enqueue_receipt_debug_omits_signed_event_payload_material() { + let (_tempdir, sdk) = directory_sdk().await; + let request = ListingEnqueuePublishRequest::new( + actor(), + listing(LISTING_A_D_TAG, "Coffee"), + SdkRelayTargetPolicy::UseConfiguredRelays, + ) + .try_with_idempotency_key("debug-secret-idempotency") + .expect("idempotency key"); + let receipt = sdk + .listings() + .enqueue_publish(request, &FixtureSigner::new(SELLER)) + .await + .expect("enqueue"); + let debug = format!("{receipt:?}"); + + assert!(debug.contains("ListingEnqueueReceipt")); + assert!(debug.contains("StoredAndQueued")); + assert!(!debug.contains("debug-secret-idempotency")); + assert!(!debug.contains("raw_json")); + assert!(!debug.contains("\"tags\"")); + assert!(!debug.contains("\"content\"")); + assert!(!debug.contains(&"f".repeat(128))); +} + +#[test] +fn mutation_state_debug_uses_product_state_names() { + assert_eq!( + format!("{:?}", SdkMutationState::StoredAndQueued), + "StoredAndQueued" + ); + assert_eq!( + format!("{:?}", SdkMutationState::AlreadyQueued), + "AlreadyQueued" + ); +} + +#[tokio::test] async fn enqueue_publish_convenience_matches_prepare_plus_enqueue_prepared() { let (_prepared_tempdir, prepared_sdk) = directory_sdk().await; let prepared_actor = actor(); diff --git a/crates/sdk/tests/runtime_foundation.rs b/crates/sdk/tests/runtime_foundation.rs @@ -244,3 +244,14 @@ fn outbox_idempotency_conflict_maps_to_structured_sdk_error() { assert!(!message.contains(&"b".repeat(64))); assert!(!message.contains(&"c".repeat(64))); } + +#[test] +fn runtime_local_example_stays_on_product_api_boundary() { + let example = include_str!("../examples/runtime_local.rs"); + + assert!(example.contains("prepare_publish")); + assert!(example.contains("push_outbox")); + assert!(!example.contains("WireEventParts")); + assert!(!example.contains(".as_wire_parts(")); + assert!(!example.contains(".into_wire_parts(")); +}