Rust and WASM did-method-plc tools and structures
at main 2.8 kB view raw
1//! Tests for DID validation 2 3use atproto_plc::Did; 4use serde::Deserialize; 5 6#[derive(Deserialize)] 7struct InvalidDidTestCase { 8 did: String, 9 reason: String, 10} 11 12#[test] 13fn test_valid_dids() { 14 let valid_dids_json = include_str!("fixtures/valid_dids.json"); 15 let valid_dids: Vec<String> = serde_json::from_str(valid_dids_json).unwrap(); 16 17 for did_str in valid_dids { 18 let result = Did::parse(&did_str); 19 assert!( 20 result.is_ok(), 21 "Expected {} to be valid, got error: {:?}", 22 did_str, 23 result.err() 24 ); 25 26 let did = result.unwrap(); 27 assert_eq!(did.as_str(), did_str); 28 assert!(did.is_valid()); 29 assert_eq!(did.identifier().len(), 24); 30 } 31} 32 33#[test] 34fn test_invalid_dids() { 35 let invalid_dids_json = include_str!("fixtures/invalid_dids.json"); 36 let invalid_dids: Vec<InvalidDidTestCase> = serde_json::from_str(invalid_dids_json).unwrap(); 37 38 for test_case in invalid_dids { 39 let result = Did::parse(&test_case.did); 40 assert!( 41 result.is_err(), 42 "Expected {} to be invalid ({}), but it was accepted", 43 test_case.did, 44 test_case.reason 45 ); 46 } 47} 48 49#[test] 50fn test_did_display_and_debug() { 51 let did = Did::parse("did:plc:ewvi7nxzyoun6zhxrhs64oiz").unwrap(); 52 53 // Test Display 54 assert_eq!(format!("{}", did), "did:plc:ewvi7nxzyoun6zhxrhs64oiz"); 55 56 // Test Debug 57 let debug_str = format!("{:?}", did); 58 assert!(debug_str.contains("Did")); 59} 60 61#[test] 62fn test_did_serialization() { 63 let did = Did::parse("did:plc:ewvi7nxzyoun6zhxrhs64oiz").unwrap(); 64 65 // Serialize to JSON 66 let json = serde_json::to_string(&did).unwrap(); 67 assert_eq!(json, "\"did:plc:ewvi7nxzyoun6zhxrhs64oiz\""); 68 69 // Deserialize from JSON 70 let deserialized: Did = serde_json::from_str(&json).unwrap(); 71 assert_eq!(did, deserialized); 72} 73 74#[test] 75fn test_did_from_str() { 76 use std::str::FromStr; 77 78 let did = Did::from_str("did:plc:ewvi7nxzyoun6zhxrhs64oiz").unwrap(); 79 assert_eq!(did.identifier(), "ewvi7nxzyoun6zhxrhs64oiz"); 80 81 // Invalid should error 82 assert!(Did::from_str("invalid").is_err()); 83} 84 85#[test] 86fn test_did_clone_and_equality() { 87 let did1 = Did::parse("did:plc:ewvi7nxzyoun6zhxrhs64oiz").unwrap(); 88 let did2 = did1.clone(); 89 90 assert_eq!(did1, did2); 91 assert_eq!(did1.as_str(), did2.as_str()); 92} 93 94#[test] 95fn test_did_from_identifier() { 96 let did = Did::from_identifier("ewvi7nxzyoun6zhxrhs64oiz").unwrap(); 97 assert_eq!(did.as_str(), "did:plc:ewvi7nxzyoun6zhxrhs64oiz"); 98 assert_eq!(did.identifier(), "ewvi7nxzyoun6zhxrhs64oiz"); 99 100 // Invalid identifier 101 assert!(Did::from_identifier("tooshort").is_err()); 102 assert!(Did::from_identifier("0189abcdefghijklmnopqrst").is_err()); 103}