adapters_relay_tests.rs (3144B)
1 use super::{ 2 client_from_identity, configure_write_relays, connected_client_from_identity, 3 connected_relay_urls, publish_signed_event, signerless_client, signerless_client_with_options, 4 }; 5 use crate::adapters::signing::sign_parts_with_identity; 6 use crate::identity::RadrootsIdentity; 7 use core::time::Duration; 8 use radroots_events_codec::wire::WireEventParts; 9 use tokio::runtime::Runtime; 10 11 #[test] 12 fn client_constructors_build_without_runtime_net() { 13 let identity = RadrootsIdentity::generate(); 14 let _client = client_from_identity(&identity); 15 let _signerless = signerless_client(); 16 let _signerless_with_options = signerless_client_with_options(super::RelayClientOptions::new()) 17 .expect("signerless client with options"); 18 } 19 20 #[test] 21 fn signerless_client_has_no_signer() { 22 let runtime = Runtime::new().expect("tokio runtime"); 23 runtime.block_on(async { 24 let client = signerless_client(); 25 assert!(!client.has_signer().await); 26 }); 27 } 28 29 #[test] 30 fn relay_helpers_accept_empty_relay_sets_without_network_endpoints() { 31 let runtime = Runtime::new().expect("tokio runtime"); 32 runtime.block_on(async { 33 let identity = RadrootsIdentity::generate(); 34 let client = client_from_identity(&identity); 35 36 configure_write_relays(&client, &[], Duration::from_millis(1)) 37 .await 38 .expect("configure empty relays"); 39 assert_eq!(connected_relay_urls(&client).await, Vec::<String>::new()); 40 41 let invalid_relays = vec!["not-a-relay-url".to_owned()]; 42 let error = configure_write_relays(&client, &invalid_relays, Duration::from_millis(1)) 43 .await 44 .expect_err("invalid relay"); 45 assert!(format!("{error:?}").contains("Url")); 46 let connected_error = match connected_client_from_identity( 47 &identity, 48 &invalid_relays, 49 Duration::from_millis(1), 50 ) 51 .await 52 { 53 Ok(_) => panic!("expected invalid connected relay"), 54 Err(error) => error, 55 }; 56 assert!(format!("{connected_error:?}").contains("Url")); 57 58 let disconnected = client_from_identity(&identity); 59 disconnected 60 .add_write_relay("wss://relay.example.com") 61 .await 62 .expect("add relay"); 63 assert_eq!( 64 connected_relay_urls(&disconnected).await, 65 Vec::<String>::new() 66 ); 67 68 let connected = connected_client_from_identity(&identity, &[], Duration::from_millis(1)) 69 .await 70 .expect("connected client"); 71 assert_eq!(connected_relay_urls(&connected).await, Vec::<String>::new()); 72 73 let signed = sign_parts_with_identity( 74 &identity, 75 WireEventParts { 76 kind: 1, 77 content: "hello".to_owned(), 78 tags: Vec::new(), 79 }, 80 ) 81 .expect("signed event"); 82 let error = publish_signed_event(&connected, &signed) 83 .await 84 .expect_err("publish without relays"); 85 assert!(format!("{error:?}").contains("NoRelaysSpecified")); 86 }); 87 }