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(())
}