[2/6] t2500: Add test cases for all notifications

Message ID 20180517210159.9592-3-lfleischer@archlinux.org
State Accepted, archived
Headers show
Series Localize notification emails | expand

Commit Message

Lukas Fleischer May 17, 2018, 9:01 p.m. UTC
Check that for all kinds of notifications, the generated messages match
what we expect.

Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
---
 test/t2500-notify.sh | 350 ++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 348 insertions(+), 2 deletions(-)

Patch

diff --git a/test/t2500-notify.sh b/test/t2500-notify.sh
index 3997682..46c2753 100755
--- a/test/t2500-notify.sh
+++ b/test/t2500-notify.sh
@@ -6,7 +6,7 @@  test_description='notify tests'
 
 test_expect_success 'Test out-of-date notifications.' '
 	cat <<-EOD | sqlite3 aur.db &&
-	INSERT INTO PackageBases (ID, Name, MaintainerUID, SubmittedTS, ModifiedTS, FlaggerComment) VALUES (1, "foobar", 1, 0, 0, "");
+	INSERT INTO PackageBases (ID, Name, MaintainerUID, SubmittedTS, ModifiedTS, FlaggerComment) VALUES (1, "foobar", 1, 0, 0, "This is a test OOD comment.");
 	INSERT INTO PackageBases (ID, Name, MaintainerUID, SubmittedTS, ModifiedTS, FlaggerComment) VALUES (2, "foobar2", 2, 0, 0, "");
 	INSERT INTO PackageBases (ID, Name, MaintainerUID, SubmittedTS, ModifiedTS, FlaggerComment) VALUES (3, "foobar3", NULL, 0, 0, "");
 	INSERT INTO PackageBases (ID, Name, MaintainerUID, SubmittedTS, ModifiedTS, FlaggerComment) VALUES (4, "foobar4", 1, 0, 0, "");
@@ -27,7 +27,353 @@  test_expect_success 'Test out-of-date notifications.' '
 	To: user@localhost
 	EOD
 	grep "^\(Subject\|To\)" sendmail.out >sendmail.parts &&
