sdk

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

commit b04b893574acdd734d4a42c361ae09e627a05798
parent 34281da7f4d67aae7c6cc8508ce784c5ad8e04ed
Author: triesap <tyson@radroots.org>
Date:   Tue,  7 Jul 2026 22:26:42 +0000

transport: validate proxy explicit targets locally

- Exercise shared protocol validation for direct typed proxy requests.
- Assert explicit proxy targets fail before daemon HTTP transport.
- Preserve Reticulum preview direct request coverage.
- Keep radrootsd adapter invalid-request behavior typed.

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

diff --git a/crates/sdk/tests/unit/adapters_radrootsd_tests.rs b/crates/sdk/tests/unit/adapters_radrootsd_tests.rs @@ -716,6 +716,22 @@ async fn publish_signed_event_rejects_invalid_protocol_requests_before_http() { endpoint_uri: "wss://relay.example.com".to_owned(), preview_behavior: Some(TransportPublishPreviewBehavior::RejectDeliveryAttempts), }]); + let mut explicit_proxy_target = base.clone(); + explicit_proxy_target.target_policy = + TransportPublishTargetPolicy::explicit_targets(vec![TransportPublishTarget { + transport_kind: "proxy".to_owned(), + endpoint_uri: "radrootsd-proxy:publish".to_owned(), + preview_behavior: None, + }]); + let proxy_error = adapter + .publish_signed_event(explicit_proxy_target) + .await + .expect_err("explicit proxy target"); + assert!(matches!( + proxy_error, + RadrootsdError::InvalidRequest(message) + if message.contains("proxy") && message.contains("daemon explicit target") + )); let mut empty_idempotency = base; empty_idempotency.idempotency_key = Some(" ".to_owned());