Simplify + clarify random-bytes-fetching from KeysInterface
[rust-lightning] / lightning / src / ln / functional_tests.rs
index d1ccdcc848fe9b14dec9f5447f38f07ad3036ac5..d21f558a65f5c365414171005167ea82ad55de84 100644 (file)
@@ -1,3 +1,12 @@
+// This file is Copyright its original authors, visible in version control
+// history.
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
 //! Tests that test standing up a network of ChannelManagers, creating channels, sending
 //! payments/messages between them, and often checking the resulting ChannelMonitors are able to
 //! claim outputs on-chain.
@@ -52,6 +61,7 @@ use std::sync::atomic::Ordering;
 use std::{mem, io};
 
 use ln::functional_test_utils::*;
+use ln::chan_utils::PreCalculatedTxCreationKeys;
 
 #[test]
 fn test_insane_channel_opens() {
@@ -1694,7 +1704,8 @@ fn test_fee_spike_violation_fails_htlc() {
                let local_chan_lock = nodes[0].node.channel_state.lock().unwrap();
                let local_chan = local_chan_lock.by_id.get(&chan.2).unwrap();
                let local_chan_keys = local_chan.get_local_keys();
-               local_chan_keys.sign_remote_commitment(feerate_per_kw, &commit_tx, &commit_tx_keys, &[&accepted_htlc_info], &secp_ctx).unwrap()
+               let pre_commit_tx_keys = PreCalculatedTxCreationKeys::new(commit_tx_keys);
+               local_chan_keys.sign_remote_commitment(feerate_per_kw, &commit_tx, &pre_commit_tx_keys, &[&accepted_htlc_info], &secp_ctx).unwrap()
        };
 
        let commit_signed_msg = msgs::CommitmentSigned {
@@ -1882,6 +1893,25 @@ fn test_chan_reserve_violation_inbound_htlc_inbound_chan() {
        check_added_monitors!(nodes[1], 1);
 }
 
+#[test]
+fn test_inbound_outbound_capacity_is_not_zero() {
+       let chanmon_cfgs = create_chanmon_cfgs(2);
+       let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
+       let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
+       let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
+       let _ = create_announced_chan_between_nodes_with_value(&nodes, 0, 1, 100000, 95000000, InitFeatures::known(), InitFeatures::known());
+       let channels0 = node_chanmgrs[0].list_channels();
+       let channels1 = node_chanmgrs[1].list_channels();
+       assert_eq!(channels0.len(), 1);
+       assert_eq!(channels1.len(), 1);
+
+       assert_eq!(channels0[0].inbound_capacity_msat, 95000000);
+       assert_eq!(channels1[0].outbound_capacity_msat, 95000000);
+
+       assert_eq!(channels0[0].outbound_capacity_msat, 100000 * 1000 - 95000000);
+       assert_eq!(channels1[0].inbound_capacity_msat, 100000 * 1000 - 95000000);
+}
+
 fn commit_tx_fee_msat(feerate: u32, num_htlcs: u64) -> u64 {
        (COMMITMENT_TX_BASE_WEIGHT + num_htlcs * COMMITMENT_TX_WEIGHT_PER_HTLC) * feerate as u64 / 1000 * 1000
 }
@@ -6096,7 +6126,7 @@ fn test_onion_failure() {
        let node_chanmgrs = create_node_chanmgrs(3, &node_cfgs, &[None, None, None]);
        let mut nodes = create_network(3, &node_cfgs, &node_chanmgrs);
        for node in nodes.iter() {
-               *node.keys_manager.override_session_priv.lock().unwrap() = Some(SecretKey::from_slice(&[3; 32]).unwrap());
+               *node.keys_manager.override_session_priv.lock().unwrap() = Some([3; 32]);
        }
        let channels = [create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known()), create_announced_chan_between_nodes(&nodes, 1, 2, InitFeatures::known(), InitFeatures::known())];
        let (_, payment_hash) = get_payment_preimage_hash!(nodes[0]);