|
12 | 12 | use chain::keysinterface::{KeysInterface, Recipient};
|
13 | 13 | use ln::features::InitFeatures;
|
14 | 14 | use ln::msgs::{self, OnionMessageHandler};
|
15 |
| -use super::{BlindedRoute, Destination, OnionMessenger, SendError}; |
| 15 | +use super::{BlindedRoute, Destination, OnionMessenger, SendError, Tlv}; |
16 | 16 | use util::enforcing_trait_impls::EnforcingSigner;
|
17 | 17 | use util::test_utils;
|
18 | 18 |
|
@@ -80,103 +80,111 @@ fn pass_along_path(path: &Vec<MessengerNode>, expected_path_id: Option<[u8; 32]>
|
80 | 80 | #[test]
|
81 | 81 | fn one_hop() {
|
82 | 82 | let nodes = create_nodes(2);
|
| 83 | + let test_tlv = Tlv { tag: 4242, value: vec![42; 32] }; |
83 | 84 |
|
84 |
| - nodes[0].messenger.send_onion_message(&[], Destination::Node(nodes[1].get_node_pk()), None).unwrap(); |
| 85 | + nodes[0].messenger.send_onion_message(&[], Destination::Node(nodes[1].get_node_pk()), test_tlv, None).unwrap(); |
85 | 86 | pass_along_path(&nodes, None);
|
86 | 87 | }
|
87 | 88 |
|
88 | 89 | #[test]
|
89 | 90 | fn two_unblinded_hops() {
|
90 | 91 | let nodes = create_nodes(3);
|
| 92 | + let test_tlv = Tlv { tag: 4242, value: vec![42; 32] }; |
91 | 93 |
|
92 |
| - nodes[0].messenger.send_onion_message(&[nodes[1].get_node_pk()], Destination::Node(nodes[2].get_node_pk()), None).unwrap(); |
| 94 | + nodes[0].messenger.send_onion_message(&[nodes[1].get_node_pk()], Destination::Node(nodes[2].get_node_pk()), test_tlv, None).unwrap(); |
93 | 95 | pass_along_path(&nodes, None);
|
94 | 96 | }
|
95 | 97 |
|
96 | 98 | #[test]
|
97 | 99 | fn two_unblinded_two_blinded() {
|
98 | 100 | let nodes = create_nodes(5);
|
| 101 | + let test_tlv = Tlv { tag: 4242, value: vec![42; 32] }; |
99 | 102 |
|
100 | 103 | let secp_ctx = Secp256k1::new();
|
101 | 104 | let blinded_route = BlindedRoute::new(&[nodes[3].get_node_pk(), nodes[4].get_node_pk()], &*nodes[4].keys_manager, &secp_ctx).unwrap();
|
102 | 105 |
|
103 |
| - nodes[0].messenger.send_onion_message(&[nodes[1].get_node_pk(), nodes[2].get_node_pk()], Destination::BlindedRoute(blinded_route), None).unwrap(); |
| 106 | + nodes[0].messenger.send_onion_message(&[nodes[1].get_node_pk(), nodes[2].get_node_pk()], Destination::BlindedRoute(blinded_route), test_tlv, None).unwrap(); |
104 | 107 | pass_along_path(&nodes, None);
|
105 | 108 | }
|
106 | 109 |
|
107 | 110 | #[test]
|
108 | 111 | fn three_blinded_hops() {
|
109 | 112 | let nodes = create_nodes(4);
|
| 113 | + let test_tlv = Tlv { tag: 4242, value: vec![42; 32] }; |
110 | 114 |
|
111 | 115 | let secp_ctx = Secp256k1::new();
|
112 | 116 | let blinded_route = BlindedRoute::new(&[nodes[1].get_node_pk(), nodes[2].get_node_pk(), nodes[3].get_node_pk()], &*nodes[3].keys_manager, &secp_ctx).unwrap();
|
113 | 117 |
|
114 |
| - nodes[0].messenger.send_onion_message(&[], Destination::BlindedRoute(blinded_route), None).unwrap(); |
| 118 | + nodes[0].messenger.send_onion_message(&[], Destination::BlindedRoute(blinded_route), test_tlv, None).unwrap(); |
115 | 119 | pass_along_path(&nodes, None);
|
116 | 120 | }
|
117 | 121 |
|
118 | 122 | #[test]
|
119 | 123 | fn too_big_packet_error() {
|
120 | 124 | // Make sure we error as expected if a packet is too big to send.
|
121 | 125 | let nodes = create_nodes(2);
|
| 126 | + let test_tlv = Tlv { tag: 4242, value: vec![42; 32] }; |
122 | 127 |
|
123 | 128 | let hop_node_id = nodes[1].get_node_pk();
|
124 | 129 | let hops = [hop_node_id; 400];
|
125 |
| - let err = nodes[0].messenger.send_onion_message(&hops, Destination::Node(hop_node_id), None).unwrap_err(); |
| 130 | + let err = nodes[0].messenger.send_onion_message(&hops, Destination::Node(hop_node_id), test_tlv, None).unwrap_err(); |
126 | 131 | assert_eq!(err, SendError::TooBigPacket);
|
127 | 132 | }
|
128 | 133 |
|
129 | 134 | #[test]
|
130 | 135 | fn invalid_blinded_route_error() {
|
131 | 136 | // Make sure we error as expected if a provided blinded route has 0 or 1 hops.
|
132 | 137 | let nodes = create_nodes(3);
|
| 138 | + let test_tlv = Tlv { tag: 4242, value: vec![42; 32] }; |
133 | 139 |
|
134 | 140 | // 0 hops
|
135 | 141 | let secp_ctx = Secp256k1::new();
|
136 | 142 | let mut blinded_route = BlindedRoute::new(&[nodes[1].get_node_pk(), nodes[2].get_node_pk()], &*nodes[2].keys_manager, &secp_ctx).unwrap();
|
137 | 143 | blinded_route.blinded_hops.clear();
|
138 |
| - let err = nodes[0].messenger.send_onion_message(&[], Destination::BlindedRoute(blinded_route), None).unwrap_err(); |
| 144 | + let err = nodes[0].messenger.send_onion_message(&[], Destination::BlindedRoute(blinded_route), test_tlv.clone(), None).unwrap_err(); |
139 | 145 | assert_eq!(err, SendError::TooFewBlindedHops);
|
140 | 146 |
|
141 | 147 | // 1 hop
|
142 | 148 | let mut blinded_route = BlindedRoute::new(&[nodes[1].get_node_pk(), nodes[2].get_node_pk()], &*nodes[2].keys_manager, &secp_ctx).unwrap();
|
143 | 149 | blinded_route.blinded_hops.remove(0);
|
144 | 150 | assert_eq!(blinded_route.blinded_hops.len(), 1);
|
145 |
| - let err = nodes[0].messenger.send_onion_message(&[], Destination::BlindedRoute(blinded_route), None).unwrap_err(); |
| 151 | + let err = nodes[0].messenger.send_onion_message(&[], Destination::BlindedRoute(blinded_route), test_tlv, None).unwrap_err(); |
146 | 152 | assert_eq!(err, SendError::TooFewBlindedHops);
|
147 | 153 | }
|
148 | 154 |
|
149 | 155 | #[test]
|
150 | 156 | fn reply_path() {
|
151 | 157 | let nodes = create_nodes(4);
|
| 158 | + let test_tlv = Tlv { tag: 4242, value: vec![42; 32] }; |
152 | 159 | let secp_ctx = Secp256k1::new();
|
153 | 160 |
|
154 | 161 | // Destination::Node
|
155 | 162 | let reply_path = BlindedRoute::new(&[nodes[2].get_node_pk(), nodes[1].get_node_pk(), nodes[0].get_node_pk()], &*nodes[0].keys_manager, &secp_ctx).unwrap();
|
156 |
| - nodes[0].messenger.send_onion_message(&[nodes[1].get_node_pk(), nodes[2].get_node_pk()], Destination::Node(nodes[3].get_node_pk()), Some(reply_path)).unwrap(); |
| 163 | + nodes[0].messenger.send_onion_message(&[nodes[1].get_node_pk(), nodes[2].get_node_pk()], Destination::Node(nodes[3].get_node_pk()), test_tlv.clone(), Some(reply_path)).unwrap(); |
157 | 164 | pass_along_path(&nodes, None);
|
158 | 165 | // Make sure the last node successfully decoded the reply path.
|
159 | 166 | nodes[3].logger.assert_log_contains(
|
160 | 167 | "lightning::onion_message::messenger".to_string(),
|
161 |
| - format!("Received an onion message with path_id: None and reply_path").to_string(), 1); |
| 168 | + format!("Received an onion message with path_id None and a reply_path").to_string(), 1); |
162 | 169 |
|
163 | 170 | // Destination::BlindedRoute
|
164 | 171 | let blinded_route = BlindedRoute::new(&[nodes[1].get_node_pk(), nodes[2].get_node_pk(), nodes[3].get_node_pk()], &*nodes[3].keys_manager, &secp_ctx).unwrap();
|
165 | 172 | let reply_path = BlindedRoute::new(&[nodes[2].get_node_pk(), nodes[1].get_node_pk(), nodes[0].get_node_pk()], &*nodes[0].keys_manager, &secp_ctx).unwrap();
|
166 | 173 |
|
167 |
| - nodes[0].messenger.send_onion_message(&[], Destination::BlindedRoute(blinded_route), Some(reply_path)).unwrap(); |
| 174 | + nodes[0].messenger.send_onion_message(&[], Destination::BlindedRoute(blinded_route), test_tlv, Some(reply_path)).unwrap(); |
168 | 175 | pass_along_path(&nodes, None);
|
169 | 176 | nodes[3].logger.assert_log_contains(
|
170 | 177 | "lightning::onion_message::messenger".to_string(),
|
171 |
| - format!("Received an onion message with path_id: None and reply_path").to_string(), 2); |
| 178 | + format!("Received an onion message with path_id None and a reply_path").to_string(), 2); |
172 | 179 | }
|
173 | 180 |
|
174 | 181 | #[test]
|
175 | 182 | fn peer_buffer_full() {
|
176 | 183 | let nodes = create_nodes(2);
|
| 184 | + let test_tlv = Tlv { tag: 4242, value: vec![42; 32] }; |
177 | 185 | for _ in 0..188 { // Based on MAX_PER_PEER_BUFFER_SIZE in OnionMessenger
|
178 |
| - nodes[0].messenger.send_onion_message(&[], Destination::Node(nodes[1].get_node_pk()), None).unwrap(); |
| 186 | + nodes[0].messenger.send_onion_message(&[], Destination::Node(nodes[1].get_node_pk()), test_tlv.clone(), None).unwrap(); |
179 | 187 | }
|
180 |
| - let err = nodes[0].messenger.send_onion_message(&[], Destination::Node(nodes[1].get_node_pk()), None).unwrap_err(); |
| 188 | + let err = nodes[0].messenger.send_onion_message(&[], Destination::Node(nodes[1].get_node_pk()), test_tlv, None).unwrap_err(); |
181 | 189 | assert_eq!(err, SendError::BufferFull);
|
182 | 190 | }
|
0 commit comments