fix: incorrect json response content type

This commit is contained in:
gengteng
2023-08-01 22:11:44 +08:00
parent 9336fa2ad9
commit a48a2a640c
5 changed files with 27 additions and 35 deletions

View File

@@ -15,6 +15,8 @@ use serde_json::json;
use std::net::SocketAddr;
use validator::Validate;
mod utils;
mod route {
pub const PATH: &str = "/path/:v0/:v1";
pub const QUERY: &str = "/query";
@@ -78,10 +80,7 @@ async fn main() -> anyhow::Result<()> {
.await?;
assert_eq!(invalid_path_response.status(), VALIDATION_ERROR_STATUS);
#[cfg(feature = "into_json")]
assert!(invalid_path_response
.json::<serde_json::Value>()
.await
.is_ok());
utils::check_json(invalid_path_response).await;
println!("Valid<Path<...>> works.");
// Valid<Query<...>>
@@ -107,10 +106,7 @@ async fn main() -> anyhow::Result<()> {
.await?;
assert_eq!(invalid_query_response.status(), VALIDATION_ERROR_STATUS);
#[cfg(feature = "into_json")]
assert!(invalid_query_response
.json::<serde_json::Value>()
.await
.is_ok());
utils::check_json(invalid_query_response).await;
println!("Valid<Query<...>> works.");
// Valid<Form<...>>
@@ -139,10 +135,7 @@ async fn main() -> anyhow::Result<()> {
.await?;
assert_eq!(invalid_form_response.status(), VALIDATION_ERROR_STATUS);
#[cfg(feature = "into_json")]
assert!(invalid_form_response
.json::<serde_json::Value>()
.await
.is_ok());
utils::check_json(invalid_form_response).await;
println!("Valid<Form<...>> works.");
// Valid<Json<...>>
@@ -171,10 +164,7 @@ async fn main() -> anyhow::Result<()> {
.await?;
assert_eq!(invalid_json_response.status(), VALIDATION_ERROR_STATUS);
#[cfg(feature = "into_json")]
assert!(invalid_json_response
.json::<serde_json::Value>()
.await
.is_ok());
utils::check_json(invalid_json_response).await;
println!("Valid<Json<...>> works.");
drop(server_guard);

View File

@@ -12,6 +12,8 @@ use serde::{Deserialize, Serialize};
use std::net::SocketAddr;
use validator::Validate;
mod utils;
const MY_DATA_HEADER: &str = "My-Data";
// 1. Implement your own extractor.
@@ -124,10 +126,7 @@ async fn main() -> anyhow::Result<()> {
.await?;
assert_eq!(invalid_my_data_response.status(), VALIDATION_ERROR_STATUS);
#[cfg(feature = "into_json")]
assert!(invalid_my_data_response
.json::<serde_json::Value>()
.await
.is_ok());
utils::check_json(invalid_my_data_response).await;
println!("Valid<MyData> works.");
drop(server_guard);

9
tests/utils.rs Normal file
View File

@@ -0,0 +1,9 @@
/// Check if the response is a json response
#[cfg(feature = "into_json")]
pub async fn check_json(response: reqwest::Response) {
assert_eq!(
response.headers()[axum::http::header::CONTENT_TYPE],
axum::http::HeaderValue::from_static(mime::APPLICATION_JSON.as_ref())
);
assert!(response.json::<serde_json::Value>().await.is_ok());
}