From ac3810f68d2dd86c17a57593959506bd1b99cab5 Mon Sep 17 00:00:00 2001 From: Andras Mocsary Date: Fri, 6 Sep 2019 16:30:54 +0200 Subject: Add utf-8 non-control chars validator --- validator_derive/tests/non_control.rs | 75 +++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 validator_derive/tests/non_control.rs (limited to 'validator_derive/tests') diff --git a/validator_derive/tests/non_control.rs b/validator_derive/tests/non_control.rs new file mode 100644 index 0000000..37fb153 --- /dev/null +++ b/validator_derive/tests/non_control.rs @@ -0,0 +1,75 @@ +#[macro_use] +extern crate validator_derive; +extern crate validator; + +use validator::Validate; + +#[cfg(feature = "unic")] +#[test] +fn can_validate_utf8_ok() { + #[derive(Debug, Validate)] + struct TestStruct { + #[validate(non_control_character)] + val: String, + } + + let s = TestStruct { val: "하늘".to_string() }; + + assert!(s.validate().is_ok()); +} + +#[cfg(feature = "unic")] +#[test] +fn utf8_with_control_fails_validation() { + #[derive(Debug, Validate)] + struct TestStruct { + #[validate(non_control_character)] + val: String, + } + + let s = TestStruct { val: "\u{009F}하늘".to_string() }; + let res = s.validate(); + assert!(res.is_err()); + let err = res.unwrap_err(); + let errs = err.field_errors(); + assert!(errs.contains_key("val")); + assert_eq!(errs["val"].len(), 1); + assert_eq!(errs["val"][0].code, "non_control_character"); +} + +#[cfg(feature = "unic")] +#[test] +fn can_specify_code_for_non_control_character() { + #[derive(Debug, Validate)] + struct TestStruct { + #[validate(non_control_character(code = "oops"))] + val: String, + } + let s = TestStruct { val: "\u{009F}하늘".to_string() }; + let res = s.validate(); + assert!(res.is_err()); + let err = res.unwrap_err(); + let errs = err.field_errors(); + assert!(errs.contains_key("val")); + assert_eq!(errs["val"].len(), 1); + assert_eq!(errs["val"][0].code, "oops"); + assert_eq!(errs["val"][0].params["value"], "\u{9F}하늘"); +} + +#[cfg(feature = "unic")] +#[test] +fn can_specify_message_for_non_control_character() { + #[derive(Debug, Validate)] + struct TestStruct { + #[validate(non_control_character(message = "oops"))] + val: String, + } + let s = TestStruct { val: "\u{009F}하늘".to_string() }; + let res = s.validate(); + assert!(res.is_err()); + let err = res.unwrap_err(); + let errs = err.field_errors(); + assert!(errs.contains_key("val")); + assert_eq!(errs["val"].len(), 1); + assert_eq!(errs["val"][0].clone().message.unwrap(), "oops"); +} -- cgit v1.2.3 From 52cd62998b8f45be56512ce1d89aef8bf1a9f670 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Thu, 17 Oct 2019 23:02:51 +0200 Subject: Fix bug + cargo fmt --- validator_derive/tests/regex.rs | 8 ++++---- validator_derive/tests/run-pass/custom.rs | 4 ++-- validator_derive/tests/run-pass/regex.rs | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) (limited to 'validator_derive/tests') diff --git a/validator_derive/tests/regex.rs b/validator_derive/tests/regex.rs index 7e3dfc5..d3e3c1e 100644 --- a/validator_derive/tests/regex.rs +++ b/validator_derive/tests/regex.rs @@ -16,7 +16,7 @@ lazy_static! { fn can_validate_valid_regex() { #[derive(Debug, Validate)] struct TestStruct { - #[validate(regex = "RE2")] + #[validate(regex = "crate::RE2")] val: String, } @@ -29,7 +29,7 @@ fn can_validate_valid_regex() { fn bad_value_for_regex_fails_validation() { #[derive(Debug, Validate)] struct TestStruct { - #[validate(regex = "RE2")] + #[validate(regex = "crate::RE2")] val: String, } @@ -48,7 +48,7 @@ fn bad_value_for_regex_fails_validation() { fn can_specify_code_for_regex() { #[derive(Debug, Validate)] struct TestStruct { - #[validate(regex(path = "RE2", code = "oops"))] + #[validate(regex(path = "crate::RE2", code = "oops"))] val: String, } let s = TestStruct { val: "2".to_string() }; @@ -65,7 +65,7 @@ fn can_specify_code_for_regex() { fn can_specify_message_for_regex() { #[derive(Debug, Validate)] struct TestStruct { - #[validate(regex(path = "RE2", message = "oops"))] + #[validate(regex(path = "crate::RE2", message = "oops"))] val: String, } let s = TestStruct { val: "2".to_string() }; diff --git a/validator_derive/tests/run-pass/custom.rs b/validator_derive/tests/run-pass/custom.rs index dff6375..f745de6 100644 --- a/validator_derive/tests/run-pass/custom.rs +++ b/validator_derive/tests/run-pass/custom.rs @@ -6,13 +6,13 @@ use validator::{Validate, ValidationError}; #[derive(Validate)] struct Test { - #[validate(custom = "validate_something")] + #[validate(custom = "crate::validate_something")] s: String, } #[derive(Validate)] struct TestPath { - #[validate(custom = "::validate_something")] + #[validate(custom = "crate::validate_something")] s: String, } diff --git a/validator_derive/tests/run-pass/regex.rs b/validator_derive/tests/run-pass/regex.rs index dcac3c0..e15b3a6 100644 --- a/validator_derive/tests/run-pass/regex.rs +++ b/validator_derive/tests/run-pass/regex.rs @@ -14,13 +14,13 @@ lazy_static! { #[derive(Validate)] struct Test { - #[validate(regex = "RE2")] + #[validate(regex = "crate::RE2")] s: String, } #[derive(Validate)] struct TestPath { - #[validate(regex = "::RE2")] + #[validate(regex = "crate::RE2")] s: String, } -- cgit v1.2.3