From d87cb5c537afcb2a5d9489c0642722377605962c Mon Sep 17 00:00:00 2001 From: gengteng Date: Thu, 28 Sep 2023 22:33:47 +0800 Subject: [PATCH] add validate_again_ex --- src/test.rs | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/test.rs b/src/test.rs index fb41984..9213f92 100644 --- a/src/test.rs +++ b/src/test.rs @@ -521,10 +521,7 @@ async fn extract_query(Valid(Query(parameters)): Valid>) -> St async fn extract_query_ex( ValidEx(Query(parameters), args): ValidEx, ParametersExValidationArguments>, ) -> StatusCode { - match parameters.validate_args(args.get()) { - Ok(_) => StatusCode::OK, - Err(_) => StatusCode::INTERNAL_SERVER_ERROR, - } + validate_again_ex(parameters, args.get()) } async fn extract_form(Valid(Form(parameters)): Valid>) -> StatusCode { @@ -538,10 +535,7 @@ async fn extract_json(Valid(Json(parameters)): Valid>) -> Statu async fn extract_json_ex( ValidEx(Json(parameters), args): ValidEx, ParametersExValidationArguments>, ) -> StatusCode { - match parameters.validate_args(args.get()) { - Ok(_) => StatusCode::OK, - Err(_) => StatusCode::INTERNAL_SERVER_ERROR, - } + validate_again_ex(parameters, args.get()) } fn validate_again(validate: V) -> StatusCode { @@ -555,6 +549,20 @@ fn validate_again(validate: V) -> StatusCode { } } +fn validate_again_ex<'v, V: ValidateArgs<'v>>( + validate: V, + args: >::Args, +) -> StatusCode { + // The `Valid` extractor has validated the `parameters` once, + // it should have returned `400 BAD REQUEST` if the `parameters` were invalid, + // Let's validate them again to check if the `Valid` extractor works well. + // If it works properly, this function will never return `500 INTERNAL SERVER ERROR` + match validate.validate_args(args) { + Ok(_) => StatusCode::OK, + Err(_) => StatusCode::INTERNAL_SERVER_ERROR, + } +} + #[cfg(feature = "typed_header")] mod typed_header {