lib

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

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 }