roctokit 0.15.0

Github v3 Client interfaces
Documentation
#[cfg(not(target_arch = "wasm32"))]
use roctogen::api::{
    self, activity, gists, issues, licenses, meta, rate_limit, reactions, repos, search, users,
};

use roctogen::models;
#[cfg(any(feature = "reqwest", feature = "ureq", target_arch = "wasm32"))]
use roctokit::adapters::client;
use roctokit::auth::Auth;

use log::{debug, info};

#[cfg(all(not(target_arch = "wasm32"), not(feature = "reqwest")))]
#[test]
fn list_commits_sync_ok() {
    let auth = Auth::None;
    let client = client(&auth).expect("Cannot create client");
    let per_page = api::PerPage::new(1);

    let mut params: repos::ReposListCommitsParams = per_page.as_ref().into();
    params = params.author("fussybeaver").page(2);

    let req = repos::new(&client).list_commits("fussybeaver", "bollard", Some(params));

    assert!(req.is_ok());
}

#[cfg(all(not(target_arch = "wasm32"), not(feature = "reqwest")))]
#[test]
fn search_sync_ok() {
    let auth = Auth::None;
    let client = client(&auth).expect("Cannot create client");
    let search = search::new(&client);
    let opts = search::SearchReposParams::new().q("bollard");
    let req = search.repos(opts);

    assert!(req.is_ok());
}

#[cfg(all(not(target_arch = "wasm32"), not(feature = "reqwest")))]
#[test]
fn gists_sync_ok() {
    let auth = Auth::None;
    let client = client(&auth).expect("Cannot create client");
    let gists = gists::new(&client);
    let req = gists.list_public(Some(&api::PerPage::new(1)));

    assert!(req.is_ok());
}

#[cfg(all(not(target_arch = "wasm32"), not(feature = "reqwest")))]
#[test]
fn users_sync_ok() {
    let auth = Auth::None;
    let client = client(&auth).expect("Cannot create client");
    let users = users::new(&client);

    let req = users.list(Some(users::UsersListParams::new().per_page(1)));

    assert!(req.is_ok());

    let req = users.list_gpg_keys_for_user("fussybeaver", Some(&api::PerPage::new(1)));

    assert!(req.is_ok());
}

#[cfg(all(not(target_arch = "wasm32"), not(feature = "reqwest")))]
#[test]
fn meta_sync_ok() {
    let auth = Auth::None;
    let client = client(&auth).expect("Cannot create client");
    let meta = meta::new(&client);
    let req = meta.get();

    assert!(req.is_ok());
}

#[cfg(all(not(target_arch = "wasm32"), not(feature = "reqwest")))]
#[test]
fn issues_sync_ok() {
    let auth = Auth::None;
    let client = client(&auth).expect("Cannot create client");
    let issues = issues::new(&client);
    let per_page = api::PerPage::new(1);
    let req = issues.list_for_repo("fussybeaver", "bollard", Some(&per_page));

    assert!(req.is_ok());

    let req = issues.list_milestones("fussybeaver", "bollard", Some(&per_page));

    assert!(req.is_ok());

    let req = issues.list_labels_for_repo("fussybeaver", "bollard", Some(&per_page));

    assert!(req.is_ok());

    let req = issues.list_events_for_repo("fussybeaver", "bollard", Some(&per_page));

    assert!(req.is_ok());

    let req = issues.list_comments_for_repo("fussybeaver", "bollard", Some(&per_page));

    assert!(req.is_ok());
}

#[cfg(all(not(target_arch = "wasm32"), not(feature = "reqwest")))]
#[test]
fn license_sync_ok() {
    use roctogen::api::licenses::LicensesGetForRepoParams;

    let auth = Auth::None;
    let client = client(&auth).expect("Cannot create client");
    let license = licenses::new(&client);
    let req = license.get_for_repo("fussybeaver", "bollard", None::<LicensesGetForRepoParams>);

    assert!(req.is_ok());

    let req = license.get_all_commonly_used(None::<licenses::LicensesGetAllCommonlyUsedParams>);

    assert!(req.is_ok());

    let req = license.get("unlicense");

    assert!(req.is_ok());
}

#[cfg(all(not(target_arch = "wasm32"), not(feature = "reqwest")))]
#[test]
fn reactions_sync_ok() {
    let auth = Auth::None;
    let client = client(&auth).expect("Cannot create client");
    let per_page = api::PerPage::new(1);
    let reactions = reactions::new(&client);
    let req = reactions.list_for_issue("fussybeaver", "bollard", 86, Some(&per_page));

    assert!(req.is_ok());
}

#[cfg(all(not(target_arch = "wasm32"), not(feature = "reqwest")))]
#[test]
fn actions_sync_ok() {
    let auth = Auth::None;
    let client = client(&auth).expect("Cannot create client");
    let per_page = api::PerPage::new(1);
    let activity = activity::new(&client);
    let req = activity.list_watchers_for_repo("fussybeaver", "bollard", Some(&per_page));

    assert!(req.is_ok());

    let req = activity.list_repos_watched_by_user("fussybeaver", Some(&per_page));

    assert!(req.is_ok());

    let req = activity.list_repos_starred_by_user("fussybeaver", Some(&per_page));

    assert!(req.is_ok());

    let req = activity.list_repo_events("fussybeaver", "bollard", Some(&per_page));

    assert!(req.is_ok());
}

#[cfg(all(not(target_arch = "wasm32"), not(feature = "reqwest")))]
#[test]
fn rate_limit_sync_ok() {
    let auth = Auth::None;
    let client = client(&auth).expect("Cannot create client");
    let rate_limit = rate_limit::new(&client);
    let req = rate_limit.get();

    match &req {
        Ok(x) => {
            info!("{:#?}", x);
        }
        Err(x) => {
            debug!("{:#?}", x);
            panic!();
        }
    };

    assert!(req.is_ok());
}

#[cfg(all(not(target_arch = "wasm32"), not(feature = "reqwest")))]
#[test]
fn post_sync_fail() {
    let auth = Auth::None;
    let client = client(&auth).expect("Cannot create client");

    let body = models::PostReposAddUserAccessRestrictions {
        users: vec!["fussybeaver".to_string()].into(),
    };

    let req =
        repos::new(&client).add_user_access_restrictions("fussybeaver", "bollard", "master", body);
    match &req {
        Ok(_) => {}
        Err(roctokit::adapters::AdapterError::Endpoint {
            description,
            status_code: 404,
            ..
        }) => {
            debug!("{}", description);
        }
        Err(_) => {
            panic!();
        }
    };

    assert!(req.is_err());
}