aboutsummaryrefslogtreecommitdiffstats
path: root/validator_derive/tests/non_control.rs
diff options
context:
space:
mode:
Diffstat (limited to 'validator_derive/tests/non_control.rs')
-rw-r--r--validator_derive/tests/non_control.rs75
1 files changed, 75 insertions, 0 deletions
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");
+}