From bd7e83d326f3f96c6483b9668a59f261eedf9991 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Wed, 12 Jun 2019 18:38:45 +0200 Subject: Reduce duplication in tests. Adds a default_mock method for most cases, and a client method that sets up the zotapi client with the proper test url and credentials. --- tests/zotapi.rs | 119 +++++++++++++++++--------------------------------------- 1 file changed, 35 insertions(+), 84 deletions(-) diff --git a/tests/zotapi.rs b/tests/zotapi.rs index 1a81dc3..8c9d0b0 100644 --- a/tests/zotapi.rs +++ b/tests/zotapi.rs @@ -17,34 +17,34 @@ extern crate zotapi; extern crate mockito; -use mockito::{mock, Matcher}; +use mockito::{mock, Matcher, Mock}; -#[test] -fn get_channel_stream() { - let m = mock("GET", "/api/z/1.0/channel/stream") +fn default_mock(method: &str, url: &str) -> Mock { + mock(method, url) .match_header("Authorization", Matcher::Regex(r"Basic \w+".into())) .with_status(200) .with_header("content-type", "application/json") .with_body("{}") - .create(); + .create() +} + +fn client() -> zotapi::Client { + let listen_url = format!("http://{}", mockito::SERVER_ADDRESS); + zotapi::client(&listen_url, "testuser", "test1234") +} - let z = zotapi::client(&format!("http://{}", mockito::SERVER_ADDRESS), "testuser", "test1234"); - let data = z.channel_stream(); +#[test] +fn get_channel_stream() { + let m = default_mock("GET", "/api/z/1.0/channel/stream"); + let data = client().channel_stream(); m.assert(); assert_eq!(data.unwrap(), "{}"); } #[test] fn get_network_stream() { - let m = mock("GET", "/api/z/1.0/network/stream") - .match_header("Authorization", Matcher::Regex(r"Basic \w+".into())) - .with_status(200) - .with_header("content-type", "application/json") - .with_body("{}") - .create(); - - let z = zotapi::client(&format!("http://{}", mockito::SERVER_ADDRESS), "testuser", "test1234"); - let data = z.network_stream(); + let m = default_mock("GET", "/api/z/1.0/network/stream"); + let data = client().network_stream(); m.assert(); assert_eq!(data.unwrap(), "{}"); } @@ -57,8 +57,7 @@ fn return_error_if_invalid_auth_provided() { .with_body("This api requires login") .create(); - let z = zotapi::client(&format!("http://{}", mockito::SERVER_ADDRESS), "nouser", "wrongpassword"); - let data = z.channel_stream(); + let data = client().channel_stream(); m.assert(); assert!(data.is_err()); assert_eq!(format!("{:?}", data), "Err(Unauthorized)"); @@ -74,8 +73,7 @@ fn create_new_post() { .with_body("{}") .create(); - let z = zotapi::client(&format!("http://{}", mockito::SERVER_ADDRESS), "testuser", "test1234"); - let _res = z.item().body("This is a test").create(); + let _res = client().item().body("This is a test").create(); m.assert(); } @@ -95,8 +93,7 @@ fn create_new_post_with_title() { .with_body("{}") .create(); - let z = zotapi::client(&format!("http://{}", mockito::SERVER_ADDRESS), "testuser", "test1234"); - let _res = z.item().title("A title").body("This is a test").create(); + let _res = client().item().title("A title").body("This is a test").create(); m.assert(); } @@ -123,8 +120,7 @@ fn upload_item_with_media_file() { .with_body("{}") .create(); - let z = zotapi::client(&format!("http://{}", mockito::SERVER_ADDRESS), "testuser", "test1234"); - let _res = z.item() + let _res = client().item() .title("A title") .body("This is a test") .file("tests/fixtures/testfile.txt") @@ -159,8 +155,7 @@ fn upload_item_with_two_files() { .with_body("{}") .create(); - let z = zotapi::client(&format!("http://{}", mockito::SERVER_ADDRESS), "testuser", "test1234"); - let _res = z.item() + let _res = client().item() .title("A title") .body("This is a test") .file("tests/fixtures/testfile.txt") @@ -172,85 +167,43 @@ fn upload_item_with_two_files() { #[test] fn fetch_xchan_by_address() { - let m = mock("GET", "/api/z/1.0/xchan?address=test%40test.com") - .match_header("Authorization", Matcher::Regex(r"Basic \w+".into())) - .with_status(200) - .with_header("content-type", "application/json") - .with_body("{}") - .create(); - - let z = zotapi::client(&format!("http://{}", mockito::SERVER_ADDRESS), "testuser", "test1234"); - let _res = z.xchan().by_address("test@test.com").fetch().unwrap(); + let m = default_mock("GET", "/api/z/1.0/xchan?address=test%40test.com"); + let _res = client().xchan().by_address("test@test.com").fetch().unwrap(); m.assert(); } #[test] fn fetch_xchan_by_hash() { - let m = mock("GET", "/api/z/1.0/xchan?hash=baffebaff") - .match_header("Authorization", Matcher::Regex(r"Basic \w+".into())) - .with_status(200) - .with_header("content-type", "application/json") - .with_body("{}") - .create(); - - let z = zotapi::client(&format!("http://{}", mockito::SERVER_ADDRESS), "testuser", "test1234"); - let _res = z.xchan().by_hash("baffebaff").fetch().unwrap(); + let m = default_mock("GET", "/api/z/1.0/xchan?hash=baffebaff"); + let _res = client().xchan().by_hash("baffebaff").fetch().unwrap(); m.assert(); } #[test] fn fetch_xchan_by_guid() { - let m = mock("GET", "/api/z/1.0/xchan?guid=baffebaff-baff-baff") - .match_header("Authorization", Matcher::Regex(r"Basic \w+".into())) - .with_status(200) - .with_header("content-type", "application/json") - .with_body("{}") - .create(); - - let z = zotapi::client(&format!("http://{}", mockito::SERVER_ADDRESS), "testuser", "test1234"); - let _res = z.xchan().by_guid("baffebaff-baff-baff").fetch().unwrap(); + let m = default_mock("GET", "/api/z/1.0/xchan?guid=baffebaff-baff-baff"); + let _res = client().xchan().by_guid("baffebaff-baff-baff").fetch().unwrap(); m.assert(); } #[test] fn fetch_connections() { - let m = mock("GET", "/api/z/1.0/abook") - .match_header("Authorization", Matcher::Regex(r"Basic \w+".into())) - .with_status(200) - .with_header("content-type", "application/json") - .with_body("{}") - .create(); - - let z = zotapi::client(&format!("http://{}", mockito::SERVER_ADDRESS), "testuser", "test1234"); - let _res = z.abook().fetch().unwrap(); + let m = default_mock("GET", "/api/z/1.0/abook"); + let _res = client().abook().fetch().unwrap(); m.assert(); } #[test] fn fetch_abconfig() { - let m = mock("GET", "/api/z/1.0/abconfig") - .match_header("Authorization", Matcher::Regex(r"Basic \w+".into())) - .with_status(200) - .with_header("content-type", "application/json") - .with_body("{}") - .create(); - - let z = zotapi::client(&format!("http://{}", mockito::SERVER_ADDRESS), "testuser", "test1234"); - let _res = z.abconfig().fetch().unwrap(); + let m = default_mock("GET", "/api/z/1.0/abconfig"); + let _res = client().abconfig().fetch().unwrap(); m.assert(); } #[test] fn fetch_privacy_groups() { - let m = mock("GET", "/api/z/1.0/group") - .match_header("Authorization", Matcher::Regex(r"Basic \w+".into())) - .with_status(200) - .with_header("content-type", "application/json") - .with_body("{}") - .create(); - - let z = zotapi::client(&format!("http://{}", mockito::SERVER_ADDRESS), "testuser", "test1234"); - let _res = z.group().fetch().unwrap(); + let m = default_mock("GET", "/api/z/1.0/group"); + let _res = client().group().fetch().unwrap(); m.assert(); } @@ -264,8 +217,7 @@ fn fetch_members_of_group_by_group_id() { .with_body("{}") .create(); - let z = zotapi::client(&format!("http://{}", mockito::SERVER_ADDRESS), "testuser", "test1234"); - let _res = z.group_members().by_group_id(42).fetch().unwrap(); + let _res = client().group_members().by_group_id(42).fetch().unwrap(); m.assert(); } @@ -279,7 +231,6 @@ fn fetch_members_of_group_by_group_name() { .with_body("{}") .create(); - let z = zotapi::client(&format!("http://{}", mockito::SERVER_ADDRESS), "testuser", "test1234"); - let _res = z.group_members().by_group_name("Friends of pain").fetch().unwrap(); + let _res = client().group_members().by_group_name("Friends of pain").fetch().unwrap(); m.assert(); } -- cgit v1.2.3