diff options
Diffstat (limited to 'tests/test_deserialize.rs')
-rw-r--r-- | tests/test_deserialize.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/tests/test_deserialize.rs b/tests/test_deserialize.rs index 40cd43b..92e5f53 100644 --- a/tests/test_deserialize.rs +++ b/tests/test_deserialize.rs @@ -560,6 +560,19 @@ fn strict_mode() { .deserialize_str("vec%5B%5D=1&vec%5B%5D=2") .unwrap(); assert_eq!(params.vec, vec![1, 2]); + + #[derive(Debug, Serialize, Deserialize, PartialEq)] + struct StringQueryParam { + field: String, + } + + // Ensure strict mode produces an error for invalid UTF-8 percent encoded characters. + let invalid_utf8: Result<StringQueryParam, _> = strict_config.deserialize_str("field=%E9"); + assert!(invalid_utf8.is_err()); + + // Ensure loose mode invalid UTF-8 percent encoded characters become � U+FFFD. + let valid_utf8: StringQueryParam = loose_config.deserialize_str("field=%E9").unwrap(); + assert_eq!(valid_utf8.field, "�"); } #[test] |