summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/test_actix.rs30
-rw-r--r--tests/test_axum.rs42
-rw-r--r--tests/test_deserialize.rs2
-rw-r--r--tests/test_warp.rs6
4 files changed, 71 insertions, 9 deletions
diff --git a/tests/test_actix.rs b/tests/test_actix.rs
index 792afb2..dcc5980 100644
--- a/tests/test_actix.rs
+++ b/tests/test_actix.rs
@@ -16,7 +16,7 @@ use actix_web::error::InternalError;
use actix_web::http::StatusCode;
use actix_web::test::TestRequest;
use actix_web::{FromRequest, HttpResponse};
-use qs::actix::{QsQuery, QsQueryConfig};
+use qs::actix::{QsForm, QsQuery, QsQueryConfig};
use qs::Config as QsConfig;
use serde::de::Error;
@@ -26,7 +26,7 @@ where
S: std::str::FromStr,
{
let s = <&str as serde::Deserialize>::deserialize(deserializer)?;
- S::from_str(&s).map_err(|_| D::Error::custom("could not parse string"))
+ S::from_str(s).map_err(|_| D::Error::custom("could not parse string"))
}
#[derive(Deserialize, Serialize, Debug, PartialEq)]
@@ -103,7 +103,7 @@ fn test_composite_querystring_extractor() {
assert_eq!(s.bars, vec![0, 1]);
assert_eq!(s.common.limit, 100);
assert_eq!(s.common.offset, 50);
- assert_eq!(s.common.remaining, true);
+ assert!(s.common.remaining);
})
}
@@ -140,6 +140,28 @@ fn test_custom_qs_config() {
assert_eq!(s.bars, vec![3]);
assert_eq!(s.common.limit, 100);
assert_eq!(s.common.offset, 50);
- assert_eq!(s.common.remaining, true);
+ assert!(s.common.remaining);
+ })
+}
+
+#[test]
+fn test_form_extractor() {
+ futures::executor::block_on(async {
+ let test_data = Query {
+ foo: 1,
+ bars: vec![0, 1],
+ common: CommonParams {
+ limit: 100,
+ offset: 50,
+ remaining: true,
+ },
+ };
+ let req = TestRequest::with_uri("/test")
+ .set_payload(serde_qs::to_string(&test_data).unwrap())
+ .to_srv_request();
+ let (req, mut pl) = req.into_parts();
+
+ let s = QsForm::<Query>::from_request(&req, &mut pl).await.unwrap();
+ assert_eq!(s.into_inner(), test_data);
})
}
diff --git a/tests/test_axum.rs b/tests/test_axum.rs
index 16449b9..dd86a9e 100644
--- a/tests/test_axum.rs
+++ b/tests/test_axum.rs
@@ -8,7 +8,7 @@ extern crate axum_framework as axum;
extern crate serde_qs as qs;
use axum::{extract::FromRequestParts, http::StatusCode, response::IntoResponse};
-use qs::axum::{QsQuery, QsQueryConfig, QsQueryRejection};
+use qs::axum::{OptionalQsQuery, QsQuery, QsQueryConfig, QsQueryRejection};
use serde::de::Error;
fn from_str<'de, D, S>(deserializer: D) -> Result<S, D::Error>
@@ -132,3 +132,43 @@ fn test_custom_qs_config() {
assert!(s.common.remaining);
})
}
+
+#[test]
+fn test_optional_query_none() {
+ futures::executor::block_on(async {
+ let req = axum::http::Request::builder()
+ .uri("/test")
+ .body(())
+ .unwrap();
+ let (mut req_parts, _) = req.into_parts();
+
+ let OptionalQsQuery(s) = OptionalQsQuery::<Query>::from_request_parts(&mut req_parts, &())
+ .await
+ .unwrap();
+
+ assert!(s.is_none());
+ })
+}
+
+#[test]
+fn test_optional_query_some() {
+ futures::executor::block_on(async {
+ let req = axum::http::Request::builder()
+ .uri("/test?foo=1&bars%5B%5D=3&limit=100&offset=50&remaining=true")
+ .extension(QsQueryConfig::new(5, false))
+ .body(())
+ .unwrap();
+
+ let (mut req_parts, _) = req.into_parts();
+ let OptionalQsQuery(s) = OptionalQsQuery::<Query>::from_request_parts(&mut req_parts, &())
+ .await
+ .unwrap();
+
+ let query = s.unwrap();
+ assert_eq!(query.foo, 1);
+ assert_eq!(query.bars, vec![3]);
+ assert_eq!(query.common.limit, 100);
+ assert_eq!(query.common.offset, 50);
+ assert!(query.common.remaining);
+ })
+}
diff --git a/tests/test_deserialize.rs b/tests/test_deserialize.rs
index 12c4a8c..2e79ef0 100644
--- a/tests/test_deserialize.rs
+++ b/tests/test_deserialize.rs
@@ -81,7 +81,7 @@ fn deserialize_struct() {
user_ids: vec![1, 2, 3, 4],
};
- for config in vec![qs::Config::new(5, true), qs::Config::new(5, false)] {
+ for config in [qs::Config::new(5, true), qs::Config::new(5, false)] {
// standard parameters
let rec_params: QueryParams = config
.deserialize_str(
diff --git a/tests/test_warp.rs b/tests/test_warp.rs
index 76bfd80..ca56ded 100644
--- a/tests/test_warp.rs
+++ b/tests/test_warp.rs
@@ -17,7 +17,7 @@ where
S: std::str::FromStr,
{
let s = <&str as serde::Deserialize>::deserialize(deserializer)?;
- S::from_str(&s).map_err(|_| D::Error::custom("could not parse string"))
+ S::from_str(s).map_err(|_| D::Error::custom("could not parse string"))
}
#[derive(Deserialize, Serialize, Debug, PartialEq)]
@@ -65,7 +65,7 @@ fn test_composite_querystring_extractor() {
assert_eq!(s.bars, vec![0, 1]);
assert_eq!(s.common.limit, 100);
assert_eq!(s.common.offset, 50);
- assert_eq!(s.common.remaining, true);
+ assert!(s.common.remaining);
})
}
@@ -99,6 +99,6 @@ fn test_custom_qs_config() {
assert_eq!(s.bars, vec![3]);
assert_eq!(s.common.limit, 100);
assert_eq!(s.common.offset, 50);
- assert_eq!(s.common.remaining, true);
+ assert!(s.common.remaining);
})
}