Skip to content

Commit 9e6c186

Browse files
author
Antoine Riard
committed
WIP Add package template unit tests
1 parent 8fa2dfc commit 9e6c186

File tree

1 file changed

+126
-0
lines changed

1 file changed

+126
-0
lines changed

lightning/src/chain/onchain_utils.rs

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -844,3 +844,129 @@ pub(crate) fn get_height_timer(current_height: u32, timelock_expiration: u32) ->
844844
}
845845
current_height + 15
846846
}
847+
848+
#[cfg(test)]
849+
mod tests {
850+
use chain::onchain_utils::{CounterpartyReceivedHTLCOutput, PackageTemplate, PackageSolvingData, RevokedOutput};
851+
use chain::Txid;
852+
use ln::chan_utils::HTLCOutputInCommitment;
853+
use ln::PaymentHash;
854+
855+
use bitcoin::hashes::hex::FromHex;
856+
857+
use bitcoin::secp256k1::key::{PublicKey,SecretKey};
858+
use bitcoin::secp256k1::Secp256k1;
859+
860+
macro_rules! dumb_revk_output {
861+
($secp_ctx: expr) => {
862+
{
863+
let dumb_scalar = SecretKey::from_slice(&hex::decode("0101010101010101010101010101010101010101010101010101010101010101").unwrap()[..]).unwrap();
864+
let dumb_point = PublicKey::from_secret_key(&$secp_ctx, &dumb_scalar);
865+
PackageSolvingData::RevokedOutput(RevokedOutput::build(dumb_point, dumb_point, dumb_point, dumb_scalar, 0, 0))
866+
}
867+
}
868+
}
869+
870+
macro_rules! dumb_counterparty_output {
871+
($secp_ctx: expr) => {
872+
{
873+
let dumb_scalar = SecretKey::from_slice(&hex::decode("0101010101010101010101010101010101010101010101010101010101010101").unwrap()[..]).unwrap();
874+
let dumb_point = PublicKey::from_secret_key(&$secp_ctx, &dumb_scalar);
875+
let hash = PaymentHash([1; 32]);
876+
let htlc = HTLCOutputInCommitment { offered: true, amount_msat: 0, cltv_expiry: 0, payment_hash: hash, transaction_output_index: None };
877+
PackageSolvingData::CounterpartyReceivedHTLCOutput(CounterpartyReceivedHTLCOutput::build(dumb_point, dumb_point, dumb_point, htlc))
878+
}
879+
}
880+
}
881+
882+
#[test]
883+
#[should_panic]
884+
fn test_package_differing_heights() {
885+
let txid = Txid::from_hex("c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e").unwrap();
886+
let secp_ctx = Secp256k1::new();
887+
let revk_outp = dumb_revk_output!(secp_ctx);
888+
889+
let mut package_one_hundred = PackageTemplate::build_package(txid, 0, revk_outp.clone(), 1000, true, 100);
890+
let package_two_hundred = PackageTemplate::build_package(txid, 1, revk_outp.clone(), 1000, true, 200);
891+
package_one_hundred.merge_package(package_two_hundred);
892+
}
893+
894+
#[test]
895+
//TODO: fix
896+
fn test_package_untractable_merge_to() {
897+
let txid = Txid::from_hex("c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e").unwrap();
898+
let secp_ctx = Secp256k1::new();
899+
let revk_outp = dumb_revk_output!(secp_ctx);
900+
901+
let mut untractable_package = PackageTemplate::build_package(txid, 0, revk_outp.clone(), 1000, true, 100);
902+
let malleable_package = PackageTemplate::build_package(txid, 1, revk_outp.clone(), 1000, true, 100);
903+
untractable_package.merge_package(malleable_package);
904+
}
905+
906+
#[test]
907+
//TODO: fix
908+
fn test_package_untractable_merge_from() {
909+
let txid = Txid::from_hex("c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e").unwrap();
910+
let secp_ctx = Secp256k1::new();
911+
let revk_outp = dumb_revk_output!(secp_ctx);
912+
913+
let mut malleable_package = PackageTemplate::build_package(txid, 0, revk_outp.clone(), 1000, true, 100);
914+
let untractable_package = PackageTemplate::build_package(txid, 1, revk_outp.clone(), 1000, true, 100);
915+
malleable_package.merge_package(untractable_package);
916+
}
917+
918+
#[test]
919+
#[should_panic]
920+
fn test_package_noaggregation_to() {
921+
let txid = Txid::from_hex("c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e").unwrap();
922+
let secp_ctx = Secp256k1::new();
923+
let revk_outp = dumb_revk_output!(secp_ctx);
924+
925+
let mut noaggregation_package = PackageTemplate::build_package(txid, 0, revk_outp.clone(), 1000, false, 100);
926+
let aggregation_package = PackageTemplate::build_package(txid, 1, revk_outp.clone(), 1000, true, 100);
927+
noaggregation_package.merge_package(aggregation_package);
928+
}
929+
930+
#[test]
931+
#[should_panic]
932+
fn test_package_noaggregation_from() {
933+
let txid = Txid::from_hex("c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e").unwrap();
934+
let secp_ctx = Secp256k1::new();
935+
let revk_outp = dumb_revk_output!(secp_ctx);
936+
937+
let mut aggregation_package = PackageTemplate::build_package(txid, 0, revk_outp.clone(), 1000, true, 100);
938+
let noaggregation_package = PackageTemplate::build_package(txid, 1, revk_outp.clone(), 1000, false, 100);
939+
aggregation_package.merge_package(noaggregation_package);
940+
}
941+
942+
#[test]
943+
#[should_panic]
944+
fn test_package_empty() {
945+
let txid = Txid::from_hex("c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e").unwrap();
946+
let secp_ctx = Secp256k1::new();
947+
let revk_outp = dumb_revk_output!(secp_ctx);
948+
949+
let mut empty_package = PackageTemplate::build_package(txid, 0, revk_outp.clone(), 1000, true, 100);
950+
empty_package.inputs = vec![];
951+
let package = PackageTemplate::build_package(txid, 1, revk_outp.clone(), 1000, true, 100);
952+
empty_package.merge_package(package);
953+
}
954+
955+
#[test]
956+
#[should_panic]
957+
fn test_package_differing_categories() {
958+
let txid = Txid::from_hex("c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e").unwrap();
959+
let secp_ctx = Secp256k1::new();
960+
let revk_outp = dumb_revk_output!(secp_ctx);
961+
let counterparty_outp = dumb_counterparty_output!(secp_ctx);
962+
963+
let mut revoked_package = PackageTemplate::build_package(txid, 0, revk_outp, 1000, true, 100);
964+
let counterparty_package = PackageTemplate::build_package(txid, 1, counterparty_outp, 1000, true, 100);
965+
revoked_package.merge_package(counterparty_package);
966+
}
967+
968+
//TODO: split_package
969+
//TODO: package_amounts
970+
//TODO: package_weights
971+
//TODO: finalize_package
972+
}

0 commit comments

Comments
 (0)