vls_persist/
util.rs

1use lightning_signer::channel::{ChannelId, ChannelSlot, ChannelStub};
2use lightning_signer::node::Node;
3
4pub fn do_with_channel_stub<F: Fn(&ChannelStub) -> ()>(node: &Node, channel_id: &ChannelId, f: F) {
5    let guard = node.get_channels();
6    let slot = guard.get(&channel_id).unwrap().lock().unwrap();
7    match &*slot {
8        ChannelSlot::Stub(s) => f(&s),
9        ChannelSlot::Ready(_) => panic!("expected channel stub"),
10    }
11}
12
13#[cfg(test)]
14mod tests {
15    use lightning_signer::bitcoin::secp256k1::{self, Secp256k1, SecretKey};
16    use lightning_signer::bitcoin::PublicKey;
17    use serde_json::json;
18
19    fn make_key() -> PublicKey {
20        let secp = Secp256k1::new();
21        let secret = SecretKey::from_slice(&[1; 32]).unwrap();
22        let sec_key = secp256k1::PublicKey::from_secret_key(&secp, &secret);
23        PublicKey::from_slice(&sec_key.serialize()).unwrap()
24    }
25
26    #[test]
27    fn public_key_json_test() {
28        let key = make_key();
29        let key_json = json!(&key);
30        assert_eq!(
31            key_json,
32            json!("031b84c5567b126440995d3ed5aaba0565d71e1834604819ff9c17f5e9d5dd078f")
33        );
34    }
35
36    #[test]
37    fn public_key_cbor_test() {
38        let mut buf = Vec::new();
39        let key = make_key();
40        ciborium::ser::into_writer(&key, &mut buf).unwrap();
41        let key_str = hex::encode(buf);
42        assert_eq!(
43            key_str,
44            "5821031b84c5567b126440995d3ed5aaba0565d71e1834604819ff9c17f5e9d5dd078f"
45        );
46    }
47}