@@ -119,3 +119,24 @@ fn too_big_packet_error() {
119119 let err = nodes[ 0 ] . messenger . send_onion_message ( & hops, Destination :: Node ( hop_node_id) ) . unwrap_err ( ) ;
120120 assert_eq ! ( err, SendError :: TooBigPacket ) ;
121121}
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