From c6e5914a31e0d602695a3ea601f6976a1ab07d0e Mon Sep 17 00:00:00 2001 From: Sam Scott Date: Sun, 7 Apr 2024 14:36:05 -0500 Subject: Actix: extract querystring from form data (#98) * Deprecate support for actix-web 2.0 * Update actix.rs Added QsForm to support application/x-www-form-urlencoded Web forms * Update actix.rs with working adjustments Added Into_inner function for both QsQuery and QsForm to behave like actix_webs default extractors Made some fixes * Added missing code to actix.rs for QsForm * Update actix.rs Added new trait "IntoInner" Fixed QsFormConfig not correctly setting new settings correctly * Update actix.rs Removed trait requirement for using into_inner() now functions as a function. * Update src/actix.rs * Remove redundant config, add tests * Add changelog * Bump serde qs version * Add Debug bound to docs example --------- Co-authored-by: nMessage <135612238+nMessage@users.noreply.github.com> --- tests/test_actix.rs | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/test_actix.rs b/tests/test_actix.rs index 792afb2..48ad27f 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; @@ -143,3 +143,25 @@ fn test_custom_qs_config() { assert_eq!(s.common.remaining, true); }) } + +#[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::::from_request(&req, &mut pl).await.unwrap(); + assert_eq!(s.into_inner(), test_data); + }) +} -- cgit v1.2.3