mirror of
https://github.com/Nutomic/ibis.git
synced 2024-11-25 11:21:10 +00:00
add tests/common file
This commit is contained in:
parent
5da26f78e4
commit
5b8d393918
2 changed files with 57 additions and 51 deletions
53
tests/common.rs
Normal file
53
tests/common.rs
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
use fediwiki::error::MyResult;
|
||||||
|
use once_cell::sync::Lazy;
|
||||||
|
use reqwest::Client;
|
||||||
|
use serde::de::Deserialize;
|
||||||
|
use serde::ser::Serialize;
|
||||||
|
use std::sync::Once;
|
||||||
|
use tracing::log::LevelFilter;
|
||||||
|
|
||||||
|
pub static CLIENT: Lazy<Client> = Lazy::new(|| Client::new());
|
||||||
|
|
||||||
|
pub fn setup() {
|
||||||
|
static INIT: Once = Once::new();
|
||||||
|
INIT.call_once(|| {
|
||||||
|
env_logger::builder()
|
||||||
|
.filter_level(LevelFilter::Warn)
|
||||||
|
.filter_module("activitypub_federation", LevelFilter::Info)
|
||||||
|
.filter_module("fediwiki", LevelFilter::Info)
|
||||||
|
.init();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn get<T>(hostname: &str, endpoint: &str) -> MyResult<T>
|
||||||
|
where
|
||||||
|
T: for<'de> Deserialize<'de>,
|
||||||
|
{
|
||||||
|
get_query(hostname, endpoint, None::<i32>).await
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn get_query<T, R>(hostname: &str, endpoint: &str, query: Option<R>) -> MyResult<T>
|
||||||
|
where
|
||||||
|
T: for<'de> Deserialize<'de>,
|
||||||
|
R: Serialize,
|
||||||
|
{
|
||||||
|
let mut res = CLIENT.get(format!("http://{}/api/v1/{}", hostname, endpoint));
|
||||||
|
if let Some(query) = query {
|
||||||
|
res = res.query(&query);
|
||||||
|
}
|
||||||
|
let alpha_instance: T = res.send().await?.json().await?;
|
||||||
|
Ok(alpha_instance)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn post<T: Serialize, R>(hostname: &str, endpoint: &str, form: &T) -> MyResult<R>
|
||||||
|
where
|
||||||
|
R: for<'de> Deserialize<'de>,
|
||||||
|
{
|
||||||
|
Ok(CLIENT
|
||||||
|
.post(format!("http://{}/api/v1/{}", hostname, endpoint))
|
||||||
|
.form(form)
|
||||||
|
.send()
|
||||||
|
.await?
|
||||||
|
.json()
|
||||||
|
.await?)
|
||||||
|
}
|
|
@ -1,31 +1,17 @@
|
||||||
extern crate fediwiki;
|
extern crate fediwiki;
|
||||||
|
|
||||||
|
mod common;
|
||||||
|
|
||||||
|
use crate::common::{get_query, post, setup, CLIENT};
|
||||||
|
use common::get;
|
||||||
use fediwiki::api::{CreateArticle, FollowInstance, GetArticle, ResolveObject};
|
use fediwiki::api::{CreateArticle, FollowInstance, GetArticle, ResolveObject};
|
||||||
use fediwiki::error::MyResult;
|
use fediwiki::error::MyResult;
|
||||||
use fediwiki::federation::objects::article::DbArticle;
|
use fediwiki::federation::objects::article::DbArticle;
|
||||||
use fediwiki::federation::objects::instance::DbInstance;
|
use fediwiki::federation::objects::instance::DbInstance;
|
||||||
use fediwiki::start;
|
use fediwiki::start;
|
||||||
use once_cell::sync::Lazy;
|
|
||||||
use reqwest::Client;
|
|
||||||
use serde::{Deserialize, Serialize};
|
|
||||||
use serial_test::serial;
|
use serial_test::serial;
|
||||||
use std::sync::Once;
|
|
||||||
use tracing::log::LevelFilter;
|
|
||||||
use url::Url;
|
use url::Url;
|
||||||
|
|
||||||
fn setup() {
|
|
||||||
static INIT: Once = Once::new();
|
|
||||||
INIT.call_once(|| {
|
|
||||||
env_logger::builder()
|
|
||||||
.filter_level(LevelFilter::Warn)
|
|
||||||
.filter_module("activitypub_federation", LevelFilter::Info)
|
|
||||||
.filter_module("fediwiki", LevelFilter::Info)
|
|
||||||
.init();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
static CLIENT: Lazy<Client> = Lazy::new(|| Client::new());
|
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
#[serial]
|
#[serial]
|
||||||
async fn test_create_and_read_article() -> MyResult<()> {
|
async fn test_create_and_read_article() -> MyResult<()> {
|
||||||
|
@ -111,36 +97,3 @@ async fn test_follow_instance() -> MyResult<()> {
|
||||||
handle_beta.abort();
|
handle_beta.abort();
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn get<T>(hostname: &str, endpoint: &str) -> MyResult<T>
|
|
||||||
where
|
|
||||||
T: for<'de> Deserialize<'de>,
|
|
||||||
{
|
|
||||||
get_query(hostname, endpoint, None::<i32>).await
|
|
||||||
}
|
|
||||||
|
|
||||||
async fn get_query<T, R>(hostname: &str, endpoint: &str, query: Option<R>) -> MyResult<T>
|
|
||||||
where
|
|
||||||
T: for<'de> Deserialize<'de>,
|
|
||||||
R: Serialize,
|
|
||||||
{
|
|
||||||
let mut res = CLIENT.get(format!("http://{}/api/v1/{}", hostname, endpoint));
|
|
||||||
if let Some(query) = query {
|
|
||||||
res = res.query(&query);
|
|
||||||
}
|
|
||||||
let alpha_instance: T = res.send().await?.json().await?;
|
|
||||||
Ok(alpha_instance)
|
|
||||||
}
|
|
||||||
|
|
||||||
async fn post<T: Serialize, R>(hostname: &str, endpoint: &str, form: &T) -> MyResult<R>
|
|
||||||
where
|
|
||||||
R: for<'de> Deserialize<'de>,
|
|
||||||
{
|
|
||||||
Ok(CLIENT
|
|
||||||
.post(format!("http://{}/api/v1/{}", hostname, endpoint))
|
|
||||||
.form(form)
|
|
||||||
.send()
|
|
||||||
.await?
|
|
||||||
.json()
|
|
||||||
.await?)
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue