diff --git a/CHANGES.md b/CHANGES.md index 0bb37b94..5265d9d7 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,6 +6,8 @@ * Add `ClientRequestBuilder::form()` for sending `application/x-www-form-urlencoded` requests. +* Add method to configure custom error handler to Form extractor. + * Add methods to `HttpResponse` to retrieve, add, and delete cookies * Add `.set_content_type()` and `.set_content_disposition()` methods diff --git a/tests/test_handlers.rs b/tests/test_handlers.rs index 8f1ee943..e6738e8a 100644 --- a/tests/test_handlers.rs +++ b/tests/test_handlers.rs @@ -125,6 +125,30 @@ fn test_form_extractor() { assert_eq!(bytes, Bytes::from_static(b"test")); } +#[test] +fn test_form_extractor2() { + let mut srv = test::TestServer::new(|app| { + app.resource("/{username}/index.html", |r| { + r.route().with(|form: Form| { + format!("{}", form.username) + }).error_handler(|err, res| { + error::InternalError::from_response( + err, HttpResponse::Conflict().finish()).into() + }); + }); + }); + + // client request + let request = srv + .post() + .uri(srv.url("/test1/index.html")) + .header("content-type", "application/x-www-form-urlencoded") + .body("918237129hdk:D:D:D:D:D:DjASHDKJhaswkjeq") + .unwrap(); + let response = srv.execute(request.send()).unwrap(); + assert!(response.status().is_client_error()); +} + #[test] fn test_path_and_query_extractor() { let mut srv = test::TestServer::new(|app| {