From fec253a65de91e0790f818dde162c80186a092f8 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Wed, 16 May 2018 17:57:34 +0200 Subject: t2500: Add test cases for all notifications Check that for all kinds of notifications, the generated messages match what we expect. Signed-off-by: Lukas Fleischer --- test/t2500-notify.sh | 350 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 348 insertions(+), 2 deletions(-) diff --git a/test/t2500-notify.sh b/test/t2500-notify.sh index 39976820..46c2753e 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 -- cgit v1.2.3-24-g4f1b