nethsm 0.10.0

A high-level library to interact with the API of a Nitrokey NetHSM
Documentation
//! Tests of NetHSM namespaces.

use nethsm::NetHsm;
use nethsm::test::{NetHsmImage, nethsm_with_users};
use rstest::rstest;
use rustainers::Container;
use testresult::TestResult;

#[rstest]
#[tokio::test]
async fn namespace_lifecycle(
    #[future] nethsm_with_users: TestResult<(NetHsm, Container<NetHsmImage>)>,
) -> TestResult {
    let (nethsm, _container) = nethsm_with_users.await?;
    let namespace_test = "namespacetest";

    println!("Retrieving namespaces for operational device...");
    let init_ns_len = nethsm.get_namespaces()?.len();
    println!("Namespaces: {:?}", nethsm.get_namespaces()?);

    println!("Adding namespace {namespace_test}...");
    nethsm.add_namespace(&namespace_test.parse()?)?;
    let add_ns_len = nethsm.get_namespaces()?.len();

    println!("Retrieving namespaces after adding namespace...");
    println!("Namespaces: {:?}", nethsm.get_namespaces());
    assert!(init_ns_len < add_ns_len);

    println!("Deleting namespace {namespace_test}...");
    nethsm.delete_namespace(&namespace_test.parse()?)?;
    let end_ns_len = nethsm.get_namespaces()?.len();
    assert_eq!(init_ns_len, end_ns_len);

    Ok(())
}