Add tests for toml helpers

master
Paul Woolcock 6 years ago
parent 5b24922d9e
commit e57c400c46
  1. 1
      Cargo.toml
  2. 177
      src/helpers/toml.rs
  3. 4
      src/lib.rs

@ -34,6 +34,7 @@ skeptic = "0.13.3"
[dev-dependencies]
skeptic = "0.13.3"
tempfile = "3.0.3"
indoc = "0.2.6"
[package.metadata.docs.rs]
features = ["all"]

@ -76,3 +76,180 @@ pub fn to_file_with_options<P: AsRef<Path>>(
to_writer(data, file)?;
Ok(())
}
#[cfg(test)]
mod tests {
use super::*;
use std::{fs::OpenOptions, io::Cursor};
use tempfile::{tempdir, NamedTempFile};
#[test]
fn test_from_str() {
let doc = indoc!(
r#"
base = "https://example.com"
client_id = "adbc01234"
client_secret = "0987dcba"
redirect = "urn:ietf:wg:oauth:2.0:oob"
token = "fedc5678"
"#
);
let desered = from_str(&doc).expect("Couldn't deserialize Data");
assert_eq!(
desered,
Data {
base: "https://example.com".into(),
client_id: "adbc01234".into(),
client_secret: "0987dcba".into(),
redirect: "urn:ietf:wg:oauth:2.0:oob".into(),
token: "fedc5678".into(),
}
);
}
#[test]
fn test_from_slice() {
let doc = indoc!(
r#"
base = "https://example.com"
client_id = "adbc01234"
client_secret = "0987dcba"
redirect = "urn:ietf:wg:oauth:2.0:oob"
token = "fedc5678"
"#
);
let doc = doc.as_bytes();
let desered = from_slice(&doc).expect("Couldn't deserialize Data");
assert_eq!(
desered,
Data {
base: "https://example.com".into(),
client_id: "adbc01234".into(),
client_secret: "0987dcba".into(),
redirect: "urn:ietf:wg:oauth:2.0:oob".into(),
token: "fedc5678".into(),
}
);
}
#[test]
fn test_from_reader() {
let doc = indoc!(
r#"
base = "https://example.com"
client_id = "adbc01234"
client_secret = "0987dcba"
redirect = "urn:ietf:wg:oauth:2.0:oob"
token = "fedc5678"
"#
);
let doc = doc.as_bytes();
let doc = Cursor::new(doc);
let desered = from_reader(doc).expect("Couldn't deserialize Data");
assert_eq!(
desered,
Data {
base: "https://example.com".into(),
client_id: "adbc01234".into(),
client_secret: "0987dcba".into(),
redirect: "urn:ietf:wg:oauth:2.0:oob".into(),
token: "fedc5678".into(),
}
);
}
#[test]
fn test_from_file() {
let mut datafile = NamedTempFile::new().expect("Couldn't create tempfile");
let doc = indoc!(
r#"
base = "https://example.com"
client_id = "adbc01234"
client_secret = "0987dcba"
redirect = "urn:ietf:wg:oauth:2.0:oob"
token = "fedc5678"
"#
);
write!(&mut datafile, "{}", doc).expect("Couldn't write Data to file");
let desered = from_file(datafile.path()).expect("Couldn't deserialize Data");
assert_eq!(
desered,
Data {
base: "https://example.com".into(),
client_id: "adbc01234".into(),
client_secret: "0987dcba".into(),
redirect: "urn:ietf:wg:oauth:2.0:oob".into(),
token: "fedc5678".into(),
}
);
}
#[test]
fn test_to_string() {
let data = Data {
base: "https://example.com".into(),
client_id: "adbc01234".into(),
client_secret: "0987dcba".into(),
redirect: "urn:ietf:wg:oauth:2.0:oob".into(),
token: "fedc5678".into(),
};
let s = to_string(&data).expect("Couldn't serialize Data");
let desered = from_str(&s).expect("Couldn't deserialize Data");
assert_eq!(data, desered);
}
#[test]
fn test_to_vec() {
let data = Data {
base: "https://example.com".into(),
client_id: "adbc01234".into(),
client_secret: "0987dcba".into(),
redirect: "urn:ietf:wg:oauth:2.0:oob".into(),
token: "fedc5678".into(),
};
let v = to_vec(&data).expect("Couldn't write to vec");
let desered = from_slice(&v).expect("Couldn't deserialize data");
assert_eq!(data, desered);
}
#[test]
fn test_to_writer() {
let data = Data {
base: "https://example.com".into(),
client_id: "adbc01234".into(),
client_secret: "0987dcba".into(),
redirect: "urn:ietf:wg:oauth:2.0:oob".into(),
token: "fedc5678".into(),
};
let mut buffer = Vec::new();
to_writer(&data, &mut buffer).expect("Couldn't write to writer");
let reader = Cursor::new(buffer);
let desered = from_reader(reader).expect("Couldn't deserialize Data");
assert_eq!(data, desered);
}
#[test]
fn test_to_file() {
let data = Data {
base: "https://example.com".into(),
client_id: "adbc01234".into(),
client_secret: "0987dcba".into(),
redirect: "urn:ietf:wg:oauth:2.0:oob".into(),
token: "fedc5678".into(),
};
let tempdir = tempdir().expect("Couldn't create tempdir");
let filename = tempdir.path().join("mastodon-data.toml");
to_file(&data, &filename).expect("Couldn't write to file");
let desered = from_file(&filename).expect("Couldn't deserialize Data");
assert_eq!(data, desered);
}
#[test]
fn test_to_file_with_options() {
let data = Data {
base: "https://example.com".into(),
client_id: "adbc01234".into(),
client_secret: "0987dcba".into(),
redirect: "urn:ietf:wg:oauth:2.0:oob".into(),
token: "fedc5678".into(),
};
let file = NamedTempFile::new().expect("Couldn't create tempfile");
let mut options = OpenOptions::new();
options.write(true).create(false).truncate(true);
to_file_with_options(&data, file.path(), options).expect("Couldn't write to file");
let desered = from_file(file.path()).expect("Couldn't deserialize Data");
assert_eq!(data, desered);
}
}

@ -56,6 +56,10 @@ extern crate toml as tomlcrate;
#[cfg(test)]
extern crate tempfile;
#[cfg(test)]
#[cfg_attr(all(test, feature = "toml"), macro_use)]
extern crate indoc;
use std::{borrow::Cow, ops};
use reqwest::{

Loading…
Cancel
Save