@@ -119,3 +119,24 @@ fn too_big_packet_error() {
119
119
let err = nodes[ 0 ] . messenger . send_onion_message ( & hops, Destination :: Node ( hop_node_id) ) . unwrap_err ( ) ;
120
120
assert_eq ! ( err, SendError :: TooBigPacket ) ;
121
121
}
122
+
123
+ #[ test]
124
+ fn invalid_blinded_route_error ( ) {
125
+ // Make sure we error as expected if a provided blinded route has 0 or 1 hops.
126
+ let mut nodes = create_nodes ( 3 ) ;
127
+ let ( node1, node2, node3) = ( nodes. remove ( 0 ) , nodes. remove ( 0 ) , nodes. remove ( 0 ) ) ;
128
+
129
+ // 0 hops
130
+ let secp_ctx = Secp256k1 :: new ( ) ;
131
+ let mut blinded_route = BlindedRoute :: new :: < EnforcingSigner , _ , _ > ( & [ node2. get_node_pk ( ) , node3. get_node_pk ( ) ] , & * node3. keys_manager , & secp_ctx) . unwrap ( ) ;
132
+ blinded_route. blinded_hops . clear ( ) ;
133
+ let err = node1. messenger . send_onion_message ( & [ ] , Destination :: BlindedRoute ( blinded_route) ) . unwrap_err ( ) ;
134
+ assert_eq ! ( err, SendError :: TooFewBlindedHops ) ;
135
+
136
+ // 1 hop
137
+ let mut blinded_route = BlindedRoute :: new :: < EnforcingSigner , _ , _ > ( & [ node2. get_node_pk ( ) , node3. get_node_pk ( ) ] , & * node3. keys_manager , & secp_ctx) . unwrap ( ) ;
138
+ blinded_route. blinded_hops . remove ( 0 ) ;
139
+ assert_eq ! ( blinded_route. blinded_hops. len( ) , 1 ) ;
140
+ let err = node1. messenger . send_onion_message ( & [ ] , Destination :: BlindedRoute ( blinded_route) ) . unwrap_err ( ) ;
141
+ assert_eq ! ( err, SendError :: TooFewBlindedHops ) ;
142
+ }
0 commit comments