summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSam Scott <sam.scott89@gmail.com>2020-06-03 10:26:45 -0400
committerGitHub <noreply@github.com>2020-06-03 10:26:45 -0400
commit77cb6730f9265591dad141f4f9b840069c9cd2b9 (patch)
tree6c4cd170f74d0c789e1059a91514d04dc06decba /tests
parentd5c2d3e44a5cbe2311111fb56bfe6bed8fabd961 (diff)
Support actix-web v2 (#30)
* update dependencies - actix-web v2 - percent encoding v2.1 - rust 2018 edition - remove rustfmt no longer supported rules * ci: add feature build matrix * fix actix unit tests Co-authored-by: Mario Reder <mreder1289@gmail.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/test_actix.rs143
-rw-r--r--tests/test_deserialize.rs2
-rw-r--r--tests/test_serialize.rs3
3 files changed, 83 insertions, 65 deletions
diff --git a/tests/test_actix.rs b/tests/test_actix.rs
index 532fa7c..34969d4 100644
--- a/tests/test_actix.rs
+++ b/tests/test_actix.rs
@@ -44,84 +44,99 @@ struct CommonParams {
#[test]
fn test_default_error_handler() {
- let req = TestRequest::with_uri("/test").to_srv_request();
- let (req, mut pl) = req.into_parts();
-
- let e = QsQuery::<Query>::from_request(&req, &mut pl).unwrap_err();
- assert_eq!(
- e.as_response_error().error_response().status(),
- StatusCode::BAD_REQUEST
- );
+ futures::executor::block_on(async {
+ let req = TestRequest::with_uri("/test").to_srv_request();
+ let (req, mut pl) = req.into_parts();
+
+ let e = QsQuery::<Query>::from_request(&req, &mut pl)
+ .await
+ .unwrap_err();
+ assert_eq!(
+ e.as_response_error().error_response().status(),
+ StatusCode::BAD_REQUEST
+ );
+ })
}
#[test]
fn test_custom_error_handler() {
- let req = TestRequest::with_uri("/test")
- .data(QsQueryConfig::default().error_handler(|e, _| {
- let resp = HttpResponse::UnprocessableEntity().finish();
- InternalError::from_response(e, resp).into()
- }))
- .to_srv_request();
-
- let (req, mut pl) = req.into_parts();
- let query = QsQuery::<Query>::from_request(&req, &mut pl);
-
- assert!(query.is_err());
- assert_eq!(
- query
- .unwrap_err()
- .as_response_error()
- .error_response()
- .status(),
- StatusCode::UNPROCESSABLE_ENTITY
- );
+ futures::executor::block_on(async {
+ let req = TestRequest::with_uri("/test")
+ .app_data(QsQueryConfig::default().error_handler(|e, _| {
+ let resp = HttpResponse::UnprocessableEntity().finish();
+ dbg!(&resp);
+ InternalError::from_response(e, resp).into()
+ }))
+ .to_srv_request();
+
+ let (req, mut pl) = req.into_parts();
+ let query = QsQuery::<Query>::from_request(&req, &mut pl).await;
+
+ assert!(query.is_err());
+ assert_eq!(
+ query
+ .unwrap_err()
+ .as_response_error()
+ .error_response()
+ .status(),
+ StatusCode::UNPROCESSABLE_ENTITY
+ );
+ })
}
#[test]
fn test_composite_querystring_extractor() {
- let req = TestRequest::with_uri(
- "/test?foo=1&bars[]=0&bars[]=1&limit=100&offset=50&remaining=true",
- )
- .to_srv_request();
- let (req, mut pl) = req.into_parts();
-
- let s = QsQuery::<Query>::from_request(&req, &mut pl).unwrap();
- assert_eq!(s.foo, 1);
- 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);
+ futures::executor::block_on(async {
+ let req = TestRequest::with_uri(
+ "/test?foo=1&bars[]=0&bars[]=1&limit=100&offset=50&remaining=true",
+ )
+ .to_srv_request();
+ let (req, mut pl) = req.into_parts();
+
+ let s = QsQuery::<Query>::from_request(&req, &mut pl).await.unwrap();
+ assert_eq!(s.foo, 1);
+ 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);
+ })
}
#[test]
fn test_default_qs_config() {
- let req = TestRequest::with_uri(
- "/test?foo=1&bars%5B%5D=3&limit=100&offset=50&remaining=true",
- )
- .to_srv_request();
- let (req, mut pl) = req.into_parts();
-
- let e = QsQuery::<Query>::from_request(&req, &mut pl).unwrap_err();
- assert_eq!(
- e.as_response_error().error_response().status(),
- StatusCode::BAD_REQUEST
- );
+ futures::executor::block_on(async {
+ let req = TestRequest::with_uri(
+ "/test?foo=1&bars%5B%5D=3&limit=100&offset=50&remaining=true",
+ )
+ .to_srv_request();
+ let (req, mut pl) = req.into_parts();
+
+ let e = QsQuery::<Query>::from_request(&req, &mut pl)
+ .await
+ .unwrap_err();
+ assert_eq!(
+ e.as_response_error().error_response().status(),
+ StatusCode::BAD_REQUEST
+ );
+ })
}
#[test]
fn test_custom_qs_config() {
- let req = TestRequest::with_uri(
- "/test?foo=1&bars%5B%5D=3&limit=100&offset=50&remaining=true",
- )
- .data(QsQueryConfig::default().qs_config(QsConfig::new(5, false)))
- .to_srv_request();
-
- let (req, mut pl) = req.into_parts();
-
- let s = QsQuery::<Query>::from_request(&req, &mut pl).unwrap();
- assert_eq!(s.foo, 1);
- assert_eq!(s.bars, vec![3]);
- assert_eq!(s.common.limit, 100);
- assert_eq!(s.common.offset, 50);
- assert_eq!(s.common.remaining, true);
+ futures::executor::block_on(async {
+ let req = TestRequest::with_uri(
+ "/test?foo=1&bars%5B%5D=3&limit=100&offset=50&remaining=true",
+ )
+ .app_data(QsQueryConfig::default().qs_config(QsConfig::new(5, false)))
+ .to_srv_request();
+
+ let (req, mut pl) = req.into_parts();
+
+ let s = QsQuery::<Query>::from_request(&req, &mut pl).await.unwrap();
+ assert_eq!(s.foo, 1);
+ assert_eq!(s.bars, vec![3]);
+ assert_eq!(s.common.limit, 100);
+ assert_eq!(s.common.offset, 50);
+ assert_eq!(s.common.remaining, true);
+ })
}
diff --git a/tests/test_deserialize.rs b/tests/test_deserialize.rs
index beede63..4e02823 100644
--- a/tests/test_deserialize.rs
+++ b/tests/test_deserialize.rs
@@ -609,4 +609,4 @@ fn deserialize_plus() {
let test: Test = serde_qs::from_str("email=a%2Bb%40c.com").unwrap();
assert_eq!(test.email, "a+b@c.com");
-} \ No newline at end of file
+}
diff --git a/tests/test_serialize.rs b/tests/test_serialize.rs
index 8adae57..f650beb 100644
--- a/tests/test_serialize.rs
+++ b/tests/test_serialize.rs
@@ -5,6 +5,7 @@ extern crate serde_qs as qs;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
struct Address {
city: String,
+ street: String,
postcode: String,
}
@@ -25,6 +26,7 @@ fn serialize_struct() {
phone: 12345,
address: Address {
city: "Carrot City".to_string(),
+ street: "Special-Street* No. 11".to_string(),
postcode: "12345".to_string(),
},
user_ids: vec![1, 2, 3, 4],
@@ -34,6 +36,7 @@ fn serialize_struct() {
qs::to_string(&params).unwrap(),
"\
id=42&name=Acme&phone=12345&address[city]=Carrot+City&\
+ address[street]=Special-Street*+No.+11&\
address[postcode]=12345&user_ids[0]=1&user_ids[1]=2&\
user_ids[2]=3&user_ids[3]=4"
);