bodhi 2.2.0

bodhi REST API client
Documentation
use super::bodhi_init;

use crate::error::QueryError;
use crate::{FedoraRelease, Override, OverrideNVRQuery, OverrideQuery};

#[tokio::test]
async fn query_sanity_packages() {
    let bodhi = bodhi_init().await;

    let rs_overs: Vec<Override> = bodhi
        .paginated_request(&OverrideQuery::new().packages(&["rust"]))
        .await
        .unwrap();
    let go_overs: Vec<Override> = bodhi
        .paginated_request(&OverrideQuery::new().packages(&["golang"]))
        .await
        .unwrap();

    let both_overs: Vec<Override> = bodhi
        .paginated_request(&OverrideQuery::new().packages(&["rust", "golang"]))
        .await
        .unwrap();

    assert_eq!(both_overs.len(), rs_overs.len() + go_overs.len())
}

#[tokio::test]
async fn query_sanity_releases() {
    let bodhi = bodhi_init().await;

    let f31 = || FedoraRelease::try_from("F31").unwrap();
    let f32 = || FedoraRelease::try_from("F32").unwrap();

    let f31_overs: Vec<Override> = bodhi
        .paginated_request(&OverrideQuery::new().releases(&[f31()]))
        .await
        .unwrap();
    let f32_overs: Vec<Override> = bodhi
        .paginated_request(&OverrideQuery::new().releases(&[f32()]))
        .await
        .unwrap();

    let both_overs: Vec<Override> = bodhi
        .paginated_request(&OverrideQuery::new().releases(&[f31(), f32()]))
        .await
        .unwrap();

    assert_eq!(both_overs.len(), f31_overs.len() + f32_overs.len())
}

#[tokio::test]
async fn query_sanity_users() {
    let bodhi = bodhi_init().await;

    let overs_one: Vec<Override> = bodhi
        .paginated_request(&OverrideQuery::new().users(&["gil"]))
        .await
        .unwrap();
    let overs_two: Vec<Override> = bodhi
        .paginated_request(&OverrideQuery::new().users(&["lef"]))
        .await
        .unwrap();

    let both_overs: Vec<Override> = bodhi
        .paginated_request(&OverrideQuery::new().users(&["gil", "lef"]))
        .await
        .unwrap();

    assert_eq!(both_overs.len(), overs_one.len() + overs_two.len())
}

#[tokio::test]
async fn nvr_query_ok() {
    let bodhi = bodhi_init().await;

    let over_ride = bodhi.request(&OverrideNVRQuery::new("rust-1.34.2-1.fc30")).await;

    assert!(over_ride.is_ok());
}

#[tokio::test]
async fn nvr_query_err() {
    let bodhi = bodhi_init().await;

    let over_ride = bodhi.request(&OverrideNVRQuery::new("syncthing-1.1.3-1.fc30")).await;

    assert!(matches!(over_ride, Err(QueryError::NotFound)));
}