build(deps): update axum requirement from 0.6.x to 0.7.x

This commit is contained in:
gengteng
2023-11-28 16:38:58 +08:00
parent 27d42b35e4
commit e8888c75e9
23 changed files with 289 additions and 927 deletions

View File

@@ -4,14 +4,14 @@
#![cfg(feature = "validator")]
use axum::extract::FromRequestParts;
use axum::http::request::Parts;
use axum::http::{request::Parts, StatusCode};
use axum::response::{IntoResponse, Response};
use axum::routing::get;
use axum::Router;
use axum_valid::{HasValidate, Valid, VALIDATION_ERROR_STATUS};
use hyper::StatusCode;
use serde::{Deserialize, Serialize};
use std::net::SocketAddr;
use tokio::net::TcpListener;
use validator::Validate;
const MY_DATA_HEADER: &str = "My-Data";
@@ -75,16 +75,15 @@ impl HasValidate for MyData {
async fn main() -> anyhow::Result<()> {
let router = Router::new().route("/", get(handler));
let server = axum::Server::bind(&SocketAddr::from(([0u8, 0, 0, 0], 0u16)))
.serve(router.into_make_service());
let server_addr = server.local_addr();
let listener = TcpListener::bind(&SocketAddr::from(([0u8, 0, 0, 0], 0u16))).await?;
let server_addr = listener.local_addr()?;
let server = axum::serve(listener, router.into_make_service());
println!("Axum server address: {}.", server_addr);
let (server_guard, close) = tokio::sync::oneshot::channel::<()>();
let server_handle = tokio::spawn(server.with_graceful_shutdown(async move {
let _ = close.await;
}));
// let (server_guard, close) = tokio::sync::oneshot::channel::<()>();
tokio::spawn(async move {
let _ = server.await;
});
let client = reqwest::Client::default();
let url = format!("http://{}/", server_addr);
@@ -97,7 +96,10 @@ async fn main() -> anyhow::Result<()> {
.header(MY_DATA_HEADER, serde_json::to_string(&valid_my_data)?)
.send()
.await?;
assert_eq!(valid_my_data_response.status(), StatusCode::OK);
assert_eq!(
valid_my_data_response.status().as_u16(),
StatusCode::OK.as_u16()
);
let invalid_json = String::from("{{}");
let valid_my_data_response = client
@@ -105,7 +107,10 @@ async fn main() -> anyhow::Result<()> {
.header(MY_DATA_HEADER, invalid_json)
.send()
.await?;
assert_eq!(valid_my_data_response.status(), StatusCode::BAD_REQUEST);
assert_eq!(
valid_my_data_response.status().as_u16(),
StatusCode::BAD_REQUEST.as_u16()
);
let invalid_my_data = MyData {
content: String::new(),
@@ -115,13 +120,16 @@ async fn main() -> anyhow::Result<()> {
.header(MY_DATA_HEADER, serde_json::to_string(&invalid_my_data)?)
.send()
.await?;
assert_eq!(invalid_my_data_response.status(), VALIDATION_ERROR_STATUS);
assert_eq!(
invalid_my_data_response.status().as_u16(),
VALIDATION_ERROR_STATUS.as_u16()
);
// #[cfg(feature = "into_json")]
// test::check_json(invalid_my_data_response).await;
println!("Valid<MyData> works.");
drop(server_guard);
server_handle.await??;
// drop(server_guard);
// server_handle.await??;
Ok(())
}