summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJustin Wernick <justin@worthe-it.co.za>2023-03-30 00:03:59 +0200
committerJustin Wernick <justin@worthe-it.co.za>2023-03-30 00:03:59 +0200
commit3c59f9494f6b3cf9c8f9fb6cca0580d053329cf0 (patch)
treed5c80b5cdf79c8e377c085de5bde2af6abbecc7c /tests
parent745cd8ab27480a3cf516a2684db2c4fd7cf2144c (diff)
Update path restrictions to allow shared repos
Diffstat (limited to 'tests')
-rw-r--r--tests/server_shell.rs51
1 files changed, 48 insertions, 3 deletions
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();