update ProcessState tests

This commit is contained in:
NicolasCantu 2025-06-03 18:13:16 +02:00
parent e05929ace1
commit 304b1d0cc9

View File

@ -582,7 +582,7 @@ pub fn check_tx_for_process_updates(tx: &Transaction) -> anyhow::Result<OutPoint
mod tests { mod tests {
use std::str::FromStr; use std::str::FromStr;
use serde_json::json; use serde_json::{json, Value};
use sp_client::{ use sp_client::{
bitcoin::{secp256k1::SecretKey, Network, Txid}, bitcoin::{secp256k1::SecretKey, Network, Txid},
silentpayments::SilentPaymentAddress, silentpayments::SilentPaymentAddress,
@ -744,19 +744,19 @@ mod tests {
("apophis".to_owned(), role_def_apophis) ("apophis".to_owned(), role_def_apophis)
]); ]);
let private_data: BTreeMap<String, Value> = serde_json::from_value(json!({ let private_data: Pcd = json!({
"field1": "value1", "field1": "value1",
"field2": "value2", "field2": "value2",
})).unwrap(); }).try_into().unwrap();
let outpoint = OutPoint::null(); let outpoint = OutPoint::null();
let public_data: BTreeMap<String, Value> = serde_json::from_value(json!({ let public_data: Pcd = json!({
"public1": "public1", "public1": "public1",
"public2": "public2", "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 { fn create_pairing_process_one() -> ProcessState {
@ -772,11 +772,11 @@ mod tests {
let outpoint = OutPoint::from_str("8425e9749957fd8ca83460c21718be4017692fd3ae61cbb0f0d401e7a5ddce6a:0").unwrap(); 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 { fn create_pairing_process_two() -> ProcessState {
@ -794,14 +794,11 @@ mod tests {
let outpoint = OutPoint::from_str("8425e9749957fd8ca83460c21718be4017692fd3ae61cbb0f0d401e7a5ddce6a:0").unwrap(); 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![ let paired_addresses: Pcd = json!({PAIREDADDRESSES: [carol_address, dave_address]}).try_into().unwrap();
Value::String(carol_address.to_string()),
Value::String(dave_address.to_string())
]);
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] #[test]
@ -945,7 +942,7 @@ mod tests {
#[test] #[test]
fn test_valid_pairing_add_device() { fn test_valid_pairing_add_device() {
let pairing_state = create_pairing_process_one(); let pairing_state = create_pairing_process_one();
let mut paired_addresses = pairing_state.public_data.get(PAIREDADDRESSES).unwrap().clone(); let mut paired_addresses: Vec<SilentPaymentAddress> = from_reader(pairing_state.public_data.get(PAIREDADDRESSES).unwrap().as_slice()).unwrap();
let mut pairing_process = Process::new(pairing_state.commited_in); let mut pairing_process = Process::new(pairing_state.commited_in);
pairing_process.insert_concurrent_state(pairing_state).unwrap(); pairing_process.insert_concurrent_state(pairing_state).unwrap();
let new_commitment = OutPoint::from_str("7f1a6d8923d6ee58a075c0e99e25472bb22a3eea221739281c2beaf829f03f27:0").unwrap(); let new_commitment = OutPoint::from_str("7f1a6d8923d6ee58a075c0e99e25472bb22a3eea221739281c2beaf829f03f27:0").unwrap();
@ -956,17 +953,17 @@ mod tests {
( (
pairing_process.get_process_id().unwrap(), pairing_process.get_process_id().unwrap(),
Member::new( 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 // Add Dave address
let dave_address = create_dave_wallet().get_receiving_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 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() let carol_key: SecretKey = create_carol_wallet()
.get_spend_key() .get_spend_key()
@ -982,7 +979,7 @@ mod tests {
#[test] #[test]
fn test_valid_pairing_rm_device() { fn test_valid_pairing_rm_device() {
let pairing_state = create_pairing_process_two(); let pairing_state = create_pairing_process_two();
let paired_addresses = pairing_state.public_data.get(PAIREDADDRESSES).unwrap().clone(); let mut paired_addresses: Vec<SilentPaymentAddress> = from_reader(pairing_state.public_data.get(PAIREDADDRESSES).unwrap().as_slice()).unwrap();
let mut pairing_process = Process::new(pairing_state.commited_in); let mut pairing_process = Process::new(pairing_state.commited_in);
pairing_process.insert_concurrent_state(pairing_state).unwrap(); pairing_process.insert_concurrent_state(pairing_state).unwrap();
let new_commitment = OutPoint::from_str("7f1a6d8923d6ee58a075c0e99e25472bb22a3eea221739281c2beaf829f03f27:0").unwrap(); let new_commitment = OutPoint::from_str("7f1a6d8923d6ee58a075c0e99e25472bb22a3eea221739281c2beaf829f03f27:0").unwrap();
@ -993,29 +990,27 @@ mod tests {
( (
pairing_process.get_process_id().unwrap(), pairing_process.get_process_id().unwrap(),
Member::new( 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 // Remove Dave address
let dave_address = create_dave_wallet().get_receiving_address(); let dave_address = create_dave_wallet().get_receiving_address();
let paired_addresses = extract_paired_addresses(&paired_addresses).unwrap(); let filtered_paired_addresses: Vec<SilentPaymentAddress> = paired_addresses.into_iter().filter_map(|a| {
let filtered_paired_addresses = Value::from_iter(paired_addresses.into_iter().filter_map(|a| {
if a != dave_address { if a != dave_address {
Some(a.to_string()) Some(a)
} else { } else {
None None
} }
})); })
.collect();
let roles = &pairing_process.get_latest_commited_state().unwrap().roles; let roles = &pairing_process.get_latest_commited_state().unwrap().roles;
let mut rm_device_state = ProcessState::new( let mut rm_device_state = ProcessState::new(
new_commitment, new_commitment,
Pcd::new(BTreeMap::new()), Pcd::new(BTreeMap::new()),
Pcd::new( json!({PAIREDADDRESSES: filtered_paired_addresses}).try_into().unwrap(),
BTreeMap::from([(PAIREDADDRESSES.to_owned(), filtered_paired_addresses)])
),
roles.clone() roles.clone()
).unwrap(); ).unwrap();
@ -1041,7 +1036,7 @@ mod tests {
#[test] #[test]
fn test_error_pairing_add_device_wrong_signature() { fn test_error_pairing_add_device_wrong_signature() {
let pairing_state = create_pairing_process_one(); let pairing_state = create_pairing_process_one();
let mut paired_addresses = pairing_state.public_data.get(PAIREDADDRESSES).unwrap().clone(); let mut paired_addresses: Vec<SilentPaymentAddress> = from_reader(pairing_state.public_data.get(PAIREDADDRESSES).unwrap().as_slice()).unwrap();
let mut pairing_process = Process::new(pairing_state.commited_in); let mut pairing_process = Process::new(pairing_state.commited_in);
pairing_process.insert_concurrent_state(pairing_state).unwrap(); pairing_process.insert_concurrent_state(pairing_state).unwrap();
let new_commitment = OutPoint::from_str("7f1a6d8923d6ee58a075c0e99e25472bb22a3eea221739281c2beaf829f03f27:0").unwrap(); let new_commitment = OutPoint::from_str("7f1a6d8923d6ee58a075c0e99e25472bb22a3eea221739281c2beaf829f03f27:0").unwrap();
@ -1052,17 +1047,17 @@ mod tests {
( (
pairing_process.get_process_id().unwrap(), pairing_process.get_process_id().unwrap(),
Member::new( 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 // Add Dave address
let dave_address = create_dave_wallet().get_receiving_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 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() let dave_key: SecretKey = create_dave_wallet()
.get_spend_key() .get_spend_key()
@ -1210,7 +1205,8 @@ mod tests {
let state = dummy_process_state(); let state = dummy_process_state();
let mut new_state = state.clone(); let mut new_state = state.clone();
let key_to_modify = state.pcd_commitment.keys().into_iter().next().unwrap(); 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() let alice_key: SecretKey = create_alice_wallet()
.get_spend_key() .get_spend_key()
.try_into() .try_into()
@ -1237,7 +1233,8 @@ mod tests {
let state = dummy_process_state(); let state = dummy_process_state();
let mut new_state = state.clone(); let mut new_state = state.clone();
let key_to_modify = state.pcd_commitment.keys().into_iter().next().unwrap(); 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() let carol_key: SecretKey = create_carol_wallet()
.get_spend_key() .get_spend_key()
.try_into() .try_into()