-	test_cmp sendmail.parts expected
+	test_cmp sendmail.parts expected &&
+	cat <<-EOD | sqlite3 aur.db
+	DELETE FROM PackageComaintainers;
+	EOD
+'
+
+test_expect_success 'Test subject and body of reset key notifications.' '
+	cat <<-EOD | sqlite3 aur.db &&
+	UPDATE Users SET ResetKey = "12345678901234567890123456789012" WHERE ID = 1;
+	EOD
+	>sendmail.out &&
+	"$NOTIFY" send-resetkey 1 &&
+	grep ^Subject: sendmail.out >actual &&
+	cat <<-EOD >expected &&
+	Subject: AUR Password Reset
+	EOD
+	test_cmp actual expected &&
+	sed -n "/^\$/,\$p" sendmail.out | base64 -d >actual &&
+	echo >>actual &&
+	cat <<-EOD >expected &&
+	A password reset request was submitted for the account user associated
+	with your email address. If you wish to reset your password follow the
+	link [1] below, otherwise ignore this message and nothing will happen.
+
+	[1] https://aur.archlinux.org/passreset/?resetkey=12345678901234567890123456789012
+	EOD
+	test_cmp actual expected
+'
+
+test_expect_success 'Test subject and body of welcome notifications.' '
+	cat <<-EOD | sqlite3 aur.db &&
+	UPDATE Users SET ResetKey = "12345678901234567890123456789012" WHERE ID = 1;
+	EOD
+	>sendmail.out &&
+	"$NOTIFY" welcome 1 &&
+	grep ^Subject: sendmail.out >actual &&
+	cat <<-EOD >expected &&
+	Subject: Welcome to the Arch User Repository
+	EOD
+	test_cmp actual expected &&
+	sed -n "/^\$/,\$p" sendmail.out | base64 -d >actual &&
+	echo >>actual &&
+	cat <<-EOD >expected &&
+	Welcome to the Arch User Repository! In order to set an initial
+	password for your new account, please click the link [1] below. If the
+	link does not work, try copying and pasting it into your browser.
+
+	[1] https://aur.archlinux.org/passreset/?resetkey=12345678901234567890123456789012
+	EOD
+	test_cmp actual expected
+'
+
+test_expect_success 'Test subject and body of comment notifications.' '
+	cat <<-EOD | sqlite3 aur.db &&
+	INSERT INTO PackageComments (ID, PackageBaseID, UsersID, Comments, RenderedComment) VALUES (1, 1, 1, "This is a test comment.", "This is a test comment.");
+	INSERT INTO PackageNotifications (PackageBaseID, UserID) VALUES (1, 2);
+	UPDATE Users SET CommentNotify = 1 WHERE ID = 2;
+	EOD
+	>sendmail.out &&
+	"$NOTIFY" comment 1 1 1 &&
+	grep ^Subject: sendmail.out >actual &&
+	cat <<-EOD >expected &&
+	Subject: AUR Comment for foobar
+	EOD
+	test_cmp actual expected &&
+	sed -n "/^\$/,\$p" sendmail.out | base64 -d >actual &&
+	echo >>actual &&
+	cat <<-EOD >expected &&
+	user [1] added the following comment to foobar [2]:
+
+	This is a test comment.
+
+	If you no longer wish to receive notifications about this package,
+	please go to the package page [2] and select "Disable notifications".
+	
+	[1] https://aur.archlinux.org/account/user/
+	[2] https://aur.archlinux.org/pkgbase/foobar/
+	EOD
+	test_cmp actual expected
+'
+
+test_expect_success 'Test subject and body of update notifications.' '
+	cat <<-EOD | sqlite3 aur.db &&
+	UPDATE Users SET UpdateNotify = 1 WHERE ID = 2;
+	EOD
+	>sendmail.out &&
+	"$NOTIFY" update 1 1 &&
+	grep ^Subject: sendmail.out >actual &&
+	cat <<-EOD >expected &&
+	Subject: AUR Package Update: foobar
+	EOD
+	test_cmp actual expected &&
+	sed -n "/^\$/,\$p" sendmail.out | base64 -d >actual &&
+	echo >>actual &&
+	cat <<-EOD >expected &&
+	user [1] pushed a new commit to foobar [2].
+
+	If you no longer wish to receive notifications about this package,
+	please go to the package page [2] and select "Disable notifications".
+
+	[1] https://aur.archlinux.org/account/user/
+	[2] https://aur.archlinux.org/pkgbase/foobar/
+	EOD
+	test_cmp actual expected
+'
+
+test_expect_success 'Test subject and body of out-of-date notifications.' '
+	>sendmail.out &&
+	"$NOTIFY" flag 1 1 &&
+	grep ^Subject: sendmail.out >actual &&
+	cat <<-EOD >expected &&
+	Subject: AUR Out-of-date Notification for foobar
+	EOD
+	test_cmp actual expected &&
+	sed -n "/^\$/,\$p" sendmail.out | base64 -d >actual &&
+	echo >>actual &&
+	cat <<-EOD >expected &&
+	Your package foobar [1] has been flagged out-of-date by user [2]:
+
+	This is a test OOD comment.
+
+	[1] https://aur.archlinux.org/pkgbase/foobar/
+	[2] https://aur.archlinux.org/account/user/
+	EOD
+	test_cmp actual expected
+'
+
+test_expect_success 'Test subject and body of adopt notifications.' '
+	>sendmail.out &&
+	"$NOTIFY" adopt 1 1 &&
+	grep ^Subject: sendmail.out >actual &&
+	cat <<-EOD >expected &&
+	Subject: AUR Ownership Notification for foobar
+	EOD
+	test_cmp actual expected &&
+	sed -n "/^\$/,\$p" sendmail.out | base64 -d >actual &&
+	echo >>actual &&
+	cat <<-EOD >expected &&
+	The package foobar [1] was adopted by user [2].
+
+	[1] https://aur.archlinux.org/pkgbase/foobar/
+	[2] https://aur.archlinux.org/account/user/
+	EOD
+	test_cmp actual expected
+'
+
+test_expect_success 'Test subject and body of co-maintainer addition notifications.' '
+	>sendmail.out &&
+	"$NOTIFY" comaintainer-add 1 1 &&
+	grep ^Subject: sendmail.out >actual &&
+	cat <<-EOD >expected &&
+	Subject: AUR Co-Maintainer Notification for foobar
+	EOD
+	test_cmp actual expected &&
+	sed -n "/^\$/,\$p" sendmail.out | base64 -d >actual &&
+	echo >>actual &&
+	cat <<-EOD >expected &&
+	You were added to the co-maintainer list of foobar [1].
+
+	[1] https://aur.archlinux.org/pkgbase/foobar/
+	EOD
+	test_cmp actual expected
+'
+
+test_expect_success 'Test subject and body of co-maintainer removal notifications.' '
+	>sendmail.out &&
+	"$NOTIFY" comaintainer-remove 1 1 &&
+	grep ^Subject: sendmail.out >actual &&
+	cat <<-EOD >expected &&
+	Subject: AUR Co-Maintainer Notification for foobar
+	EOD
+	test_cmp actual expected &&
+	sed -n "/^\$/,\$p" sendmail.out | base64 -d >actual &&
+	echo >>actual &&
+	cat <<-EOD >expected &&
+	You were removed from the co-maintainer list of foobar [1].
+
+	[1] https://aur.archlinux.org/pkgbase/foobar/
+	EOD
+	test_cmp actual expected
+'
+
+test_expect_success 'Test subject and body of delete notifications.' '
+	>sendmail.out &&
+	"$NOTIFY" delete 1 1 &&
+	grep ^Subject: sendmail.out >actual &&
+	cat <<-EOD >expected &&
+	Subject: AUR Package deleted: foobar
+	EOD
+	test_cmp actual expected &&
+	sed -n "/^\$/,\$p" sendmail.out | base64 -d >actual &&
+	echo >>actual &&
+	cat <<-EOD >expected &&
+	user [1] deleted foobar [2].
+
+	You will no longer receive notifications about this package.
+
+	[1] https://aur.archlinux.org/account/user/
+	[2] https://aur.archlinux.org/pkgbase/foobar/
+	EOD
+	test_cmp actual expected
+'
+
+test_expect_success 'Test subject and body of merge notifications.' '
+	>sendmail.out &&
+	"$NOTIFY" delete 1 1 2 &&
+	grep ^Subject: sendmail.out >actual &&
+	cat <<-EOD >expected &&
+	Subject: AUR Package deleted: foobar
+	EOD
+	test_cmp actual expected &&
+	sed -n "/^\$/,\$p" sendmail.out | base64 -d >actual &&
+	echo >>actual &&
+	cat <<-EOD >expected &&
+	user [1] merged foobar [2] into foobar2 [3].
+
+	If you no longer wish receive notifications about the new package,
+	please go to [3] and click "Disable notifications".
+
+	[1] https://aur.archlinux.org/account/user/
+	[2] https://aur.archlinux.org/pkgbase/foobar/
+	[3] https://aur.archlinux.org/pkgbase/foobar2/
+	EOD
+	test_cmp actual expected
+'
+
+test_expect_success 'Test subject and body of request open notifications.' '
+	cat <<-EOD | sqlite3 aur.db &&
+	INSERT INTO PackageRequests (ID, PackageBaseID, PackageBaseName, UsersID, ReqTypeID, Comments, ClosureComment) VALUES (1, 1, "foobar", 1, 1, "This is a request test comment.", "");
+	EOD
+	>sendmail.out &&
+	"$NOTIFY" request-open 1 1 orphan 1 &&
+	grep ^Subject: sendmail.out >actual &&
+	cat <<-EOD >expected &&
+	Subject: [PRQ#1] Orphan Request for foobar
+	EOD
+	test_cmp actual expected &&
+	sed -n "/^\$/,\$p" sendmail.out | base64 -d >actual &&
+	echo >>actual &&
+	cat <<-EOD >expected &&
+	user [1] filed a orphan request for foobar [2]:
+
+	This is a request test comment.
+
+	[1] https://aur.archlinux.org/account/user/
+	[2] https://aur.archlinux.org/pkgbase/foobar/
+	EOD
+	test_cmp actual expected
+'
+
+test_expect_success 'Test subject and body of request open notifications for merge requests.' '
+	>sendmail.out &&
+	"$NOTIFY" request-open 1 1 merge 1 foobar2 &&
+	grep ^Subject: sendmail.out >actual &&
+	cat <<-EOD >expected &&
+	Subject: [PRQ#1] Merge Request for foobar
+	EOD
+	test_cmp actual expected &&
+	sed -n "/^\$/,\$p" sendmail.out | base64 -d >actual &&
+	echo >>actual &&
+	cat <<-EOD >expected &&
+	user [1] filed a request to merge foobar [2] into foobar2 [3]:
+
+	This is a request test comment.
+
+	[1] https://aur.archlinux.org/account/user/
+	[2] https://aur.archlinux.org/pkgbase/foobar/
+	[3] https://aur.archlinux.org/pkgbase/foobar2/
+	EOD
+	test_cmp actual expected
+'
+
+test_expect_success 'Test subject and body of request close notifications.' '
+	>sendmail.out &&
+	"$NOTIFY" request-close 1 1 accepted &&
+	grep ^Subject: sendmail.out >actual &&
+	cat <<-EOD >expected &&
+	Subject: [PRQ#1] Request Accepted
+	EOD
+	test_cmp actual expected &&
+	sed -n "/^\$/,\$p" sendmail.out | base64 -d >actual &&
+	echo >>actual &&
+	cat <<-EOD >expected &&
+	Request #1 has been accepted by user [1].
+
+	[1] https://aur.archlinux.org/account/user/
+	EOD
+	test_cmp actual expected
+'
+
+test_expect_success 'Test subject and body of request close notifications (auto-accept).' '
+	>sendmail.out &&
+	"$NOTIFY" request-close 0 1 accepted &&
+	grep ^Subject: sendmail.out >actual &&
+	cat <<-EOD >expected &&
+	Subject: [PRQ#1] Request Accepted
+	EOD
+	test_cmp actual expected &&
+	sed -n "/^\$/,\$p" sendmail.out | base64 -d >actual &&
+	echo >>actual &&
+	cat <<-EOD >expected &&
+	Request #1 has been accepted automatically by the Arch User Repository
+	package request system.
+	EOD
+	test_cmp actual expected
+'
+
+test_expect_success 'Test subject and body of request close notifications with closure comment.' '
+	cat <<-EOD | sqlite3 aur.db &&
+	UPDATE PackageRequests SET ClosureComment = "This is a test closure comment." WHERE ID = 1;
+	EOD
+	>sendmail.out &&
+	"$NOTIFY" request-close 1 1 accepted &&
+	grep ^Subject: sendmail.out >actual &&
+	cat <<-EOD >expected &&
+	Subject: [PRQ#1] Request Accepted
+	EOD
+	test_cmp actual expected &&
+	sed -n "/^\$/,\$p" sendmail.out | base64 -d >actual &&
+	echo >>actual &&
+	cat <<-EOD >expected &&
+	Request #1 has been accepted by user [1]:
+
+	This is a test closure comment.
+
+	[1] https://aur.archlinux.org/account/user/
+	EOD
+	test_cmp actual expected
+'
+
+test_expect_success 'Test subject and body of TU vote reminders.' '
+	>sendmail.out &&
+	"$NOTIFY" tu-vote-reminder 1 &&
+	grep ^Subject: sendmail.out | head -1 >actual &&
+	cat <<-EOD >expected &&
+	Subject: TU Vote Reminder: Proposal 1
+	EOD
+	test_cmp actual expected &&
+	sed -n "/^\$/,\$p" sendmail.out | head -4 | base64 -d >actual &&
+	echo >>actual &&
+	cat <<-EOD >expected &&
+	Please remember to cast your vote on proposal 1 [1]. The voting period
+	ends in less than 48 hours.
+
+	[1] https://aur.archlinux.org/tu/?id=1
+	EOD
+	test_cmp actual expected
 '
 
 test_done