blob: 4b77eb42e99701ebdf35ef0177d0258f903e97f9 [file] [log] [blame] [edit]
// Integration tests from https://github.com/reklatsmasters/saslprep (MIT License)
extern crate stringprep;
use stringprep::{Error, saslprep};
fn assert_prohibited_character<T>(result: Result<T, Error>) {
assert!(result.is_err());
}
fn assert_prohibited_bidirectional_text<T>(result: Result<T, Error>) {
assert!(result.is_err());
}
#[test]
fn should_work_with_latin_letters() {
assert_eq!(saslprep("user").unwrap(), "user");
}
#[test]
fn should_preserve_case() {
assert_eq!(saslprep("USER").unwrap(), "USER");
}
#[test]
fn should_remove_mapped_to_nothing() {
assert_eq!(saslprep("I\u{00AD}X").unwrap(), "IX");
}
#[test]
fn should_replace_non_ascii_space() {
assert_eq!(saslprep("a\u{00A0}b").unwrap(), "a\u{0020}b");
}
#[test]
fn should_normalize_as_nfkc() {
assert_eq!(saslprep("\u{00AA}").unwrap(), "a");
assert_eq!(saslprep("\u{2168}").unwrap(), "IX");
}
#[test]
fn should_not_allow_prohibited_characters() {
// C.2.1 ASCII control characters
assert_prohibited_character(saslprep("a\u{007F}b"));
// C.2.2 Non-ASCII control characters
assert_prohibited_character(saslprep("a\u{06DD}b"));
// C.3 Private use
assert_prohibited_character(saslprep("a\u{E000}b"));
// C.4 Non-character code points
assert_prohibited_character(saslprep("a\u{1FFFE}b"));
// C.5 Surrogate codes
// forbidden by rust
// C.6 Inappropriate for plain text
assert_prohibited_character(saslprep("a\u{FFF9}b"));
// C.7 Inappropriate for canonical representation
assert_prohibited_character(saslprep("a\u{2FF0}b"));
// C.8 Change display properties or are deprecated
assert_prohibited_character(saslprep("a\u{200E}b"));
// C.9 Tagging characters
assert_prohibited_character(saslprep("a\u{E0001}b"));
}
#[test]
fn randalcat_should_be_first_and_last() {
assert_eq!(saslprep("\u{0627}\u{0031}\u{0628}").unwrap(), "\u{0627}\u{0031}\u{0628}");
assert_prohibited_bidirectional_text(saslprep("\u{0627}\u{0031}"));
}
#[test]
fn should_handle_unassigned_code_points() {
assert_prohibited_character(saslprep("a\u{0487}"));
}