From 91bf47caf00badecd935bb3dd5acded5b770d7d3 Mon Sep 17 00:00:00 2001 From: R0flcopt3r <12752060+R0flcopt3r@users.noreply.github.com> Date: Sat, 9 Oct 2021 19:31:34 +0200 Subject: using mockito for testing instead of real websites --- Cargo.lock | 57 ++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 2 ++ src/hooks/url.rs | 69 ++++++++++++++++++++++++++++++++++++++++++++------------ 3 files changed, 114 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9c28982..6d30e1f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -26,6 +26,16 @@ version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28b2cd92db5cbd74e8e5028f7e27dd7aa3090e89e4f2a197cc7c8dfb69c7063b" +[[package]] +name = "assert-json-diff" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f1c3703dd33532d7f0ca049168930e9099ecac238e23cf932f3a69c42f06da" +dependencies = [ + "serde", + "serde_json", +] + [[package]] name = "async-stream" version = "0.3.2" @@ -47,6 +57,17 @@ dependencies = [ "syn", ] +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + [[package]] name = "autocfg" version = "1.0.1" @@ -103,6 +124,7 @@ dependencies = [ "irc", "irc-proto", "kuchiki", + "mockito", "rand 0.8.3", "regex", "reqwest", @@ -158,6 +180,17 @@ dependencies = [ "winapi", ] +[[package]] +name = "colored" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd" +dependencies = [ + "atty", + "lazy_static", + "winapi", +] + [[package]] name = "convert_case" version = "0.4.0" @@ -239,6 +272,12 @@ dependencies = [ "syn", ] +[[package]] +name = "difference" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" + [[package]] name = "digest" version = "0.9.0" @@ -838,6 +877,24 @@ dependencies = [ "winapi", ] +[[package]] +name = "mockito" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d10030163d67f681db11810bc486df3149e6d91c8b4f3f96fa8b62b546c2cef8" +dependencies = [ + "assert-json-diff", + "colored", + "difference", + "httparse", + "lazy_static", + "log", + "rand 0.8.3", + "regex", + "serde_json", + "serde_urlencoded", +] + [[package]] name = "native-tls" version = "0.2.8" diff --git a/Cargo.toml b/Cargo.toml index c6ba1f6..4e79f5d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,6 +32,8 @@ rand = "0.8.3" reqwest = "0.11" kuchiki = "0.8.1" +mockito = "0.30.0" + [dev-dependencies] tokio-test = "*" diff --git a/src/hooks/url.rs b/src/hooks/url.rs index 7847969..939dc52 100644 --- a/src/hooks/url.rs +++ b/src/hooks/url.rs @@ -89,17 +89,30 @@ mod tests { use super::url_parser; use super::url_title; use anyhow::{Error, Result}; + use mockito; #[test] fn test_url_titel() { - let title: String = - tokio_test::block_on(url_title("https://news.ycombinator.com")).unwrap(); - assert_eq!(title.as_str(), "Hacker News"); - - let title: String = tokio_test::block_on(url_title("https://google.com")).unwrap(); - assert_eq!(title.as_str(), "Google"); - - assert!(tokio_test::block_on(url_title("random_site")).is_err()) + assert!(tokio_test::block_on(url_title(&mockito::server_url())).is_err()); + + let _m = mockito::mock("GET", "/") + .with_body( + r#" + +
+