diff options
author | Sam Scott <sam.scott89@gmail.com> | 2020-06-03 10:26:45 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-03 10:26:45 -0400 |
commit | 77cb6730f9265591dad141f4f9b840069c9cd2b9 (patch) | |
tree | 6c4cd170f74d0c789e1059a91514d04dc06decba /tests | |
parent | d5c2d3e44a5cbe2311111fb56bfe6bed8fabd961 (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.rs | 143 | ||||
-rw-r--r-- | tests/test_deserialize.rs | 2 | ||||
-rw-r--r-- | tests/test_serialize.rs | 3 |
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(¶ms).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" ); |