update ProcessState
tests
This commit is contained in:
parent
5cc5eaa4a2
commit
78bdcc2e13
@ -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()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user