signer-daemon 0.3.2

Signer daemon package.
Documentation
use signer_core::{SignerFsStore, SignerUser, SignerUserPublic};

use crate::{SignerDaemon, model::viewobject::UserVO, signer_remote::SignerRemote};

fn create_test_signer_user() -> SignerUser {
    SignerUser {
        prv_key: format!("y2uE8WoJYpA32KdwPDGaqr7vjzuylVc9yvmirXNwEYI="),
        public: SignerUserPublic {
            pub_key: format!("lOXR0P3DMq3v_k7lOiKYYR9LqfvRdWG4MVIVolWjtU0="),
            username: format!("alice"),
            ..Default::default()
        },
    }
}

#[tokio::test]
async fn test_push_crdt_event() -> crate::DaemonResult<()> {
    let signer = create_test_signer_user();

    let daemon = SignerDaemon::from_memory(&signer, "test").await?;
    {
        let daemon = &mut *daemon.write().await;
        daemon
            .store
            .user
            .put(&mut daemon.state, UserVO::from_signer_user(signer).await?)
            .await?;
    }
    let remote = SignerRemote::new("http://localhost:8080");
    remote.push_crdt_event(&mut *daemon.write().await).await?;

    Ok(())
}

#[tokio::test]
async fn test_pull_crdt_event() -> crate::DaemonResult<()> {
    let signer = create_test_signer_user();
    let sfs = SignerFsStore::new("./testdir".to_string());
    sfs.save_signer_user(&signer)?;

    let daemon = SignerDaemon::from_sfs(&signer, &sfs).await?;

    let remote = SignerRemote::new("http://localhost:8080");
    remote.pull_crdt_event(&mut *daemon.write().await).await?;

    let ul = daemon.read().await.store.user.list().await?;
    assert!(ul.len() > 0);

    Ok(())
}