identifiers: Don't allow invalid characters in RoomVersionId
This commit is contained in:
parent
efc60d6a64
commit
270f8196bc
@ -368,4 +368,17 @@ mod tests {
|
||||
RoomVersionId::try_from("io.ruma.1").expect("Failed to create RoomVersionId.")
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn custom_room_id_invalid_character() {
|
||||
assert!(serde_json::from_str::<RoomVersionId>(r#""io_ruma_1""#).is_err());
|
||||
assert!(serde_json::from_str::<RoomVersionId>(r#""=""#).is_err());
|
||||
assert!(serde_json::from_str::<RoomVersionId>(r#""/""#).is_err());
|
||||
assert!(serde_json::from_str::<RoomVersionId>(r#"".""#).is_ok());
|
||||
assert!(serde_json::from_str::<RoomVersionId>(r#""-""#).is_ok());
|
||||
assert_eq!(
|
||||
RoomVersionId::try_from("io_ruma_1").unwrap_err(),
|
||||
IdParseError::InvalidCharacters
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -8,6 +8,8 @@ pub fn validate(s: &str) -> Result<(), Error> {
|
||||
Err(Error::Empty)
|
||||
} else if s.chars().count() > MAX_CODE_POINTS {
|
||||
Err(Error::MaximumLengthExceeded)
|
||||
} else if !s.chars().all(|c| c.is_alphanumeric() || ".-".contains(c)) {
|
||||
Err(Error::InvalidCharacters)
|
||||
} else {
|
||||
Ok(())
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user