lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README

commit 5fa8b5e962ce3c7f6a601b14383f5c94792e4e4f
parent 06b32347e6e2ce583fa9d00e64756f181d913013
Author: triesap <tyson@radroots.org>
Date:   Mon,  3 Aug 2026 07:14:29 +0000

transport-nostr: complete package conformance coverage

- assert the concrete adapter implements both split transport interfaces
- freeze the trait-free feature-free curated public package boundary
- keep every mocked authentication network and cancellation matrix reachable
- qualify default no-default all-feature documentation and architecture lanes

Diffstat:
Acrates/transport_nostr/tests/conformance.rs | 87+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 87 insertions(+), 0 deletions(-)

diff --git a/crates/transport_nostr/tests/conformance.rs b/crates/transport_nostr/tests/conformance.rs @@ -0,0 +1,87 @@ +use core::fmt::Debug; +use radroots_transport::{EventSink, EventSource}; +use radroots_transport_nostr::{Config, Error, NostrTransport, RelayUrl, RelayUrlPolicy}; + +const MANIFEST: &str = include_str!("../Cargo.toml"); +const ROOT: &str = include_str!("../src/lib.rs"); +const AUTH: &str = include_str!("../src/auth.rs"); +const RELAY: &str = include_str!("../src/relay.rs"); +const SINK: &str = include_str!("../src/sink.rs"); +const SOURCE: &str = include_str!("../src/source.rs"); +const STATUS: &str = include_str!("../src/status.rs"); + +fn assert_adapter_contract<T>() +where + T: EventSource + EventSink + Clone + Debug + Send + Sync, +{ +} + +fn assert_public_value<T>() +where + T: Clone + Debug + Send + Sync, +{ +} + +#[test] +fn public_types_and_split_spis_satisfy_the_adapter_contract() { + assert_adapter_contract::<NostrTransport>(); + assert_public_value::<Config>(); + assert_public_value::<RelayUrl>(); + assert_public_value::<RelayUrlPolicy>(); + assert_public_value::<Error>(); +} + +#[test] +fn root_and_manifest_expose_no_traits_features_or_ambient_runtime() { + assert!(!MANIFEST.contains("[features]")); + assert!(MANIFEST.contains("publish = false")); + for forbidden in [ + "pub trait ", + "pub mod ", + "tokio::runtime", + "tracing_subscriber", + "radroots_event_store", + "radroots_outbox", + "radroots_storage", + "radroots_sync", + ] { + assert!( + !ROOT.contains(forbidden), + "forbidden root witness `{forbidden}`" + ); + assert!( + !MANIFEST.contains(forbidden), + "forbidden manifest witness `{forbidden}`" + ); + } +} + +#[test] +fn complete_mocked_conformance_matrix_remains_reachable() { + let witnesses = [ + (AUTH, "challenge_response_is_exact_bounded_and_single_use"), + ( + AUTH, + "wrong_relay_timeout_rejection_and_no_signer_fail_closed", + ), + (RELAY, "address_policies_fail_closed_for_special_use_ranges"), + (SINK, "sink_returns_normalized_per_relay_partial_success"), + (SINK, "expired_delivery_deadline_performs_no_relay_work"), + (SINK, "dropping_an_unpolled_delivery_performs_no_relay_work"), + ( + SOURCE, + "source_deduplicates_relays_reports_malformed_and_paginates", + ), + (SOURCE, "dropping_an_unpolled_fetch_performs_no_relay_work"), + ( + STATUS, + "every_upstream_class_maps_to_stable_secret_safe_output", + ), + ]; + for (source, witness) in witnesses { + assert!( + source.contains(witness), + "missing conformance witness `{witness}`" + ); + } +}