drupal_kit 0.3.3

Flexible Drupal HTTP client supporting a variety of popular contrib modules
Documentation
use drupal_kit::auth::BearerAuthStrategy;
use drupal_kit::http_client::HttpClient;
use drupal_kit::{auth::BasicAuthStrategy, Drupalkit};
use http::Method;

#[tokio::test]
async fn test_basic_auth() {
    let mut server = mockito::Server::new_async().await;

    let username = "mustermann1212";
    let password = "abcdef12!";

    let mock = server
        .mock("GET", "/some-path")
        .with_status(200)
        .with_body("world")
        .match_header("Authorization", "Basic bXVzdGVybWFubjEyMTI6YWJjZGVmMTIh")
        .create_async()
        .await;

    let url = server.url();

    #[cfg(not(feature = "consumer"))]
    let mut client = Drupalkit::new(&url);

    #[cfg(feature = "consumer")]
    let mut client = Drupalkit::new(&url, None);

    let auth_strategy = BasicAuthStrategy::new(username, Some(password));
    client.set_auth_strategy(auth_strategy);

    let res = client
        .request(Method::GET, "/some-path", "", vec![])
        .await
        .expect("request must not fail");

    mock.assert_async().await;

    assert!(res.status().is_success());

    let text = res.text().await.expect("must get body");
    assert_eq!("world", text);
}

#[tokio::test]
async fn test_bearer_auth() {
    let mut server = mockito::Server::new_async().await;

    let token = "abc123";

    let mock = server
        .mock("GET", "/some-path")
        .with_status(200)
        .with_body("world")
        .match_header("Authorization", "Bearer abc123")
        .create_async()
        .await;

    let url = server.url();

    #[cfg(not(feature = "consumer"))]
    let mut client = Drupalkit::new(&url);

    #[cfg(feature = "consumer")]
    let mut client = Drupalkit::new(&url, None);

    let auth_strategy = BearerAuthStrategy::new(token);
    client.set_auth_strategy(auth_strategy);

    let res = client
        .request(Method::GET, "/some-path", "", vec![])
        .await
        .expect("request must not fail");

    mock.assert_async().await;

    assert!(res.status().is_success());

    let text = res.text().await.expect("must get body");
    assert_eq!("world", text);
}