relay_auth.rs (1078B)
1 #![forbid(unsafe_code)] 2 3 use crate::kinds::KIND_RELAY_AUTH as KIND_RELAY_AUTH_EVENT; 4 5 #[cfg(not(feature = "std"))] 6 use alloc::string::String; 7 8 pub const KIND_RELAY_AUTH: u32 = KIND_RELAY_AUTH_EVENT; 9 10 #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] 11 #[derive(Clone, Debug, PartialEq, Eq)] 12 pub struct RadrootsRelayAuth { 13 pub relay: String, 14 pub challenge: String, 15 } 16 17 #[cfg(all(test, feature = "serde"))] 18 mod tests { 19 use super::*; 20 21 #[test] 22 fn relay_auth_kind_matches_nip42() { 23 assert_eq!(KIND_RELAY_AUTH, 22242); 24 } 25 26 #[test] 27 fn relay_auth_serializes_nip42_tags() { 28 let value = serde_json::to_value(RadrootsRelayAuth { 29 relay: "wss://relay.example.invalid/farm/ABCDEFGHIJKLMNOPQRSTUV".to_string(), 30 challenge: "relay-provided-challenge".to_string(), 31 }) 32 .unwrap(); 33 34 assert_eq!( 35 value["relay"], 36 "wss://relay.example.invalid/farm/ABCDEFGHIJKLMNOPQRSTUV" 37 ); 38 assert_eq!(value["challenge"], "relay-provided-challenge"); 39 } 40 }