@@ -126,3 +126,74 @@ mod actix_test {
126126 // ...
127127 }
128128}
129+
130+ mod axum_test {
131+ use axum:: Router ;
132+ use axum:: routing:: get;
133+ use axum:: extract:: { Path , Query , Request , Json } ;
134+ use std:: collections:: HashMap ;
135+ use crate :: web_frameworks:: sink;
136+
137+ async fn my_axum_handler_1 ( Path ( a) : Path < String > ) -> & ' static str { // $ MISSING: Alert[rust/summary/taint-sources]
138+ sink ( a. as_str ( ) ) ; // $ MISSING: hasTaintFlow
139+ sink ( a. as_bytes ( ) ) ; // $ MISSING: hasTaintFlow
140+ sink ( a) ; // $ MISSING: hasTaintFlow
141+
142+ ""
143+ }
144+
145+ async fn my_axum_handler_2 ( Path ( ( a, b) ) : Path < ( String , String ) > ) -> & ' static str { // $ MISSING: Alert[rust/summary/taint-sources]
146+ sink ( a) ; // $ MISSING: hasTaintFlow
147+ sink ( b) ; // $ MISSING: hasTaintFlow
148+
149+ ""
150+ }
151+
152+ async fn my_axum_handler_3 ( Query ( params) : Query < HashMap < String , String > > ) -> & ' static str { // $ MISSING: Alert[rust/summary/taint-sources]
153+ for ( key, value) in params {
154+ sink ( key) ; // $ MISSING: hasTaintFlow
155+ sink ( value) ; // $ MISSING: hasTaintFlow
156+ }
157+
158+ ""
159+ }
160+
161+ async fn my_axum_handler_4 ( request : Request ) -> & ' static str { // $ MISSING: Alert[rust/summary/taint-sources]
162+ sink ( request. body ( ) ) ; // $ MISSING: hasTaintFlow
163+ request. headers ( ) . get ( "header" ) . unwrap ( ) ; // $ MISSING: hasTaintFlow
164+ sink ( request. into_body ( ) ) ; // $ MISSING: hasTaintFlow
165+
166+ ""
167+ }
168+
169+ async fn my_axum_handler_5 ( Json ( payload) : Json < serde_json:: Value > ) -> & ' static str { // $ MISSING: Alert[rust/summary/taint-sources]
170+ sink ( payload. as_str ( ) ) ; // $ MISSING: hasTaintFlow
171+ sink ( payload) ; // $ MISSING: hasTaintFlow
172+
173+ ""
174+ }
175+
176+ async fn my_axum_handler_6 ( body : String ) -> & ' static str { // $ MISSING: Alert[rust/summary/taint-sources]
177+ sink ( body) ; // $ MISSING: hasTaintFlow
178+
179+ ""
180+ }
181+
182+ async fn my_axum_handler_7 ( body : String ) -> & ' static str { // $ MISSING: Alert[rust/summary/taint-sources]
183+ sink ( body) ; // $ MISSING: hasTaintFlow
184+
185+ ""
186+ }
187+
188+ async fn test_axum ( ) {
189+ let app = Router :: < ( ) > :: new ( )
190+ . route ( "/foo/{a}" , get ( my_axum_handler_1) )
191+ . route ( "/bar/{a}/{b}" , get ( my_axum_handler_2) )
192+ . route ( "/1/:a" , get ( my_axum_handler_3) )
193+ . route ( "/2/:a" , get ( my_axum_handler_4) )
194+ . route ( "/3/:a" , get ( my_axum_handler_5) )
195+ . route ( "/4/:a" , get ( my_axum_handler_6) . get ( my_axum_handler_7) ) ;
196+
197+ // ...
198+ }
199+ }
0 commit comments