From 435f734d60ec4e64a56306e196bd6e4b54cfd45a Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Sun, 15 Dec 2019 21:56:38 +0100 Subject: [PATCH] adapt tests for new avatar recoding --- src/config.rs | 12 ++++++++---- test-data/image/avatar1000x1000.jpg | Bin 0 -> 35552 bytes 2 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 test-data/image/avatar1000x1000.jpg diff --git a/src/config.rs b/src/config.rs index bd19512a7..2e204d35b 100644 --- a/src/config.rs +++ b/src/config.rs @@ -191,6 +191,8 @@ mod tests { use std::string::ToString; use crate::test_utils::*; + use std::fs::File; + use std::io::Write; #[test] fn test_to_string() { @@ -210,16 +212,17 @@ mod tests { } #[test] - fn test_selfavatar() -> failure::Fallible<()> { + fn test_selfavatar_outside_blobdir() -> failure::Fallible<()> { let t = dummy_context(); let avatar_src = t.dir.path().join("avatar.jpg"); - std::fs::write(&avatar_src, b"avatar")?; + let avatar_bytes = include_bytes!("../test-data/image/avatar1000x1000.jpg"); + File::create(&avatar_src)?.write_all(avatar_bytes)?; let avatar_blob = t.ctx.get_blobdir().join("avatar.jpg"); assert!(!avatar_blob.exists()); t.ctx .set_config(Config::Selfavatar, Some(&avatar_src.to_str().unwrap()))?; assert!(avatar_blob.exists()); - assert_eq!(std::fs::read(&avatar_blob)?, b"avatar"); + assert!(std::fs::metadata(&avatar_blob).unwrap().len() < avatar_bytes.len() as u64); let avatar_cfg = t.ctx.get_config(Config::Selfavatar); assert_eq!(avatar_cfg, avatar_blob.to_str().map(|s| s.to_string())); Ok(()) @@ -229,7 +232,8 @@ mod tests { fn test_selfavatar_in_blobdir() -> failure::Fallible<()> { let t = dummy_context(); let avatar_src = t.ctx.get_blobdir().join("avatar.jpg"); - std::fs::write(&avatar_src, b"avatar")?; + let avatar_bytes = include_bytes!("../test-data/image/avatar1000x1000.jpg"); + File::create(&avatar_src)?.write_all(avatar_bytes)?; t.ctx .set_config(Config::Selfavatar, Some(&avatar_src.to_str().unwrap()))?; let avatar_cfg = t.ctx.get_config(Config::Selfavatar); diff --git a/test-data/image/avatar1000x1000.jpg b/test-data/image/avatar1000x1000.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a88ebe985c4e3f5b4e0da58890478556216604b6 GIT binary patch literal 35552 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 mYXPn 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