@@ -226,7 +226,9 @@ fn service(config: api::Config) -> IntoMakeServiceWithConnectInfo<Router, Socket
226226
227227#[ cfg( test) ]
228228mod tests {
229+ use alloy:: primitives:: { Bytes , B256 , U64 } ;
229230 use axum_test:: TestServer ;
231+ use serde_json:: json;
230232
231233 use super :: * ;
232234 use crate :: pg;
@@ -238,4 +240,37 @@ mod tests {
238240 let server = TestServer :: new ( service ( config) ) . unwrap ( ) ;
239241 server. get ( "/" ) . await . assert_text_contains ( "hello" ) ;
240242 }
243+
244+ #[ tokio:: test]
245+ async fn test_query_post_with_params ( ) {
246+ let ( _pg_server, pool) = pg:: test_utils:: test_pg ( ) . await ;
247+ let pg = pool. get ( ) . await . expect ( "unable to get pg from pool" ) ;
248+ pg:: test_utils:: insert (
249+ & pg,
250+ vec ! [ pg:: test_utils:: Log {
251+ chain: U64 :: from( 1 ) ,
252+ block_num: U64 :: from( 1 ) ,
253+ topics: vec![ B256 :: with_last_byte( 0x42 ) ] ,
254+ data: Bytes :: from_static( & [ 0x42 ] ) ,
255+ } ] ,
256+ )
257+ . await ;
258+ let config = api:: Config :: new ( pool, None ) ;
259+ let server = TestServer :: new ( service ( config) ) . unwrap ( ) ;
260+ let request = vec ! [ api_sql:: Request {
261+ block_height: None ,
262+ event_signatures: vec![ ] ,
263+ query: String :: from( "select block_num from logs" ) ,
264+ } ] ;
265+ server
266+ . post ( "/query" )
267+ . add_query_param ( "api-key" , "face" )
268+ . add_query_param ( "chain" , "1" )
269+ . json ( & request)
270+ . await
271+ . assert_json ( & json ! ( {
272+ "block_height" : 1 ,
273+ "result" : [ [ [ "block_num" ] , [ 1 ] ] ]
274+ } ) ) ;
275+ }
241276}
0 commit comments