From 3c59f9494f6b3cf9c8f9fb6cca0580d053329cf0 Mon Sep 17 00:00:00 2001 From: Justin Wernick Date: Thu, 30 Mar 2023 00:03:59 +0200 Subject: Update path restrictions to allow shared repos --- tests/server_shell.rs | 51 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 3 deletions(-) (limited to 'tests') diff --git a/tests/server_shell.rs b/tests/server_shell.rs index a22b732..d1453b1 100644 --- a/tests/server_shell.rs +++ b/tests/server_shell.rs @@ -140,6 +140,23 @@ fn expect_prompt(p: &mut PtySession) -> Result<()> { fn make_new_repo(c: &TestContext, repo_name: &str) -> Result<()> { let mut p = connect_to_ssh_server_interactively(&c)?; p.send_line(&format!("git-init {}", repo_name))?; + p.exp_string(&format!( + "Successfully created \"git/shukkie/{}.git\"", + repo_name + ))?; + expect_prompt(&mut p)?; + p.send_line("exit")?; + p.exp_eof()?; + Ok(()) +} + +fn make_new_shared_repo(c: &TestContext, group: &str, repo_name: &str) -> Result<()> { + let mut p = connect_to_ssh_server_interactively(&c)?; + p.send_line(&format!("git-init --group {} {}", group, repo_name))?; + p.exp_string(&format!( + "Successfully created \"git/{}/{}.git\"", + group, repo_name + ))?; expect_prompt(&mut p)?; p.send_line("exit")?; p.exp_eof()?; @@ -165,10 +182,14 @@ fn clone_git_repo(c: &TestContext, path: &str) -> Assert { .assert() } -fn clone_git_repo_relative_path(c: &TestContext, repo_name: &str) -> Assert { +fn clone_git_repo_relative_personal_path(c: &TestContext, repo_name: &str) -> Assert { clone_git_repo(c, &format!("/~/git/shukkie/{}.git", repo_name)) } +fn clone_git_repo_relative_shared_path(c: &TestContext, group: &str, repo_name: &str) -> Assert { + clone_git_repo(c, &format!("/~/git/{}/{}.git", group, repo_name)) +} + fn push_git_repo(c: &TestContext, repo_name: &str) -> Assert { let repo_dir = c.workdir.as_ref().join(repo_name); Command::new("git") @@ -204,7 +225,7 @@ fn git_clone_works_with_an_empty_repo() -> Result<()> { let c = spawn_ssh_server()?; let repo_name = "my-new-clonable-repo"; make_new_repo(&c, repo_name)?; - clone_git_repo_relative_path(&c, repo_name).success(); + clone_git_repo_relative_personal_path(&c, repo_name).success(); Ok(()) } @@ -214,7 +235,31 @@ fn git_push_works() -> Result<()> { let c = spawn_ssh_server()?; let repo_name = "my-new-pushable-repo"; make_new_repo(&c, repo_name)?; - clone_git_repo_relative_path(&c, repo_name).success(); + clone_git_repo_relative_personal_path(&c, repo_name).success(); + commit_dummy_content(&c, repo_name)?; + push_git_repo(&c, repo_name).success(); + + Ok(()) +} + +#[test] +fn git_clone_works_with_an_empty_shared_repo() -> Result<()> { + let c = spawn_ssh_server()?; + let repo_name = "my-new-clonable-repo"; + let group = "shukkies-company"; + make_new_shared_repo(&c, group, repo_name)?; + clone_git_repo_relative_shared_path(&c, group, repo_name).success(); + + Ok(()) +} + +#[test] +fn git_push_works_with_shared_repo() -> Result<()> { + let c = spawn_ssh_server()?; + let repo_name = "my-new-pushable-repo"; + let group = "shukkies-company"; + make_new_shared_repo(&c, group, repo_name)?; + clone_git_repo_relative_shared_path(&c, group, repo_name).success(); commit_dummy_content(&c, repo_name)?; push_git_repo(&c, repo_name).success(); -- cgit v1.2.3