use paypal_rs::{api::orders::*, data::orders::*}; use paypal_rs::{data::common::Currency, Client, PaypalEnv}; use paypal_rs::{AccessToken, HeaderParams}; use wiremock::matchers::{basic_auth, body_string, header, method, path, BodyExactMatcher, HeaderExactMatcher}; use wiremock::{ matchers::{BasicAuthMatcher, BearerTokenMatcher}, Mock, MockServer, ResponseTemplate, }; fn create_client(url: &str) -> Client { Client::new("clientid".to_string(), "secret".to_string(), PaypalEnv::Mock(url.to_string())) } #[tokio::test] async fn test_auth() -> color_eyre::Result<()> { color_eyre::install()?; let mock_server = MockServer::start().await; let access_token: serde_json::Value = serde_json::from_str(include_str!("resources/oauth_token.json")).unwrap(); Mock::given(method("POST")) .and(path("/v1/oauth2/token")) .and(basic_auth("clientid", "secret")) .and(header("Content-Type", "x-www-form-urlencoded")) .and(body_string("grant_type=client_credentials")) .respond_with(ResponseTemplate::new(200).set_body_json(&access_token)) .mount(&mock_server) .await; let mut client = create_client(&mock_server.uri()); client.get_access_token().await?; Ok(()) }