diff --git a/src/utils.rs b/src/utils.rs index 42243d5..9f07b06 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -731,8 +731,7 @@ pub async fn error(req: Request, msg: String) -> Result, St #[cfg(test)] mod tests { - use super::format_num; - use super::rewrite_urls; + use super::{format_num, format_url, rewrite_urls}; #[test] fn format_num_works() { @@ -752,4 +751,33 @@ mod tests { r#"https://www.reddit.com/r/linux_gaming/comments/x/just_a_test/"# ) } + + #[test] + fn test_format_url() { + assert_eq!(format_url("https://a.thumbs.redditmedia.com/XYZ.jpg"), "/thumb/a/XYZ.jpg"); + assert_eq!(format_url("https://emoji.redditmedia.com/a/b"), "/emoji/a/b"); + + assert_eq!( + format_url("https://external-preview.redd.it/foo.jpg?auto=webp&s=bar"), + "/preview/external-pre/foo.jpg?auto=webp&s=bar" + ); + + assert_eq!(format_url("https://i.redd.it/foobar.jpg"), "/img/foobar.jpg"); + assert_eq!( + format_url("https://preview.redd.it/qwerty.jpg?auto=webp&s=asdf"), + "/preview/pre/qwerty.jpg?auto=webp&s=asdf" + ); + assert_eq!(format_url("https://v.redd.it/foo/DASH_360.mp4?source=fallback"), "/vid/foo/360.mp4"); + assert_eq!( + format_url("https://v.redd.it/foo/HLSPlaylist.m3u8?a=bar&v=1&f=sd"), + "/hls/foo/HLSPlaylist.m3u8?a=bar&v=1&f=sd" + ); + assert_eq!(format_url("https://www.redditstatic.com/gold/awards/icon/icon.png"), "/static/gold/awards/icon/icon.png"); + + assert_eq!(format_url(""), ""); + assert_eq!(format_url("self"), ""); + assert_eq!(format_url("default"), ""); + assert_eq!(format_url("nsfw"), ""); + assert_eq!(format_url("spoiler"), ""); + } }