maicoin_max 2.1.1

MaiCoin Max API client for Rust
Documentation
mod deposit;
mod misc;
mod order;
mod trade;
mod withdrawal;

pub use deposit::*;
pub use misc::*;
pub use order::*;
pub use trade::*;
pub use withdrawal::*;

#[cfg(test)]
mod tests {
    use super::*;
    use crate::error::Error;
    use crate::util::test_util::*;
    use crate::Credentials;
    use surf::Client as HTTPClient;
    use surf_vcr::VcrMode;

    async fn create_client(cassette: &'static str) -> HTTPClient {
        let mut path_builder = test_resource_path();
        path_builder.push("rest");
        path_builder.push("auth");
        path_builder.push(cassette);
        create_test_recording_client(VcrMode::Replay, path_builder.as_path().to_str().unwrap())
            .await
    }

    #[async_std::test]
    async fn auth_success() {
        let params = GetProfile {};
        let resp = create_client("auth_success.yaml")
            .await
            .send(params.to_request(&TEST_CREDENTIALS))
            .await
            .expect("Error while sending request");
        let result = GetProfile::read_response(resp.into()).await;
        assert!(result.is_ok())
    }

    #[async_std::test]
    async fn auth_fail() {
        let empty_credentials = Credentials::new(String::new(), String::new());
        let params = GetProfile {};
        let resp = create_client("auth_fail.yaml")
            .await
            .send(params.to_request(&empty_credentials))
            .await
            .expect("Error while sending request");
        if let Err(Error::RestApi(code, msg)) = GetProfile::read_response(resp.into()).await {
            assert_eq!(code, 2008);
            assert_eq!(msg, String::from("The access key does not exist."));
        } else {
            panic!("Authentication must fail with empty credentials.");
        }
    }
}