From 6ca0b5368a53e9edd6d9a99fa53b15ef96bff327 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Sat, 9 Nov 2024 16:18:46 +0100 Subject: [PATCH] `nodeinfo`: Add more tests --- acrate-nodeinfo/tests/discover_test.rs | 85 +++++++++++++++++++------- 1 file changed, 63 insertions(+), 22 deletions(-) diff --git a/acrate-nodeinfo/tests/discover_test.rs b/acrate-nodeinfo/tests/discover_test.rs index 716e014..08df112 100644 --- a/acrate-nodeinfo/tests/discover_test.rs +++ b/acrate-nodeinfo/tests/discover_test.rs @@ -1,26 +1,67 @@ -#![allow(non_snake_case)] - -use acrate_nodeinfo::*; - - -#[tokio::test] -async fn discover_hostmeta__junimo_party() { - let client = reqwest::Client::new(); - let base: reqwest::Url = "https://junimo.party".parse() - .expect("a valid URL"); - - HostMetaDocument::discover_hostmeta(&client, base) - .await - .expect("host-meta discovery to succeed"); +fn make_client() -> reqwest::Client { + let crate_name = env!("CARGO_PKG_NAME"); + let crate_version = env!("CARGO_PKG_VERSION"); + let crate_repository = env!("CARGO_PKG_REPOSITORY"); + let user_agent = format!("{crate_name}/{crate_version} ({crate_repository})"); + + reqwest::Client::builder() + .user_agent(user_agent) + .build() + .expect("reqwest client to build") } -#[tokio::test] -async fn discover_nodeinfo__junimo_party() { - let client = reqwest::Client::new(); - let base: reqwest::Url = "https://junimo.party".parse() - .expect("a valid URL"); +macro_rules! test { + ($id:ident, $url:literal) => { + test!($id, $url,); + }; + ($id:ident, $url:literal, $($tag:meta),*) => { + mod $id { + use acrate_nodeinfo::*; + use super::*; - HostMetaDocument::discover_nodeinfo(&client, base) - .await - .expect("nodeinfo discovery to succeed"); + #[tokio::test] + $(#[$tag])* + async fn test_hostmeta() { + let client = make_client(); + + let base: reqwest::Url = $url.parse() + .expect("a valid URL"); + + let doc = HostMetaDocument::discover_hostmeta(&client, base) + .await + .expect("host-meta discovery to succeed"); + + println!("{doc:#?}"); + } + + #[tokio::test] + $(#[$tag])* + async fn test_nodeinfo() { + let client = make_client(); + + let base: reqwest::Url = $url.parse() + .expect("a valid URL"); + + let doc = HostMetaDocument::discover_nodeinfo(&client, base) + .await + .expect("host-meta discovery to succeed"); + + println!("{doc:#?}"); + } + } + }; } + +test!(akkoma, "https://junimo.party"); + +test!(mastodon, "https://mastodon.social"); + +test!(misskey, "https://misskey.io"); + +test!(iceshrimpnet, "https://ice.frieren.quest"); + +test!(gotosocial, "https://alpha.polymaths.social"); + +test!(bridgyfed, "https://fed.brid.gy", ignore = "Returns application/jrd+json"); + +test!(threads, "https://threads.net", ignore = "Not implemented on their end");