motorcortex-rust 0.5.0

Motorcortex Rust: a Rust client for the Motorcortex Core real-time control system (async + blocking).
Documentation
//! login / logout cycle on the new `core::Request`.

use motorcortex_rust::core::Request;
use motorcortex_rust::{ConnectionOptions, StatusCode};

use crate::{CERT_PATH, URL_REQ};

#[tokio::test]
async fn test_async_login_logout_cycle() {
    let req = Request::new();
    let opts = ConnectionOptions::new(CERT_PATH.to_string(), 5000, 5000);
    req.connect(URL_REQ, opts).await.expect("connect");

    // The vendored test_server runs with "Login": "disable" — any
    // credentials succeed. Pin whatever status the server returns as
    // long as login/logout don't error at the transport layer.
    let login_status = req
        .login("root", "vectioneer")
        .await
        .expect("login RPC completes");
    assert!(
        matches!(login_status, StatusCode::Ok | StatusCode::ReadOnlyMode),
        "unexpected login status: {login_status:?}"
    );

    let logout_status = req.logout().await.expect("logout RPC completes");
    assert_eq!(logout_status, StatusCode::Ok);

    req.disconnect().await.expect("disconnect");
}