signer-daemon 0.3.1

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() -> anyhow::Result<()> {
  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() -> anyhow::Result<()> {
  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(())
}