use signer_core::{SignerFsStore, SignerUser, SignerUserPublic};
use crate::{SignerDaemon, model::viewobject::OperLogVO};
fn create_test_signer_user() -> SignerUser {
SignerUser {
prv_key: format!("y2uE8WoJYpA32KdwPDGaqr7vjzuylVc9yvmirXNwEYI="),
public: SignerUserPublic {
pub_key: format!("lOXR0P3DMq3v_k7lOiKYYR9LqfvRdWG4MVIVolWjtU0="),
username: format!("alice"),
update_time: 0,
allow_endpoints: vec![],
},
}
}
#[tokio::test]
async fn test_push_crdt_event() -> anyhow::Result<()> {
let signer = create_test_signer_user();
let daemon = SignerDaemon::from_memory(&signer, "test").await?;
daemon
.put_oper_log(OperLogVO {
id: uuid::Uuid::new_v4().to_string(),
title: "Test crdt sync".to_string(),
content: "Test crdt sync content".to_string(),
level: "DEBUG".to_string(),
create_time: chrono::Utc::now().timestamp_millis(),
})
.await?;
daemon.crdt_push("http://localhost:8080/api/signer").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?;
daemon.crdt_pull("http://localhost:8080/api/signer").await?;
let ol = daemon.list_oper_log().await?;
assert!(ol.len() > 0);
Ok(())
}