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}