sdk

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

commit 49e68230ad6b0f607e23a976fed9339138ea2346
parent 5c5280d83ca596c63940df7e0e6e69d2a169cfae
Author: triesap <tyson@radroots.org>
Date:   Tue, 16 Jun 2026 13:18:04 -0700

sdk: cover empty configured relay enqueue

- add a listing runtime test for UseConfiguredRelays without builder relays
- keep empty relay default resolution at the enqueue boundary
- preserve queued outbox sync behavior without a builder relay precondition
- verify runtime and relay-runtime SDK test lanes

Diffstat:
Mcrates/sdk/tests/listings_runtime.rs | 38++++++++++++++++++++++++++++++++------
1 file changed, 32 insertions(+), 6 deletions(-)

diff --git a/crates/sdk/tests/listings_runtime.rs b/crates/sdk/tests/listings_runtime.rs @@ -156,14 +156,18 @@ fn listing(d_tag: &str, title: &str) -> RadrootsListing { } async fn directory_sdk() -> (tempfile::TempDir, RadrootsSdk) { + directory_sdk_with_relays(&[RELAY]).await +} + +async fn directory_sdk_with_relays(relays: &[&str]) -> (tempfile::TempDir, RadrootsSdk) { let tempdir = tempfile::tempdir().expect("tempdir"); - let sdk = RadrootsSdk::builder() + let mut builder = RadrootsSdk::builder() .directory_storage(tempdir.path().join("sdk")) - .fixed_clock(RadrootsSdkTimestamp::from_unix_seconds(1_700_000_000)) - .relay_url(RELAY) - .build() - .await - .expect("sdk"); + .fixed_clock(RadrootsSdkTimestamp::from_unix_seconds(1_700_000_000)); + for relay in relays { + builder = builder.relay_url(*relay); + } + let sdk = builder.build().await.expect("sdk"); (tempdir, sdk) } @@ -279,6 +283,28 @@ async fn enqueue_publish_stores_event_and_queues_signed_outbox_without_publish() } #[tokio::test] +async fn enqueue_publish_use_configured_relays_rejects_empty_builder_relays() { + let (_tempdir, sdk) = directory_sdk_with_relays(&[]).await; + let request = ListingEnqueuePublishRequest::new( + actor(), + listing(LISTING_A_D_TAG, "Coffee"), + SdkRelayTargetPolicy::UseConfiguredRelays, + ); + + let error = sdk + .listings() + .enqueue_publish(request, &FixtureSigner::new(SELLER)) + .await + .expect_err("empty configured relays"); + + assert!(matches!( + error, + RadrootsSdkError::EmptyTargetRelays { operation } + if operation == "sdk relay target set" + )); +} + +#[tokio::test] async fn prepare_then_enqueue_prepared_uses_same_event_id() { let (_tempdir, sdk) = directory_sdk().await; let actor = actor();