diff options
Diffstat (limited to 'crates/env/env_test')
| -rw-r--r-- | crates/env/env_test/src/lib.rs | 3 | ||||
| -rw-r--r-- | crates/env/env_test/src/test_vault_setup_and_member_register.rs | 8 | ||||
| -rw-r--r-- | crates/env/env_test/src/test_virtual_file_creation_and_update.rs | 64 |
3 files changed, 58 insertions, 17 deletions
diff --git a/crates/env/env_test/src/lib.rs b/crates/env/env_test/src/lib.rs index 7c9fbcb..9ea3ecc 100644 --- a/crates/env/env_test/src/lib.rs +++ b/crates/env/env_test/src/lib.rs @@ -11,7 +11,7 @@ pub mod test_vault_setup_and_member_register; #[cfg(test)] pub mod test_virtual_file_creation_and_update; -pub async fn get_and_correct_test_dir(area: &str) -> Result<PathBuf, std::io::Error> { +pub async fn get_test_dir(area: &str) -> Result<PathBuf, std::io::Error> { let dir = current_dir()?.join(".temp").join("test").join(area); if !dir.exists() { std::fs::create_dir_all(&dir)?; @@ -20,6 +20,5 @@ pub async fn get_and_correct_test_dir(area: &str) -> Result<PathBuf, std::io::Er fs::remove_dir_all(&dir).await?; fs::create_dir_all(&dir).await?; } - set_current_dir(dir.clone())?; Ok(dir) } diff --git a/crates/env/env_test/src/test_vault_setup_and_member_register.rs b/crates/env/env_test/src/test_vault_setup_and_member_register.rs index 0b4800f..bea9342 100644 --- a/crates/env/env_test/src/test_vault_setup_and_member_register.rs +++ b/crates/env/env_test/src/test_vault_setup_and_member_register.rs @@ -12,11 +12,11 @@ use env::{ }, }; -use crate::get_and_correct_test_dir; +use crate::get_test_dir; #[tokio::test] async fn test_vault_setup_and_member_register() -> Result<(), std::io::Error> { - let dir = get_and_correct_test_dir("member_register").await?; + let dir = get_test_dir("member_register").await?; // Setup vault Vault::setup_vault(dir.clone()).await?; @@ -35,8 +35,8 @@ async fn test_vault_setup_and_member_register() -> Result<(), std::io::Error> { assert!(dir.join(SERVER_PATH_VIRTUAL_FILE_ROOT).exists()); // Get vault - let config = VaultConfig::read().await?; - let Some(vault) = Vault::init_current_dir(config) else { + let config = VaultConfig::read_from(dir.join(SERVER_FILE_VAULT)).await?; + let Some(vault) = Vault::init(config, &dir) else { return Err(Error::new(std::io::ErrorKind::NotFound, "Vault not found!")); }; diff --git a/crates/env/env_test/src/test_virtual_file_creation_and_update.rs b/crates/env/env_test/src/test_virtual_file_creation_and_update.rs index 4d22a23..efc06c9 100644 --- a/crates/env/env_test/src/test_virtual_file_creation_and_update.rs +++ b/crates/env/env_test/src/test_virtual_file_creation_and_update.rs @@ -1,9 +1,12 @@ use std::time::Duration; use cfg_file::config::ConfigFile; -use env::workspace::{ - member::Member, - vault::{Vault, config::VaultConfig, vitrual_file::VirtualFileVersionDesciption}, +use env::{ + constants::SERVER_FILE_VAULT, + workspace::{ + member::Member, + vault::{Vault, config::VaultConfig, vitrual_file::VirtualFileVersionDesciption}, + }, }; use tcp_connection::{ handle::{ClientHandle, ServerHandle}, @@ -15,25 +18,50 @@ use tokio::{ time::{sleep, timeout}, }; -use crate::get_and_correct_test_dir; +use crate::get_test_dir; struct VirtualFileCreateClientHandle; struct VirtualFileCreateServerHandle; impl ClientHandle<VirtualFileCreateServerHandle> for VirtualFileCreateClientHandle { fn process( - instance: tcp_connection::instance::ConnectionInstance, - ) -> impl Future<Output = ()> + Send + Sync { - async move {} + mut instance: tcp_connection::instance::ConnectionInstance, + ) -> impl Future<Output = ()> + Send { + async move { + let dir = get_test_dir("virtual_file_creation_and_update_2") + .await + .unwrap(); + // Create first test file for virtual file creation + let test_content_1 = b"Test file content for virtual file creation"; + let temp_file_path_1 = dir.join("test_virtual_file_1.txt"); + + tokio::fs::write(&temp_file_path_1, test_content_1) + .await + .unwrap(); + + // Send the first file to server for virtual file creation + instance.write_file(&temp_file_path_1).await.unwrap(); + + // Create second test file for virtual file update + let test_content_2 = b"Updated test file content for virtual file"; + let temp_file_path_2 = dir.join("test_virtual_file_2.txt"); + + tokio::fs::write(&temp_file_path_2, test_content_2) + .await + .unwrap(); + + // Send the second file to server for virtual file update + instance.write_file(&temp_file_path_2).await.unwrap(); + } } } impl ServerHandle<VirtualFileCreateClientHandle> for VirtualFileCreateServerHandle { fn process( mut instance: tcp_connection::instance::ConnectionInstance, - ) -> impl Future<Output = ()> + Send + Sync { + ) -> impl Future<Output = ()> + Send { async move { - let dir = get_and_correct_test_dir("virtual_file_creation_and_update") + let dir = get_test_dir("virtual_file_creation_and_update") .await .unwrap(); @@ -41,13 +69,21 @@ impl ServerHandle<VirtualFileCreateClientHandle> for VirtualFileCreateServerHand Vault::setup_vault(dir.clone()).await.unwrap(); // Read vault - let Some(vault) = Vault::init_current_dir(VaultConfig::read().await.unwrap()) else { + let Some(vault) = Vault::init( + VaultConfig::read_from(dir.join(SERVER_FILE_VAULT)) + .await + .unwrap(), + &dir, + ) else { panic!("No vault found!"); }; // Register member let member_id = "test_member"; - vault.register_member_to_vault(Member::new(member_id)).await; + vault + .register_member_to_vault(Member::new(member_id)) + .await + .unwrap(); // Create visual file let virtual_file_id = vault @@ -55,6 +91,12 @@ impl ServerHandle<VirtualFileCreateClientHandle> for VirtualFileCreateServerHand .await .unwrap(); + // Grant edit right to member + vault + .grant_virtual_file_edit_right(member_id.to_string(), virtual_file_id.clone()) + .await + .unwrap(); + // Update visual file vault .update_virtual_file_from_connection( |
