1
0
Fork 0

improve ssh url deserialization tests

This commit is contained in:
Cyborus 2024-05-14 11:22:32 -04:00
parent 80cba9a6c3
commit ea25b2f359
No known key found for this signature in database
3 changed files with 39 additions and 97 deletions

View file

@ -290,6 +290,45 @@ fn parse_ssh_url(raw_url: &String) -> Result<Url, url::ParseError> {
})
}
#[test]
fn ssh_url_deserialization() {
#[derive(serde::Deserialize)]
struct SshUrl {
#[serde(deserialize_with = "deserialize_ssh_url")]
url: url::Url,
}
let full_url = r#"{ "url": "ssh://git@codeberg.org/Cyborus/forgejo-api" }"#;
let ssh_url = r#"{ "url": "git@codeberg.org:Cyborus/forgejo-api" }"#;
let full_url_de =
serde_json::from_str::<SshUrl>(full_url).expect("failed to deserialize full url");
let ssh_url_de =
serde_json::from_str::<SshUrl>(ssh_url).expect("failed to deserialize ssh url");
let expected = "ssh://git@codeberg.org/Cyborus/forgejo-api";
assert_eq!(full_url_de.url.as_str(), expected);
assert_eq!(ssh_url_de.url.as_str(), expected);
#[derive(serde::Deserialize)]
struct OptSshUrl {
#[serde(deserialize_with = "deserialize_optional_ssh_url")]
url: Option<url::Url>,
}
let null_url = r#"{ "url": null }"#;
let full_url_de = serde_json::from_str::<OptSshUrl>(full_url)
.expect("failed to deserialize optional full url");
let ssh_url_de =
serde_json::from_str::<OptSshUrl>(ssh_url).expect("failed to deserialize optional ssh url");
let null_url_de =
serde_json::from_str::<OptSshUrl>(null_url).expect("failed to deserialize null url");
let expected = Some("ssh://git@codeberg.org/Cyborus/forgejo-api");
assert_eq!(full_url_de.url.as_ref().map(|u| u.as_ref()), expected);
assert_eq!(ssh_url_de.url.as_ref().map(|u| u.as_ref()), expected);
assert!(null_url_de.url.is_none());
}
impl From<structs::DefaultMergeStyle> for structs::MergePullRequestOptionDo {
fn from(value: structs::DefaultMergeStyle) -> Self {
match value {