identity_contract.rs (2317B)
1 use radroots_storage::authored_draft::{AuthoredDraftId, AuthoredDraftRevision}; 2 use tera_core::runtime::product_surface::{LocalNetwork, Phase1ExistingDraft, Phase1QueueIntent}; 3 use tera_ffi::{FfiLocalNetworkRecord, MOBILE_FFI_SCHEMA_VERSION}; 4 5 #[test] 6 fn stable_context_id_and_generation_keep_the_existing_wire_shape() { 7 let context = LocalNetwork::new( 8 "nearby".into(), 9 "Nearby".into(), 10 vec!["wss://relay.example".into()], 11 None, 12 vec![], 13 u64::MAX, 14 ) 15 .unwrap(); 16 let wire = serde_json::to_value(&context).unwrap(); 17 assert_eq!(wire["id"], "nearby"); 18 assert_eq!(wire["generation"], u64::MAX); 19 assert_eq!( 20 serde_json::from_value::<LocalNetwork>(wire).unwrap(), 21 context 22 ); 23 let dto = FfiLocalNetworkRecord::from(context); 24 assert_eq!(dto.schema_version, MOBILE_FFI_SCHEMA_VERSION); 25 assert_eq!(dto.id, "nearby"); 26 assert_eq!(dto.generation, u64::MAX); 27 } 28 29 #[test] 30 fn shared_draft_identity_and_revision_remain_validated_at_app_admission() { 31 let id = AuthoredDraftId::new([7; 16]).unwrap(); 32 let encoded = serde_json::to_value(id).unwrap(); 33 assert_eq!(encoded, serde_json::to_value([7; 16]).unwrap()); 34 assert_eq!( 35 serde_json::from_value::<AuthoredDraftId>(encoded).unwrap(), 36 id 37 ); 38 for revision in [1, i64::MAX as u64, (i64::MAX as u64) + 1, u64::MAX] { 39 let typed = AuthoredDraftRevision::new(revision).unwrap(); 40 let wire = serde_json::to_string(&typed).unwrap(); 41 assert_eq!(wire, revision.to_string()); 42 assert_eq!( 43 serde_json::from_str::<AuthoredDraftRevision>(&wire).unwrap(), 44 typed 45 ); 46 assert!(Phase1ExistingDraft::new(*id.as_bytes(), revision).is_ok()); 47 assert!(Phase1QueueIntent::new(*id.as_bytes(), revision).is_ok()); 48 } 49 assert!( 50 AuthoredDraftRevision::new(u64::MAX) 51 .unwrap() 52 .next() 53 .is_err() 54 ); 55 for (id, revision) in [([0; 16], 1), ([7; 16], 0)] { 56 assert!(Phase1ExistingDraft::new(id, revision).is_err()); 57 assert!(Phase1QueueIntent::new(id, revision).is_err()); 58 } 59 for wire in ["0", "-1", "18446744073709551616", "1.5"] { 60 assert!(serde_json::from_str::<AuthoredDraftRevision>(wire).is_err()); 61 } 62 }