Skip to content

Commit

Permalink
fix(wallet): correct change checks in transaction builder
Browse files Browse the repository at this point in the history
  • Loading branch information
sdbondi committed Mar 9, 2023
1 parent ba66597 commit fe6e164
Showing 1 changed file with 20 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -488,9 +488,16 @@ impl SenderTransactionInitializer {
Self::check_value("Missing Lock Height", &self.lock_height, &mut message);
Self::check_value("Missing Fee per gram", &self.fee_per_gram, &mut message);
Self::check_value("Missing Offset", &self.offset, &mut message);
Self::check_value("Change script", &self.private_nonce, &mut message);
Self::check_value("Change input data", &self.private_nonce, &mut message);
Self::check_value("Change script private key", &self.private_nonce, &mut message);
Self::check_value("Missing private nonce", &self.private_nonce, &mut message);
if self.change_secret.is_some() {
Self::check_value("Missing change script", &self.change_script, &mut message);
Self::check_value("Missing change input data", &self.change_input_data, &mut message);
Self::check_value(
"Change script private key",
&self.change_script_private_key,
&mut message,
);
}

if !message.is_empty() {
return self.build_err(&message.join(","));
Expand Down Expand Up @@ -1149,4 +1156,14 @@ mod test {
),
}
}

#[test]
fn fail_change_not_provided() {
let mut builder = SenderTransactionInitializer::new(1, &create_consensus_constants(0));
builder.with_change_secret(PrivateKey::random(&mut OsRng));
let err = builder.build(&CryptoFactories::default(), None, u64::MAX).unwrap_err();
assert!(err.message.contains("change script"));
assert!(err.message.contains("change input data"));
assert!(err.message.contains("Change script private key"));
}
}

0 comments on commit fe6e164

Please sign in to comment.