diff --git a/src/process.rs b/src/process.rs index 7180a7c..a2c7429 100644 --- a/src/process.rs +++ b/src/process.rs @@ -582,7 +582,7 @@ pub fn check_tx_for_process_updates(tx: &Transaction) -> anyhow::Result = serde_json::from_value(json!({ + let private_data: Pcd = json!({ "field1": "value1", "field2": "value2", - })).unwrap(); + }).try_into().unwrap(); let outpoint = OutPoint::null(); - let public_data: BTreeMap = serde_json::from_value(json!({ + let public_data: Pcd = json!({ "public1": "public1", "public2": "public2", - })).unwrap(); + }).try_into().unwrap(); - ProcessState::new(outpoint, Pcd::new(private_data), Pcd::new(public_data), Roles::new(roles)).unwrap() + ProcessState::new(outpoint, private_data, public_data, Roles::new(roles)).unwrap() } fn create_pairing_process_one() -> ProcessState { @@ -772,11 +772,11 @@ mod tests { let outpoint = OutPoint::from_str("8425e9749957fd8ca83460c21718be4017692fd3ae61cbb0f0d401e7a5ddce6a:0").unwrap(); - let private_data = BTreeMap::from([("description".to_owned(), Value::String("pairing".to_owned()))]); + let private_data: Pcd = json!({"description": "pairing"}).try_into().unwrap(); - let paired_addresses = Value::Array(vec![Value::String(carol_address.to_string())]); + let paired_addresses: Pcd = json!({PAIREDADDRESSES: [carol_address]}).try_into().unwrap(); - ProcessState::new(outpoint, Pcd::new(private_data), Pcd::new(BTreeMap::from([(PAIREDADDRESSES.to_owned(), paired_addresses)])), Roles::new(BTreeMap::from([(PAIRING.to_owned(), pairing_role_def)]))).unwrap() + ProcessState::new(outpoint, private_data, paired_addresses, Roles::new(BTreeMap::from([(PAIRING.to_owned(), pairing_role_def)]))).unwrap() } fn create_pairing_process_two() -> ProcessState { @@ -794,14 +794,11 @@ mod tests { let outpoint = OutPoint::from_str("8425e9749957fd8ca83460c21718be4017692fd3ae61cbb0f0d401e7a5ddce6a:0").unwrap(); - let private_data = BTreeMap::from([("description".to_owned(), Value::String("pairing".to_owned()))]); + let private_data: Pcd = json!({"description": "pairing"}).try_into().unwrap(); - let paired_addresses = Value::Array(vec![ - Value::String(carol_address.to_string()), - Value::String(dave_address.to_string()) - ]); + let paired_addresses: Pcd = json!({PAIREDADDRESSES: [carol_address, dave_address]}).try_into().unwrap(); - ProcessState::new(outpoint, Pcd::new(private_data), Pcd::new(BTreeMap::from([(PAIREDADDRESSES.to_owned(), paired_addresses)])), Roles::new(BTreeMap::from([(PAIRING.to_owned(), pairing_role_def)]))).unwrap() + ProcessState::new(outpoint, private_data, paired_addresses, Roles::new(BTreeMap::from([(PAIRING.to_owned(), pairing_role_def)]))).unwrap() } #[test] @@ -945,7 +942,7 @@ mod tests { #[test] fn test_valid_pairing_add_device() { let pairing_state = create_pairing_process_one(); - let mut paired_addresses = pairing_state.public_data.get(PAIREDADDRESSES).unwrap().clone(); + let mut paired_addresses: Vec = from_reader(pairing_state.public_data.get(PAIREDADDRESSES).unwrap().as_slice()).unwrap(); let mut pairing_process = Process::new(pairing_state.commited_in); pairing_process.insert_concurrent_state(pairing_state).unwrap(); let new_commitment = OutPoint::from_str("7f1a6d8923d6ee58a075c0e99e25472bb22a3eea221739281c2beaf829f03f27:0").unwrap(); @@ -956,17 +953,17 @@ mod tests { ( pairing_process.get_process_id().unwrap(), Member::new( - paired_addresses.as_array().unwrap().into_iter().map(|a| a.as_str().unwrap().try_into().unwrap()).collect() + paired_addresses.clone() )) ]) ); // Add Dave address let dave_address = create_dave_wallet().get_receiving_address(); - paired_addresses.as_array_mut().unwrap().push(Value::String(dave_address.to_string())); + paired_addresses.push(dave_address); let roles = &pairing_process.get_latest_commited_state().unwrap().roles; - let mut add_device_state = ProcessState::new(new_commitment, Pcd::new(BTreeMap::new()), Pcd::new(BTreeMap::from([(PAIREDADDRESSES.to_owned(), paired_addresses)])), roles.clone()).unwrap(); + let mut add_device_state = ProcessState::new(new_commitment, Pcd::new(BTreeMap::new()), json!({PAIREDADDRESSES: paired_addresses}).try_into().unwrap(), roles.clone()).unwrap(); let carol_key: SecretKey = create_carol_wallet() .get_spend_key() @@ -982,7 +979,7 @@ mod tests { #[test] fn test_valid_pairing_rm_device() { let pairing_state = create_pairing_process_two(); - let paired_addresses = pairing_state.public_data.get(PAIREDADDRESSES).unwrap().clone(); + let mut paired_addresses: Vec = from_reader(pairing_state.public_data.get(PAIREDADDRESSES).unwrap().as_slice()).unwrap(); let mut pairing_process = Process::new(pairing_state.commited_in); pairing_process.insert_concurrent_state(pairing_state).unwrap(); let new_commitment = OutPoint::from_str("7f1a6d8923d6ee58a075c0e99e25472bb22a3eea221739281c2beaf829f03f27:0").unwrap(); @@ -993,29 +990,27 @@ mod tests { ( pairing_process.get_process_id().unwrap(), Member::new( - paired_addresses.as_array().unwrap().into_iter().map(|a| a.as_str().unwrap().try_into().unwrap()).collect() + paired_addresses.clone() )) ]) ); // Remove Dave address let dave_address = create_dave_wallet().get_receiving_address(); - let paired_addresses = extract_paired_addresses(&paired_addresses).unwrap(); - let filtered_paired_addresses = Value::from_iter(paired_addresses.into_iter().filter_map(|a| { + let filtered_paired_addresses: Vec = paired_addresses.into_iter().filter_map(|a| { if a != dave_address { - Some(a.to_string()) + Some(a) } else { None } - })); + }) + .collect(); let roles = &pairing_process.get_latest_commited_state().unwrap().roles; let mut rm_device_state = ProcessState::new( new_commitment, Pcd::new(BTreeMap::new()), - Pcd::new( - BTreeMap::from([(PAIREDADDRESSES.to_owned(), filtered_paired_addresses)]) - ), + json!({PAIREDADDRESSES: filtered_paired_addresses}).try_into().unwrap(), roles.clone() ).unwrap(); @@ -1041,7 +1036,7 @@ mod tests { #[test] fn test_error_pairing_add_device_wrong_signature() { let pairing_state = create_pairing_process_one(); - let mut paired_addresses = pairing_state.public_data.get(PAIREDADDRESSES).unwrap().clone(); + let mut paired_addresses: Vec = from_reader(pairing_state.public_data.get(PAIREDADDRESSES).unwrap().as_slice()).unwrap(); let mut pairing_process = Process::new(pairing_state.commited_in); pairing_process.insert_concurrent_state(pairing_state).unwrap(); let new_commitment = OutPoint::from_str("7f1a6d8923d6ee58a075c0e99e25472bb22a3eea221739281c2beaf829f03f27:0").unwrap(); @@ -1052,17 +1047,17 @@ mod tests { ( pairing_process.get_process_id().unwrap(), Member::new( - paired_addresses.as_array().unwrap().into_iter().map(|a| a.as_str().unwrap().try_into().unwrap()).collect() + paired_addresses.clone() )) ]) ); // Add Dave address let dave_address = create_dave_wallet().get_receiving_address(); - paired_addresses.as_array_mut().unwrap().push(Value::String(dave_address.to_string())); + paired_addresses.push(dave_address); let roles = &pairing_process.get_latest_commited_state().unwrap().roles; - let mut add_device_state = ProcessState::new(new_commitment, Pcd::new(BTreeMap::new()), Pcd::new(BTreeMap::from([(PAIREDADDRESSES.to_owned(), paired_addresses)])), roles.clone()).unwrap(); + let mut add_device_state = ProcessState::new(new_commitment, Pcd::new(BTreeMap::new()), json!({PAIREDADDRESSES: paired_addresses}).try_into().unwrap(), roles.clone()).unwrap(); let dave_key: SecretKey = create_dave_wallet() .get_spend_key() @@ -1210,7 +1205,8 @@ mod tests { let state = dummy_process_state(); let mut new_state = state.clone(); let key_to_modify = state.pcd_commitment.keys().into_iter().next().unwrap(); - new_state.update_value(key_to_modify.as_str(), &Value::String("new_value1".to_string())).unwrap(); + let updated_value = crate::serialization::ciborium_serialize(&Value::String("new_value1".to_owned())).unwrap(); + new_state.update_value(key_to_modify.as_str(), updated_value.as_slice()).unwrap(); let alice_key: SecretKey = create_alice_wallet() .get_spend_key() .try_into() @@ -1237,7 +1233,8 @@ mod tests { let state = dummy_process_state(); let mut new_state = state.clone(); let key_to_modify = state.pcd_commitment.keys().into_iter().next().unwrap(); - new_state.update_value(key_to_modify.as_str(), &Value::String("new_value1".to_string())).unwrap(); + let updated_value = crate::serialization::ciborium_serialize(&Value::String("new_value1".to_owned())).unwrap(); + new_state.update_value(key_to_modify.as_str(), updated_value.as_slice()).unwrap(); let carol_key: SecretKey = create_carol_wallet() .get_spend_key() .try_into()