add tests for validify extractors

This commit is contained in:
gengteng
2023-10-20 20:42:45 +08:00
parent 5b5c51cc75
commit fdf41b0089

View File

@@ -107,10 +107,19 @@ async fn test_main() -> anyhow::Result<()> {
); );
#[cfg(feature = "typed_header")] #[cfg(feature = "typed_header")]
let router = router.route( let router = router
typed_header::route::TYPED_HEADER, .route(
post(typed_header::extract_typed_header), typed_header::route::TYPED_HEADER,
); post(typed_header::extract_typed_header),
)
.route(
typed_header::route::TYPED_HEADER_MODIFIED,
post(typed_header::extract_typed_header_modified),
)
.route(
typed_header::route::TYPED_HEADER_VALIDIFIED_BY_REF,
post(typed_header::extract_typed_header_validified_by_ref),
);
#[cfg(feature = "typed_multipart")] #[cfg(feature = "typed_multipart")]
let router = router let router = router
@@ -334,26 +343,64 @@ async fn test_main() -> anyhow::Result<()> {
.execute_validified::<Query<ParametersValidify>>(Method::GET, route::QUERY_VALIDIFIED) .execute_validified::<Query<ParametersValidify>>(Method::GET, route::QUERY_VALIDIFIED)
.await?; .await?;
// Validified // Validated
test_executor test_executor
.execute::<Form<ParametersValidify>>(Method::POST, route::FORM) .execute::<Form<ParametersValidify>>(Method::POST, route::FORM)
.await?; .await?;
// Modified
test_executor
.execute_modified::<Form<ParametersValidify>>(Method::POST, route::FORM_MODIFIED)
.await?;
// ValidifiedByRef
test_executor
.execute::<Form<ParametersValidify>>(Method::POST, route::FORM_VALIDIFIED_BY_REF)
.await?;
// Validified // Validified
test_executor
.execute_validified::<Form<ParametersValidify>>(Method::POST, route::FORM_VALIDIFIED)
.await?;
// Validated
test_executor test_executor
.execute::<Json<ParametersValidify>>(Method::POST, route::JSON) .execute::<Json<ParametersValidify>>(Method::POST, route::JSON)
.await?; .await?;
// Modified
test_executor
.execute_modified::<Json<ParametersValidify>>(Method::POST, route::JSON_MODIFIED)
.await?;
// ValidifiedByRef
test_executor
.execute::<Json<ParametersValidify>>(Method::POST, route::JSON_VALIDIFIED_BY_REF)
.await?;
// Validified
test_executor
.execute_validified::<Json<ParametersValidify>>(Method::POST, route::JSON_VALIDIFIED)
.await?;
#[cfg(feature = "typed_header")] #[cfg(feature = "typed_header")]
{ {
use axum::TypedHeader; use axum::TypedHeader;
// Validified // Validated
test_executor test_executor
.execute::<TypedHeader<ParametersValidify>>( .execute::<TypedHeader<ParametersValidify>>(
Method::POST, Method::POST,
typed_header::route::TYPED_HEADER, typed_header::route::TYPED_HEADER,
) )
.await?; .await?;
// Modified
test_executor
.execute_modified::<TypedHeader<ParametersValidify>>(
Method::POST,
typed_header::route::TYPED_HEADER_MODIFIED,
)
.await?;
// ValidifiedByRef
test_executor
.execute::<TypedHeader<ParametersValidify>>(
Method::POST,
typed_header::route::TYPED_HEADER_VALIDIFIED_BY_REF,
)
.await?;
} }
#[cfg(feature = "typed_multipart")] #[cfg(feature = "typed_multipart")]
@@ -860,10 +907,12 @@ mod typed_header {
pub(crate) mod route { pub(crate) mod route {
pub const TYPED_HEADER: &str = "/typed_header"; pub const TYPED_HEADER: &str = "/typed_header";
pub const TYPED_HEADER_MODIFIED: &str = "/typed_header_modified";
pub const TYPED_HEADER_VALIDIFIED_BY_REF: &str = "/typed_header_validified_be_ref";
} }
use super::{check_validated, ParametersValidify}; use super::{check_modified, check_validated, check_validified, ParametersValidify};
use crate::Validated; use crate::{Modified, Validated, ValidifiedByRef};
use axum::headers::{Error, Header, HeaderName, HeaderValue}; use axum::headers::{Error, Header, HeaderName, HeaderValue};
use axum::http::StatusCode; use axum::http::StatusCode;
use axum::TypedHeader; use axum::TypedHeader;
@@ -876,6 +925,18 @@ mod typed_header {
check_validated(&parameters) check_validated(&parameters)
} }
pub(super) async fn extract_typed_header_modified(
Modified(TypedHeader(parameters)): Modified<TypedHeader<ParametersValidify>>,
) -> StatusCode {
check_modified(&parameters)
}
pub(super) async fn extract_typed_header_validified_by_ref(
ValidifiedByRef(TypedHeader(parameters)): ValidifiedByRef<TypedHeader<ParametersValidify>>,
) -> StatusCode {
check_validified(&parameters)
}
impl Header for ParametersValidify { impl Header for ParametersValidify {
fn name() -> &'static HeaderName { fn name() -> &'static HeaderName {
&AXUM_VALID_PARAMETERS &AXUM_VALID_PARAMETERS