t2500-notify.sh 12.7 KB
Newer Older
1
2
3
4
5
6
7
8
#!/bin/sh

test_description='notify tests'

. ./setup.sh

test_expect_success 'Test out-of-date notifications.' '
	cat <<-EOD | sqlite3 aur.db &&
9
10
11
12
13
14
15
16
17
18
	/* Use package base IDs which can be distinguished from user IDs. */
	INSERT INTO PackageBases (ID, Name, MaintainerUID, SubmittedTS, ModifiedTS, FlaggerComment) VALUES (1001, "foobar", 1, 0, 0, "This is a test OOD comment.");
	INSERT INTO PackageBases (ID, Name, MaintainerUID, SubmittedTS, ModifiedTS, FlaggerComment) VALUES (1002, "foobar2", 2, 0, 0, "");
	INSERT INTO PackageBases (ID, Name, MaintainerUID, SubmittedTS, ModifiedTS, FlaggerComment) VALUES (1003, "foobar3", NULL, 0, 0, "");
	INSERT INTO PackageBases (ID, Name, MaintainerUID, SubmittedTS, ModifiedTS, FlaggerComment) VALUES (1004, "foobar4", 1, 0, 0, "");
	INSERT INTO PackageComaintainers (PackageBaseID, UsersID, Priority) VALUES (1001, 2, 1);
	INSERT INTO PackageComaintainers (PackageBaseID, UsersID, Priority) VALUES (1001, 4, 2);
	INSERT INTO PackageComaintainers (PackageBaseID, UsersID, Priority) VALUES (1002, 3, 1);
	INSERT INTO PackageComaintainers (PackageBaseID, UsersID, Priority) VALUES (1002, 5, 2);
	INSERT INTO PackageComaintainers (PackageBaseID, UsersID, Priority) VALUES (1003, 4, 1);
19
20
	EOD
	>sendmail.out &&
21
	"$NOTIFY" flag 1 1001 &&
22
23
24
25
26
27
28
29
30
	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 &&
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
	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 &&
85
86
87
	/* Use package comments IDs which can be distinguished from other IDs. */
	INSERT INTO PackageComments (ID, PackageBaseID, UsersID, Comments, RenderedComment) VALUES (2001, 1001, 1, "This is a test comment.", "This is a test comment.");
	INSERT INTO PackageNotifications (PackageBaseID, UserID) VALUES (1001, 2);
88
89
90
	UPDATE Users SET CommentNotify = 1 WHERE ID = 2;
	EOD
	>sendmail.out &&
91
	"$NOTIFY" comment 1 1001 2001 &&
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
	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 &&
118
	"$NOTIFY" update 1 1001 &&
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
	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 &&
140
	"$NOTIFY" flag 1 1001 &&
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
	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 &&
161
	"$NOTIFY" adopt 1 1001 &&
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
	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
'

178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
test_expect_success 'Test subject and body of disown notifications.' '
	>sendmail.out &&
	"$NOTIFY" disown 1 1001 &&
	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 disowned by user [2].

	[1] https://aur.archlinux.org/pkgbase/foobar/
	[2] https://aur.archlinux.org/account/user/
	EOD
	test_cmp actual expected
'

197
198
test_expect_success 'Test subject and body of co-maintainer addition notifications.' '
	>sendmail.out &&
199
	"$NOTIFY" comaintainer-add 1 1001 &&
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
	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 &&
217
	"$NOTIFY" comaintainer-remove 1 1001 &&
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
	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 &&
235
	"$NOTIFY" delete 1 1001 &&
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
	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 &&
256
	"$NOTIFY" delete 1 1001 1002 &&
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
	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 &&
279
280
	/* Use package request IDs which can be distinguished from other IDs. */
	INSERT INTO PackageRequests (ID, PackageBaseID, PackageBaseName, UsersID, ReqTypeID, Comments, ClosureComment) VALUES (3001, 1001, "foobar", 1, 1, "This is a request test comment.", "");
281
282
	EOD
	>sendmail.out &&
283
	"$NOTIFY" request-open 1 3001 orphan 1001 &&
284
285
	grep ^Subject: sendmail.out >actual &&
	cat <<-EOD >expected &&
286
	Subject: [PRQ#3001] Orphan Request for foobar
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
	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 &&
304
	"$NOTIFY" request-open 1 3001 merge 1001 foobar2 &&
305
306
	grep ^Subject: sendmail.out >actual &&
	cat <<-EOD >expected &&
307
	Subject: [PRQ#3001] Merge Request for foobar
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
	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 &&
326
	"$NOTIFY" request-close 1 3001 accepted &&
327
328
	grep ^Subject: sendmail.out >actual &&
	cat <<-EOD >expected &&
329
	Subject: [PRQ#3001] Deletion Request for foobar Accepted
330
331
332
333
334
	EOD
	test_cmp actual expected &&
	sed -n "/^\$/,\$p" sendmail.out | base64 -d >actual &&
	echo >>actual &&
	cat <<-EOD >expected &&
335
	Request #3001 has been accepted by user [1].
336
337
338
339
340
341
342
343

	[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 &&
344
	"$NOTIFY" request-close 0 3001 accepted &&
345
346
	grep ^Subject: sendmail.out >actual &&
	cat <<-EOD >expected &&
347
	Subject: [PRQ#3001] Deletion Request for foobar Accepted
348
349
350
351
352
	EOD
	test_cmp actual expected &&
	sed -n "/^\$/,\$p" sendmail.out | base64 -d >actual &&
	echo >>actual &&
	cat <<-EOD >expected &&
353
354
	Request #3001 has been accepted automatically by the Arch User
	Repository package request system.
355
356
357
358
359
360
	EOD
	test_cmp actual expected
'

test_expect_success 'Test subject and body of request close notifications with closure comment.' '
	cat <<-EOD | sqlite3 aur.db &&
361
	UPDATE PackageRequests SET ClosureComment = "This is a test closure comment." WHERE ID = 3001;
362
363
	EOD
	>sendmail.out &&
364
	"$NOTIFY" request-close 1 3001 accepted &&
365
366
	grep ^Subject: sendmail.out >actual &&
	cat <<-EOD >expected &&
367
	Subject: [PRQ#3001] Deletion Request for foobar Accepted
368
369
370
371
372
	EOD
	test_cmp actual expected &&
	sed -n "/^\$/,\$p" sendmail.out | base64 -d >actual &&
	echo >>actual &&
	cat <<-EOD >expected &&
373
	Request #3001 has been accepted by user [1]:
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398

	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
399
400
401
'

test_done