add test for storage add online

This commit is contained in:
qwjyh 2024-03-13 04:25:38 +09:00
parent 1aa74acf31
commit d212d32430
2 changed files with 65 additions and 5 deletions

View file

@ -6,7 +6,7 @@
- [x] ssh-agent - [x] ssh-agent
- [x] specify key - [x] specify key
- [ ] write test for storage subcommand - [ ] write test for storage subcommand
- [ ] storage add online - [x] storage add online
- [ ] storage add directory - [ ] storage add directory
- [ ] storage list - [ ] storage list
- [ ] add storage remove command - [ ] add storage remove command

View file

@ -1,6 +1,3 @@
use assert_cmd::prelude::*;
use assert_fs::prelude::*;
mod cmd_init { mod cmd_init {
use anyhow::{Ok, Result}; use anyhow::{Ok, Result};
use assert_cmd::Command; use assert_cmd::Command;
@ -25,7 +22,7 @@ mod cmd_init {
} }
#[test] #[test]
fn init_with_existing_repo() -> Result<()> { fn two_devices_with_same_name() -> Result<()> {
// 1st device // 1st device
let config_dir_1 = assert_fs::TempDir::new()?; let config_dir_1 = assert_fs::TempDir::new()?;
let mut cmd1 = Command::cargo_bin("xdbm")?; let mut cmd1 = Command::cargo_bin("xdbm")?;
@ -38,6 +35,46 @@ mod cmd_init {
// bare-repo // bare-repo
let bare_repo_dir = assert_fs::TempDir::new()?; let bare_repo_dir = assert_fs::TempDir::new()?;
let bare_repo = Repository::init_bare(&bare_repo_dir)?; let bare_repo = Repository::init_bare(&bare_repo_dir)?;
// push to bare repository
let repo_1 = Repository::open(&config_dir_1)?;
let upstream_name = "remote";
let mut repo_1_remote =
repo_1.remote(upstream_name, &bare_repo_dir.path().to_str().unwrap())?;
repo_1_remote.push(&["refs/heads/main"], None)?;
trace!("bare repo {:?}", bare_repo_dir.display());
println!("{:?}", bare_repo_dir.read_dir()?);
// set up upstream branch
let (mut repo_1_branch, _branch_type) = repo_1.branches(None)?.next().unwrap()?;
repo_1_branch.set_upstream(Some(format!("{}/{}", upstream_name, "main").as_str()))?;
// 2nd device
let config_dir_2 = assert_fs::TempDir::new()?;
let mut cmd2 = Command::cargo_bin("xdbm")?;
cmd2.arg("-c")
.arg(config_dir_2.path())
.arg("init")
.arg("first")
.arg("-r")
.arg(bare_repo_dir.path());
cmd2.assert().failure();
Ok(())
}
#[test]
fn two_devices() -> Result<()> {
// 1st device
let config_dir_1 = assert_fs::TempDir::new()?;
let mut cmd1 = Command::cargo_bin("xdbm")?;
cmd1.arg("-c")
.arg(config_dir_1.path())
.arg("init")
.arg("first");
cmd1.assert().success().stdout(predicate::str::contains(""));
// bare-repo
let bare_repo_dir = assert_fs::TempDir::new()?;
let bare_repo = Repository::init_bare(&bare_repo_dir)?;
// push to bare repository
let repo_1 = Repository::open(&config_dir_1)?; let repo_1 = Repository::open(&config_dir_1)?;
let upstream_name = "remote"; let upstream_name = "remote";
let mut repo_1_remote = let mut repo_1_remote =
@ -70,6 +107,29 @@ mod cmd_init {
assert!( assert!(
std::fs::read_to_string(config_dir_2.path().join("devices.yml"))?.contains("second") std::fs::read_to_string(config_dir_2.path().join("devices.yml"))?.contains("second")
); );
// Add storage
let sample_storage = assert_fs::TempDir::new()?;
let mut cmd_add_storage_1 = Command::cargo_bin("xdbm")?;
cmd_add_storage_1
.arg("-c")
.arg(config_dir_1.path())
.arg("storage")
.arg("add")
.arg("online")
.arg("--provider")
.arg("google")
.arg("--capacity")
.arg("15000000000")
.arg("--alias")
.arg("gdrive")
.arg("gdrive1")
.arg(sample_storage.path());
cmd_add_storage_1
.assert()
.success()
.stdout(predicate::str::contains(""));
Ok(()) Ok(())
} }
} }