44 lines
1.4 KiB
Rust
44 lines
1.4 KiB
Rust
use forgejo_api::Forgejo;
|
|
use eyre::{eyre, ensure};
|
|
|
|
#[tokio::test]
|
|
async fn ci() -> eyre::Result<()> {
|
|
let url = url::Url::parse(&std::env::var("FORGEJO_API_CI_INSTANCE_URL")?)?;
|
|
let token = std::env::var("FORGEJO_API_CI_TOKEN")?;
|
|
let api = Forgejo::new(&token, url)?;
|
|
|
|
let mut results = Vec::new();
|
|
|
|
results.push(user(&api).await.map_err(|e| eyre!("user error: {e}")));
|
|
|
|
let mut errors = 0;
|
|
for res in results.into_iter().filter_map(Result::err) {
|
|
errors += 1;
|
|
println!("{res}");
|
|
}
|
|
if errors > 0 {
|
|
eyre::bail!("test failed");
|
|
}
|
|
|
|
Ok(())
|
|
}
|
|
|
|
async fn user(api: &forgejo_api::Forgejo) -> eyre::Result<()> {
|
|
let myself = api.myself().await?;
|
|
ensure!(myself.is_admin, "user should be admin");
|
|
ensure!(myself.login == "TestingAdmin", "user should be named \"TestingAdmin\"");
|
|
|
|
let myself_indirect = api
|
|
.get_user("TestingAdmin")
|
|
.await?
|
|
.ok_or_else(|| eyre!("\"TestingAdmin\" not found, but should have been."))?;
|
|
ensure!(myself == myself_indirect, "result of `myself` does not match result of `get_user`");
|
|
|
|
let following = api.get_following("TestingAdmin").await?;
|
|
ensure!(following == Some(Vec::new()), "following list not empty");
|
|
let followers = api.get_followers("TestingAdmin").await?;
|
|
ensure!(followers == Some(Vec::new()), "follower list not empty");
|
|
|
|
Ok(())
|
|
}
|