Add tests for common scenarios that should be detected/handled by the
git-serve script.

Signed-off-by: Lukas Fleischer <[email protected]>
---
 git-interface/test/setup.sh       | 19 ++++++++++--
 git-interface/test/t0002-serve.sh | 62 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 79 insertions(+), 2 deletions(-)

diff --git a/git-interface/test/setup.sh b/git-interface/test/setup.sh
index 4512978..cb1e250 100644
--- a/git-interface/test/setup.sh
+++ b/git-interface/test/setup.sh
@@ -29,8 +29,8 @@ ssh-options = restrict
 [serve]
 repo-path = ./aur.git/
 repo-regex = [a-z0-9][a-z0-9.+_-]*$
-git-shell-cmd = /usr/bin/git-shell
-git-update-cmd = /srv/http/aurweb/git-interface/git-update.py
+git-shell-cmd = ./git-shell.sh
+git-update-cmd = ./update.sh
 ssh-cmdline = ssh [email protected]
 
 [update]
@@ -42,6 +42,21 @@ cat >notify.sh <<-EOF
 EOF
 chmod +x notify.sh
 
+cat >git-shell.sh <<-\EOF
+#!/bin/sh
+echo $AUR_USER
+echo $AUR_PKGBASE
+echo $GIT_NAMESPACE
+EOF
+chmod +x git-shell.sh
+
+cat >update.sh <<-\EOF
+#!/bin/sh
+echo $AUR_USER
+echo $AUR_PKGBASE
+EOF
+chmod +x update.sh
+
 AUR_CONFIG=config
 export AUR_CONFIG
 
diff --git a/git-interface/test/t0002-serve.sh 
b/git-interface/test/t0002-serve.sh
index 7e17bcb..f36f1d8 100755
--- a/git-interface/test/t0002-serve.sh
+++ b/git-interface/test/t0002-serve.sh
@@ -15,6 +15,8 @@ test_expect_success 'Test help.' '
 test_expect_success 'Test setup-repo and list-repos.' '
        SSH_ORIGINAL_COMMAND="setup-repo foobar" AUR_USER=user \
        "$GIT_SERVE" 2>&1 &&
+       SSH_ORIGINAL_COMMAND="setup-repo foobar2" AUR_USER=tu \
+       "$GIT_SERVE" 2>&1 &&
        cat >expected <<-EOF &&
        *foobar
        EOF
@@ -23,4 +25,64 @@ test_expect_success 'Test setup-repo and list-repos.' '
        test_cmp expected actual
 '
 
+test_expect_success 'Test git-receive-pack.' '
+       cat >expected <<-EOF &&
+       user
+       foobar
+       foobar
+       EOF
+       SSH_ORIGINAL_COMMAND="git-receive-pack /foobar.git/" \
+       AUR_USER=user AUR_PRIVILEGED=0 \
+       "$GIT_SERVE" 2>&1 >actual &&
+       test_cmp expected actual
+'
+
+test_expect_success 'Test git-receive-pack with an invalid repository name.' '
+       SSH_ORIGINAL_COMMAND="git-receive-pack /!.git/" \
+       AUR_USER=user AUR_PRIVILEGED=0 \
+       test_must_fail "$GIT_SERVE" 2>&1 >actual
+'
+
+test_expect_success "Test git-upload-pack." '
+       cat >expected <<-EOF &&
+       user
+       foobar
+       foobar
+       EOF
+       SSH_ORIGINAL_COMMAND="git-upload-pack /foobar.git/" \
+       AUR_USER=user AUR_PRIVILEGED=0 \
+       "$GIT_SERVE" 2>&1 >actual &&
+       test_cmp expected actual
+'
+
+test_expect_success "Try to pull from someone else's repository." '
+       cat >expected <<-EOF &&
+       user
+       foobar2
+       foobar2
+       EOF
+       SSH_ORIGINAL_COMMAND="git-upload-pack /foobar2.git/" \
+       AUR_USER=user AUR_PRIVILEGED=0 \
+       "$GIT_SERVE" 2>&1 >actual &&
+       test_cmp expected actual
+'
+
+test_expect_success "Try to push to someone else's repository." '
+       SSH_ORIGINAL_COMMAND="git-receive-pack /foobar2.git/" \
+       AUR_USER=user AUR_PRIVILEGED=0 \
+       test_must_fail "$GIT_SERVE" 2>&1
+'
+
+test_expect_success "Try to push to someone else's repository as Trusted 
User." '
+       cat >expected <<-EOF &&
+       tu
+       foobar
+       foobar
+       EOF
+       SSH_ORIGINAL_COMMAND="git-receive-pack /foobar.git/" \
+       AUR_USER=tu AUR_PRIVILEGED=1 \
+       "$GIT_SERVE" 2>&1 >actual &&
+       test_cmp expected actual
+'
+
 test_done
-- 
2.9.2

Reply via email to