summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/setup.sh18
-rwxr-xr-xtest/t1200-git-serve.sh161
-rwxr-xr-xtest/t2500-notify.sh33
3 files changed, 207 insertions, 5 deletions
diff --git a/test/setup.sh b/test/setup.sh
index d02d2981..2959a4e6 100644
--- a/test/setup.sh
+++ b/test/setup.sh
@@ -11,11 +11,11 @@ export PYTHONPATH
GIT_AUTH="$TOPLEVEL/aurweb/git/auth.py"
GIT_SERVE="$TOPLEVEL/aurweb/git/serve.py"
GIT_UPDATE="$TOPLEVEL/aurweb/git/update.py"
-MKPKGLISTS="$TOPLEVEL/scripts/mkpkglists.py"
-TUVOTEREMINDER="$TOPLEVEL/scripts/tuvotereminder.py"
-PKGMAINT="$TOPLEVEL/scripts/pkgmaint.py"
-AURBLUP="$TOPLEVEL/scripts/aurblup.py"
-NOTIFY="$TOPLEVEL/scripts/notify.py"
+MKPKGLISTS="$TOPLEVEL/aurweb/scripts/mkpkglists.py"
+TUVOTEREMINDER="$TOPLEVEL/aurweb/scripts/tuvotereminder.py"
+PKGMAINT="$TOPLEVEL/aurweb/scripts/pkgmaint.py"
+AURBLUP="$TOPLEVEL/aurweb/scripts/aurblup.py"
+NOTIFY="$TOPLEVEL/aurweb/scripts/notify.py"
# Create the configuration file and a dummy notification script.
cat >config <<-EOF
@@ -98,6 +98,12 @@ AUTH_KEYTYPE_MISSING=sha-rsa
AUTH_KEYTEXT_MISSING=AAAAB3NzaC1yc2EAAAADAQABAAABAQC9UTpssBunuTBCT3KFtv+yb+cN0VmI2C9O9U7wHlkEZWxNBK8is6tnDHXBxRuvRk0LHILkTidLLFX22ZF0+TFgSz7uuEvGZVNpa2Fn2+vKJJYMvZEvb/f8VHF5/Jddt21VOyu23royTN/duiT7WIZdCtEmq5C9Y43NPfsB8FbUc+FVSYT2Lq7g1/bzvFF+CZxwCrGjC3qC7p3pshICfFR8bbWgRN33ClxIQ7MvkcDtfNu38dLotJqdfEa7NdQgba5/S586f1A4OWKc/mQJFyTaGhRBxw/cBSjqonvO0442VYLHFxlrTHoUunKyOJ8+BJfKgjWmfENC9ESY3mL/IEn5
AUTH_FINGERPRINT_MISSING=SHA256:uB0B+30r2WA1TDMUmFcaEBjosjnFGzn33XFhiyvTL9w
+# Setup fake SSH environment.
+SSH_CLIENT='1.2.3.4 1234 22'
+SSH_CONNECTION='1.2.3.4 1234 4.3.2.1 22'
+SSH_TTY=/dev/pts/0
+export SSH_CLIENT SSH_CONNECTION SSH_TTY
+
# Initialize the test database.
rm -f aur.db
sed \
@@ -122,6 +128,8 @@ echo "INSERT INTO Users (ID, UserName, Passwd, Email, AccountTypeID) VALUES (9,
echo "INSERT INTO SSHPubKeys (UserID, Fingerprint, PubKey) VALUES (1, '$AUTH_FINGERPRINT_USER', '$AUTH_KEYTYPE_USER $AUTH_KEYTEXT_USER');" | sqlite3 aur.db
echo "INSERT INTO SSHPubKeys (UserID, Fingerprint, PubKey) VALUES (2, '$AUTH_FINGERPRINT_TU', '$AUTH_KEYTYPE_TU $AUTH_KEYTEXT_TU');" | sqlite3 aur.db
+echo "INSERT INTO Bans (IPAddress, BanTS) VALUES ('1.3.3.7', 0);" | sqlite3 aur.db
+
echo "INSERT INTO PackageBlacklist (Name) VALUES ('forbidden');" | sqlite3 aur.db
echo "INSERT INTO OfficialProviders (Name, Repo, Provides) VALUES ('official', 'core', 'official');" | sqlite3 aur.db
diff --git a/test/t1200-git-serve.sh b/test/t1200-git-serve.sh
index 5054ce36..07383aff 100755
--- a/test/t1200-git-serve.sh
+++ b/test/t1200-git-serve.sh
@@ -20,6 +20,38 @@ test_expect_success 'Test help.' '
IFS=$save_IFS
'
+test_expect_success 'Test maintenance mode.' '
+ mv config config.old &&
+ sed "s/^\(enable-maintenance = \)0$/\\11/" config.old >config &&
+ SSH_ORIGINAL_COMMAND=help test_must_fail "$GIT_SERVE" 2>actual &&
+ cat >expected <<-EOF &&
+ The AUR is down due to maintenance. We will be back soon.
+ EOF
+ test_cmp expected actual &&
+ mv config.old config
+'
+
+test_expect_success 'Test IP address logging.' '
+ SSH_ORIGINAL_COMMAND=help AUR_USER=user "$GIT_SERVE" 2>actual &&
+ cat >expected <<-EOF &&
+ 1.2.3.4
+ EOF
+ echo "SELECT LastSSHLoginIPAddress FROM Users WHERE UserName = \"user\";" | \
+ sqlite3 aur.db >actual &&
+ test_cmp expected actual
+'
+
+test_expect_success 'Test IP address bans.' '
+ SSH_CLIENT_ORIG="$SSH_CLIENT" &&
+ SSH_CLIENT="1.3.3.7 1337 22" &&
+ SSH_ORIGINAL_COMMAND=help test_must_fail "$GIT_SERVE" 2>actual &&
+ cat >expected <<-EOF &&
+ The SSH interface is disabled for your IP address.
+ EOF
+ test_cmp expected actual &&
+ SSH_CLIENT="$SSH_CLIENT_ORIG"
+'
+
test_expect_success 'Test setup-repo and list-repos.' '
SSH_ORIGINAL_COMMAND="setup-repo foobar" AUR_USER=user \
"$GIT_SERVE" 2>&1 &&
@@ -340,4 +372,133 @@ test_expect_success "Check whether package requests are closed when disowning."
test_cmp actual expected
'
+test_expect_success "Flag a package base out-of-date." '
+ SSH_ORIGINAL_COMMAND="flag foobar Because." AUR_USER=user2 AUR_PRIVILEGED=0 \
+ "$GIT_SERVE" 2>&1 &&
+ cat >expected <<-EOF &&
+ 1|Because.
+ EOF
+ echo "SELECT OutOfDateTS IS NOT NULL, FlaggerComment FROM PackageBases WHERE ID = 3;" | \
+ sqlite3 aur.db >actual &&
+ test_cmp expected actual
+'
+
+test_expect_success "Unflag a package base as flagger." '
+ SSH_ORIGINAL_COMMAND="unflag foobar" AUR_USER=user2 AUR_PRIVILEGED=0 \
+ "$GIT_SERVE" 2>&1 &&
+ cat >expected <<-EOF &&
+ 0|Because.
+ EOF
+ echo "SELECT OutOfDateTS IS NOT NULL, FlaggerComment FROM PackageBases WHERE ID = 3;" | \
+ sqlite3 aur.db >actual &&
+ test_cmp expected actual
+'
+
+test_expect_success "Unflag a package base as maintainer." '
+ SSH_ORIGINAL_COMMAND="adopt foobar" AUR_USER=user AUR_PRIVILEGED=0 \
+ "$GIT_SERVE" 2>&1 &&
+ SSH_ORIGINAL_COMMAND="flag foobar Because." AUR_USER=user2 AUR_PRIVILEGED=0 \
+ "$GIT_SERVE" 2>&1 &&
+ SSH_ORIGINAL_COMMAND="unflag foobar" AUR_USER=user AUR_PRIVILEGED=0 \
+ "$GIT_SERVE" 2>&1 &&
+ cat >expected <<-EOF &&
+ 0|Because.
+ EOF
+ echo "SELECT OutOfDateTS IS NOT NULL, FlaggerComment FROM PackageBases WHERE ID = 3;" | \
+ sqlite3 aur.db >actual &&
+ test_cmp expected actual
+'
+
+test_expect_success "Unflag a package base as random user." '
+ SSH_ORIGINAL_COMMAND="flag foobar Because." AUR_USER=user2 AUR_PRIVILEGED=0 \
+ "$GIT_SERVE" 2>&1 &&
+ SSH_ORIGINAL_COMMAND="unflag foobar" AUR_USER=user3 AUR_PRIVILEGED=0 \
+ "$GIT_SERVE" 2>&1 &&
+ cat >expected <<-EOF &&
+ 1|Because.
+ EOF
+ echo "SELECT OutOfDateTS IS NOT NULL, FlaggerComment FROM PackageBases WHERE ID = 3;" | \
+ sqlite3 aur.db >actual &&
+ test_cmp expected actual
+'
+
+test_expect_success "Flag using a comment which is too short." '
+ SSH_ORIGINAL_COMMAND="unflag foobar" AUR_USER=user2 AUR_PRIVILEGED=0 \
+ "$GIT_SERVE" 2>&1 &&
+ SSH_ORIGINAL_COMMAND="flag foobar xx" AUR_USER=user2 AUR_PRIVILEGED=0 \
+ test_must_fail "$GIT_SERVE" 2>&1 &&
+ cat >expected <<-EOF &&
+ 0|Because.
+ EOF
+ echo "SELECT OutOfDateTS IS NOT NULL, FlaggerComment FROM PackageBases WHERE ID = 3;" | \
+ sqlite3 aur.db >actual &&
+ test_cmp expected actual
+'
+
+test_expect_success "Vote for a package base." '
+ SSH_ORIGINAL_COMMAND="vote foobar" AUR_USER=user AUR_PRIVILEGED=0 \
+ "$GIT_SERVE" 2>&1 &&
+ cat >expected <<-EOF &&
+ 3|1
+ EOF
+ echo "SELECT PackageBaseID, UsersID FROM PackageVotes;" | \
+ sqlite3 aur.db >actual &&
+ test_cmp expected actual &&
+ cat >expected <<-EOF &&
+ 1
+ EOF
+ echo "SELECT NumVotes FROM PackageBases WHERE Name = \"foobar\";" | \
+ sqlite3 aur.db >actual &&
+ test_cmp expected actual
+'
+
+test_expect_success "Vote for a package base twice." '
+ SSH_ORIGINAL_COMMAND="vote foobar" AUR_USER=user AUR_PRIVILEGED=0 \
+ test_must_fail "$GIT_SERVE" 2>&1 &&
+ cat >expected <<-EOF &&
+ 3|1
+ EOF
+ echo "SELECT PackageBaseID, UsersID FROM PackageVotes;" | \
+ sqlite3 aur.db >actual &&
+ test_cmp expected actual &&
+ cat >expected <<-EOF &&
+ 1
+ EOF
+ echo "SELECT NumVotes FROM PackageBases WHERE Name = \"foobar\";" | \
+ sqlite3 aur.db >actual &&
+ test_cmp expected actual
+'
+
+test_expect_success "Remove vote from a package base." '
+ SSH_ORIGINAL_COMMAND="unvote foobar" AUR_USER=user AUR_PRIVILEGED=0 \
+ "$GIT_SERVE" 2>&1 &&
+ cat >expected <<-EOF &&
+ EOF
+ echo "SELECT PackageBaseID, UsersID FROM PackageVotes;" | \
+ sqlite3 aur.db >actual &&
+ test_cmp expected actual &&
+ cat >expected <<-EOF &&
+ 0
+ EOF
+ echo "SELECT NumVotes FROM PackageBases WHERE Name = \"foobar\";" | \
+ sqlite3 aur.db >actual &&
+ test_cmp expected actual
+'
+
+test_expect_success "Try to remove the vote again." '
+ SSH_ORIGINAL_COMMAND="unvote foobar" AUR_USER=user AUR_PRIVILEGED=0 \
+ test_must_fail "$GIT_SERVE" 2>&1 &&
+ cat >expected <<-EOF &&
+ EOF
+ echo "SELECT PackageBaseID, UsersID FROM PackageVotes;" | \
+ sqlite3 aur.db >actual &&
+ test_cmp expected actual &&
+ cat >expected <<-EOF &&
+ 0
+ EOF
+ echo "SELECT NumVotes FROM PackageBases WHERE Name = \"foobar\";" | \
+ sqlite3 aur.db >actual &&
+ test_cmp expected actual
+'
+
test_done
diff --git a/test/t2500-notify.sh b/test/t2500-notify.sh
new file mode 100755
index 00000000..1b209458
--- /dev/null
+++ b/test/t2500-notify.sh
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+test_description='notify tests'
+
+. ./setup.sh
+
+test_expect_success 'Test out-of-date notifications.' '
+ cat <<-EOD | sqlite3 aur.db &&
+ INSERT INTO PackageBases (ID, Name, MaintainerUID, SubmittedTS, ModifiedTS) VALUES (1, "foobar", 1, 0, 0);
+ INSERT INTO PackageBases (ID, Name, MaintainerUID, SubmittedTS, ModifiedTS) VALUES (2, "foobar2", 2, 0, 0);
+ INSERT INTO PackageBases (ID, Name, MaintainerUID, SubmittedTS, ModifiedTS) VALUES (3, "foobar3", NULL, 0, 0);
+ INSERT INTO PackageBases (ID, Name, MaintainerUID, SubmittedTS, ModifiedTS) VALUES (4, "foobar4", 1, 0, 0);
+ INSERT INTO PackageComaintainers (PackageBaseID, UsersID, Priority) VALUES (1, 2, 1);
+ INSERT INTO PackageComaintainers (PackageBaseID, UsersID, Priority) VALUES (1, 4, 2);
+ INSERT INTO PackageComaintainers (PackageBaseID, UsersID, Priority) VALUES (2, 3, 1);
+ INSERT INTO PackageComaintainers (PackageBaseID, UsersID, Priority) VALUES (2, 5, 2);
+ INSERT INTO PackageComaintainers (PackageBaseID, UsersID, Priority) VALUES (3, 4, 1);
+ EOD
+ >sendmail.out &&
+ "$NOTIFY" flag 1 1 &&
+ cat <<-EOD >expected &&
+ Subject: AUR Out-of-date Notification for foobar
+ To: tu@localhost
+ Subject: AUR Out-of-date Notification for foobar
+ To: user2@localhost
+ Subject: AUR Out-of-date Notification for foobar
+ To: user@localhost
+ EOD
+ grep "^\(Subject\|To\)" sendmail.out >sendmail.parts &&
+ test_cmp sendmail.parts expected
+'
+
+test_done