t1200-git-serve.t 15.6 KB
Newer Older
1
2
3
4
#!/bin/sh

test_description='git-serve tests'

Kevin Morris's avatar
Kevin Morris committed
5
. "$(dirname $0)/setup.sh"
6
7

test_expect_success 'Test interactive shell.' '
Kevin Morris's avatar
Kevin Morris committed
8
	cover "$GIT_SERVE" 2>&1 | grep -q "Interactive shell is disabled."
9
10
11
'

test_expect_success 'Test help.' '
Kevin Morris's avatar
Kevin Morris committed
12
	SSH_ORIGINAL_COMMAND=help cover "$GIT_SERVE" 2>actual &&
13
14
15
16
17
18
19
20
	save_IFS=$IFS
	IFS=
	while read -r line; do
		echo $line | grep -q "^Commands:$" && continue
		echo $line | grep -q "^  [a-z]" || return 1
		[ ${#line} -le 80 ] || return 1
	done <actual
	IFS=$save_IFS
21
22
'

Lukas Fleischer's avatar
Lukas Fleischer committed
23
24
25
test_expect_success 'Test maintenance mode.' '
	mv config config.old &&
	sed "s/^\(enable-maintenance = \)0$/\\11/" config.old >config &&
26
27
	test_must_fail \
	env SSH_ORIGINAL_COMMAND=help \
Kevin Morris's avatar
Kevin Morris committed
28
	cover "$GIT_SERVE" 2>actual &&
Lukas Fleischer's avatar
Lukas Fleischer committed
29
30
31
32
33
34
35
	cat >expected <<-EOF &&
	The AUR is down due to maintenance. We will be back soon.
	EOF
	test_cmp expected actual &&
	mv config.old config
'

36
test_expect_success 'Test IP address logging.' '
Kevin Morris's avatar
Kevin Morris committed
37
	SSH_ORIGINAL_COMMAND=help AUR_USER=user cover "$GIT_SERVE" 2>actual &&
38
39
40
41
42
43
44
45
46
47
48
	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" &&
49
50
	test_must_fail \
	env SSH_ORIGINAL_COMMAND=help \
Kevin Morris's avatar
Kevin Morris committed
51
	cover "$GIT_SERVE" 2>actual &&
52
53
54
55
56
57
58
	cat >expected <<-EOF &&
	The SSH interface is disabled for your IP address.
	EOF
	test_cmp expected actual &&
	SSH_CLIENT="$SSH_CLIENT_ORIG"
'

59
60
test_expect_success 'Test setup-repo and list-repos.' '
	SSH_ORIGINAL_COMMAND="setup-repo foobar" AUR_USER=user \
Kevin Morris's avatar
Kevin Morris committed
61
	cover "$GIT_SERVE" 2>&1 &&
62
	SSH_ORIGINAL_COMMAND="setup-repo foobar2" AUR_USER=tu \
Kevin Morris's avatar
Kevin Morris committed
63
	cover "$GIT_SERVE" 2>&1 &&
64
65
66
67
	cat >expected <<-EOF &&
	*foobar
	EOF
	SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=user \
Kevin Morris's avatar
Kevin Morris committed
68
	cover "$GIT_SERVE" 2>&1 >actual &&
69
70
71
	test_cmp expected actual
'

72
73
74
75
76
77
78
79
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 \
Kevin Morris's avatar
Kevin Morris committed
80
	cover "$GIT_SERVE" 2>&1 >actual &&
81
82
83
84
	test_cmp expected actual
'

test_expect_success 'Test git-receive-pack with an invalid repository name.' '
85
86
	test_must_fail \
	env SSH_ORIGINAL_COMMAND="git-receive-pack /!.git/" \
87
	AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
88
	cover "$GIT_SERVE" 2>&1 >actual
89
90
91
92
93
94
95
96
97
98
'

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 \
Kevin Morris's avatar
Kevin Morris committed
99
	cover "$GIT_SERVE" 2>&1 >actual &&
100
101
102
103
104
105
106
107
108
109
110
	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 \
Kevin Morris's avatar
Kevin Morris committed
111
	cover "$GIT_SERVE" 2>&1 >actual &&
112
113
114
115
	test_cmp expected actual
'

test_expect_success "Try to push to someone else's repository." '
116
117
	test_must_fail \
	env SSH_ORIGINAL_COMMAND="git-receive-pack /foobar2.git/" \
118
	AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
119
	cover "$GIT_SERVE" 2>&1
120
121
122
123
124
125
126
127
128
129
'

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 \
Kevin Morris's avatar
Kevin Morris committed
130
	cover "$GIT_SERVE" 2>&1 >actual &&
131
132
133
	test_cmp expected actual
'

134
135
136
137
138
139
140
141
test_expect_success "Test restore." '
	echo "DELETE FROM PackageBases WHERE Name = \"foobar\";" | \
	sqlite3 aur.db &&
	cat >expected <<-EOF &&
	user
	foobar
	EOF
	SSH_ORIGINAL_COMMAND="restore foobar" AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
142
	cover "$GIT_SERVE" 2>&1 >actual
143
144
145
146
	test_cmp expected actual
'

test_expect_success "Try to restore an existing package base." '
147
	test_must_fail \
Kevin Morris's avatar
Kevin Morris committed
148
	env SSH_ORIGINAL_COMMAND="restore foobar2"\
149
	AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
150
	cover "$GIT_SERVE" 2>&1
151
152
'

153
154
test_expect_success "Disown all package bases." '
	SSH_ORIGINAL_COMMAND="disown foobar" AUR_USER=tu AUR_PRIVILEGED=1 \
Kevin Morris's avatar
Kevin Morris committed
155
	cover "$GIT_SERVE" 2>&1 &&
156
	SSH_ORIGINAL_COMMAND="disown foobar2" AUR_USER=tu AUR_PRIVILEGED=1 \
Kevin Morris's avatar
Kevin Morris committed
157
	cover "$GIT_SERVE" 2>&1 &&
158
159
160
	cat >expected <<-EOF &&
	EOF
	SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
161
	cover "$GIT_SERVE" 2>&1 >actual &&
162
163
	test_cmp expected actual &&
	SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=tu AUR_PRIVILEGED=1 \
Kevin Morris's avatar
Kevin Morris committed
164
	cover "$GIT_SERVE" 2>&1 >actual &&
165
166
167
168
169
	test_cmp expected actual
'

test_expect_success "Adopt a package base as a regular user." '
	SSH_ORIGINAL_COMMAND="adopt foobar" AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
170
	cover "$GIT_SERVE" 2>&1 &&
171
172
173
174
	cat >expected <<-EOF &&
	*foobar
	EOF
	SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
175
	cover "$GIT_SERVE" 2>&1 >actual &&
176
177
178
179
	test_cmp expected actual
'

test_expect_success "Adopt an already adopted package base." '
180
181
182
	test_must_fail \
	env SSH_ORIGINAL_COMMAND="adopt foobar" \
	AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
183
	cover "$GIT_SERVE" 2>&1
184
185
186
187
'

test_expect_success "Adopt a package base as a Trusted User." '
	SSH_ORIGINAL_COMMAND="adopt foobar2" AUR_USER=tu AUR_PRIVILEGED=1 \
Kevin Morris's avatar
Kevin Morris committed
188
	cover "$GIT_SERVE" 2>&1 &&
189
190
191
192
	cat >expected <<-EOF &&
	*foobar2
	EOF
	SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=tu AUR_PRIVILEGED=1 \
Kevin Morris's avatar
Kevin Morris committed
193
	cover "$GIT_SERVE" 2>&1 >actual &&
194
195
196
197
198
	test_cmp expected actual
'

test_expect_success "Disown one's own package base as a regular user." '
	SSH_ORIGINAL_COMMAND="disown foobar" AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
199
	cover "$GIT_SERVE" 2>&1 &&
200
201
202
	cat >expected <<-EOF &&
	EOF
	SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
203
	cover "$GIT_SERVE" 2>&1 >actual &&
204
205
206
207
208
	test_cmp expected actual
'

test_expect_success "Disown one's own package base as a Trusted User." '
	SSH_ORIGINAL_COMMAND="disown foobar2" AUR_USER=tu AUR_PRIVILEGED=1 \
Kevin Morris's avatar
Kevin Morris committed
209
	cover "$GIT_SERVE" 2>&1 &&
210
211
212
	cat >expected <<-EOF &&
	EOF
	SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=tu AUR_PRIVILEGED=1 \
Kevin Morris's avatar
Kevin Morris committed
213
	cover "$GIT_SERVE" 2>&1 >actual &&
214
215
216
217
218
	test_cmp expected actual
'

test_expect_success "Try to steal another user's package as a regular user." '
	SSH_ORIGINAL_COMMAND="adopt foobar2" AUR_USER=tu AUR_PRIVILEGED=1 \
Kevin Morris's avatar
Kevin Morris committed
219
	cover "$GIT_SERVE" 2>&1 &&
220
221
222
	test_must_fail \
	env SSH_ORIGINAL_COMMAND="adopt foobar2" \
	AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
223
	cover "$GIT_SERVE" 2>&1 &&
224
225
226
	cat >expected <<-EOF &&
	EOF
	SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
227
	cover "$GIT_SERVE" 2>&1 >actual &&
228
229
230
231
232
	test_cmp expected actual &&
	cat >expected <<-EOF &&
	*foobar2
	EOF
	SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=tu AUR_PRIVILEGED=1 \
Kevin Morris's avatar
Kevin Morris committed
233
	cover "$GIT_SERVE" 2>&1 >actual &&
234
235
	test_cmp expected actual &&
	SSH_ORIGINAL_COMMAND="disown foobar2" AUR_USER=tu AUR_PRIVILEGED=1 \
Kevin Morris's avatar
Kevin Morris committed
236
	cover "$GIT_SERVE" 2>&1
237
238
239
240
'

test_expect_success "Try to steal another user's package as a Trusted User." '
	SSH_ORIGINAL_COMMAND="adopt foobar" AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
241
	cover "$GIT_SERVE" 2>&1 &&
242
	SSH_ORIGINAL_COMMAND="adopt foobar" AUR_USER=tu AUR_PRIVILEGED=1 \
Kevin Morris's avatar
Kevin Morris committed
243
	cover "$GIT_SERVE" 2>&1 &&
244
245
246
	cat >expected <<-EOF &&
	EOF
	SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
247
	cover "$GIT_SERVE" 2>&1 >actual &&
248
249
250
251
252
	test_cmp expected actual &&
	cat >expected <<-EOF &&
	*foobar
	EOF
	SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=tu AUR_PRIVILEGED=1 \
Kevin Morris's avatar
Kevin Morris committed
253
	cover "$GIT_SERVE" 2>&1 >actual &&
254
255
	test_cmp expected actual &&
	SSH_ORIGINAL_COMMAND="disown foobar" AUR_USER=tu AUR_PRIVILEGED=1 \
Kevin Morris's avatar
Kevin Morris committed
256
	cover "$GIT_SERVE" 2>&1
257
258
259
260
'

test_expect_success "Try to disown another user's package as a regular user." '
	SSH_ORIGINAL_COMMAND="adopt foobar2" AUR_USER=tu AUR_PRIVILEGED=1 \
Kevin Morris's avatar
Kevin Morris committed
261
	cover "$GIT_SERVE" 2>&1 &&
262
263
264
	test_must_fail \
	env SSH_ORIGINAL_COMMAND="disown foobar2" \
	AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
265
	cover "$GIT_SERVE" 2>&1 &&
266
267
268
269
	cat >expected <<-EOF &&
	*foobar2
	EOF
	SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=tu AUR_PRIVILEGED=1 \
Kevin Morris's avatar
Kevin Morris committed
270
	cover "$GIT_SERVE" 2>&1 >actual &&
271
272
	test_cmp expected actual &&
	SSH_ORIGINAL_COMMAND="disown foobar2" AUR_USER=tu AUR_PRIVILEGED=1 \
Kevin Morris's avatar
Kevin Morris committed
273
	cover "$GIT_SERVE" 2>&1
274
275
276
277
'

test_expect_success "Try to disown another user's package as a Trusted User." '
	SSH_ORIGINAL_COMMAND="adopt foobar" AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
278
	cover "$GIT_SERVE" 2>&1 &&
279
	SSH_ORIGINAL_COMMAND="disown foobar" AUR_USER=tu AUR_PRIVILEGED=1 \
Kevin Morris's avatar
Kevin Morris committed
280
	cover "$GIT_SERVE" 2>&1 &&
281
282
283
	cat >expected <<-EOF &&
	EOF
	SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
284
	cover "$GIT_SERVE" 2>&1 >actual &&
285
286
	test_cmp expected actual &&
	SSH_ORIGINAL_COMMAND="disown foobar" AUR_USER=tu AUR_PRIVILEGED=1 \
Kevin Morris's avatar
Kevin Morris committed
287
	cover "$GIT_SERVE" 2>&1
288
289
290
291
'

test_expect_success "Adopt a package base and add co-maintainers." '
	SSH_ORIGINAL_COMMAND="adopt foobar" AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
292
	cover "$GIT_SERVE" 2>&1 &&
293
294
	SSH_ORIGINAL_COMMAND="set-comaintainers foobar user3 user4" \
	AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
295
	cover "$GIT_SERVE" 2>&1 &&
296
297
298
299
300
301
302
303
304
305
306
307
	cat >expected <<-EOF &&
	5|3|1
	6|3|2
	EOF
	echo "SELECT * FROM PackageComaintainers ORDER BY Priority;" | \
	sqlite3 aur.db >actual &&
	test_cmp expected actual
'

test_expect_success "Update package base co-maintainers." '
	SSH_ORIGINAL_COMMAND="set-comaintainers foobar user2 user3 user4" \
	AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
308
	cover "$GIT_SERVE" 2>&1 &&
309
310
311
312
313
314
315
316
317
318
319
	cat >expected <<-EOF &&
	4|3|1
	5|3|2
	6|3|3
	EOF
	echo "SELECT * FROM PackageComaintainers ORDER BY Priority;" | \
	sqlite3 aur.db >actual &&
	test_cmp expected actual
'

test_expect_success "Try to add co-maintainers to an orphan package base." '
320
321
	test_must_fail \
	env SSH_ORIGINAL_COMMAND="set-comaintainers foobar2 user2 user3 user4" \
322
	AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
323
	cover "$GIT_SERVE" 2>&1 &&
324
325
326
327
328
329
330
331
332
333
334
335
	cat >expected <<-EOF &&
	4|3|1
	5|3|2
	6|3|3
	EOF
	echo "SELECT * FROM PackageComaintainers ORDER BY Priority;" | \
	sqlite3 aur.db >actual &&
	test_cmp expected actual
'

test_expect_success "Disown a package base and check (co-)maintainer list." '
	SSH_ORIGINAL_COMMAND="disown foobar" AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
336
	cover "$GIT_SERVE" 2>&1 &&
337
338
339
340
	cat >expected <<-EOF &&
	*foobar
	EOF
	SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=user2 AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
341
	cover "$GIT_SERVE" 2>&1 >actual &&
342
343
344
345
346
347
348
349
350
351
352
353
	test_cmp expected actual &&
	cat >expected <<-EOF &&
	5|3|1
	6|3|2
	EOF
	echo "SELECT * FROM PackageComaintainers ORDER BY Priority;" | \
	sqlite3 aur.db >actual &&
	test_cmp expected actual
'

test_expect_success "Force-disown a package base and check (co-)maintainer list." '
	SSH_ORIGINAL_COMMAND="disown foobar" AUR_USER=tu AUR_PRIVILEGED=1 \
Kevin Morris's avatar
Kevin Morris committed
354
	cover "$GIT_SERVE" 2>&1 &&
355
356
357
	cat >expected <<-EOF &&
	EOF
	SSH_ORIGINAL_COMMAND="list-repos" AUR_USER=user3 AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
358
	cover "$GIT_SERVE" 2>&1 >actual &&
359
360
361
362
363
364
365
366
	test_cmp expected actual &&
	cat >expected <<-EOF &&
	EOF
	echo "SELECT * FROM PackageComaintainers ORDER BY Priority;" | \
	sqlite3 aur.db >actual &&
	test_cmp expected actual
'

367
368
test_expect_success "Check whether package requests are closed when disowning." '
	SSH_ORIGINAL_COMMAND="adopt foobar" AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
369
	cover "$GIT_SERVE" 2>&1 &&
370
	cat <<-EOD | sqlite3 aur.db &&
371
372
373
	INSERT INTO PackageRequests (ID, ReqTypeID, PackageBaseID, PackageBaseName, UsersID, Comments, ClosureComment) VALUES (1, 2, 3, "foobar", 4, "", "");
	INSERT INTO PackageRequests (ID, ReqTypeID, PackageBaseID, PackageBaseName, UsersID, Comments, ClosureComment) VALUES (2, 3, 3, "foobar", 5, "", "");
	INSERT INTO PackageRequests (ID, ReqTypeID, PackageBaseID, PackageBaseName, UsersID, Comments, ClosureComment) VALUES (3, 2, 2, "foobar2", 6, "", "");
374
375
376
	EOD
	>sendmail.out &&
	SSH_ORIGINAL_COMMAND="disown foobar" AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
377
	cover "$GIT_SERVE" 2>&1 &&
378
	cat <<-EOD >expected &&
379
	Subject: [PRQ#1] Orphan Request for foobar Accepted
380
381
382
383
	EOD
	grep "^Subject.*PRQ" sendmail.out >sendmail.parts &&
	test_cmp sendmail.parts expected &&
	cat <<-EOD >expected &&
384
	1|2||The user user disowned the package.
385
	EOD
386
	echo "SELECT ID, Status, ClosedUID, ClosureComment FROM PackageRequests WHERE ClosedTS > 0;" | sqlite3 aur.db >actual &&
387
388
389
	test_cmp actual expected
'

390
391
test_expect_success "Flag a package base out-of-date." '
	SSH_ORIGINAL_COMMAND="flag foobar Because." AUR_USER=user2 AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
392
	cover "$GIT_SERVE" 2>&1 &&
393
394
395
396
397
398
399
400
401
402
	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 \
Kevin Morris's avatar
Kevin Morris committed
403
	cover "$GIT_SERVE" 2>&1 &&
404
405
406
407
408
409
410
411
412
413
	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 \
Kevin Morris's avatar
Kevin Morris committed
414
	cover "$GIT_SERVE" 2>&1 &&
415
	SSH_ORIGINAL_COMMAND="flag foobar Because." AUR_USER=user2 AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
416
	cover "$GIT_SERVE" 2>&1 &&
417
	SSH_ORIGINAL_COMMAND="unflag foobar" AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
418
	cover "$GIT_SERVE" 2>&1 &&
419
420
421
422
423
424
425
426
427
428
	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 \
Kevin Morris's avatar
Kevin Morris committed
429
	cover "$GIT_SERVE" 2>&1 &&
430
	SSH_ORIGINAL_COMMAND="unflag foobar" AUR_USER=user3 AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
431
	cover "$GIT_SERVE" 2>&1 &&
432
433
434
435
436
437
438
439
440
441
	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 \
Kevin Morris's avatar
Kevin Morris committed
442
	cover "$GIT_SERVE" 2>&1 &&
443
444
445
	test_must_fail \
	env SSH_ORIGINAL_COMMAND="flag foobar xx" \
	AUR_USER=user2 AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
446
	cover "$GIT_SERVE" 2>&1 &&
447
448
449
450
451
452
453
454
	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
'

455
456
test_expect_success "Vote for a package base." '
	SSH_ORIGINAL_COMMAND="vote foobar" AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
457
	cover "$GIT_SERVE" 2>&1 &&
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
	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." '
473
474
	test_must_fail \
	env SSH_ORIGINAL_COMMAND="vote foobar" AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
475
	cover "$GIT_SERVE" 2>&1 &&
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
	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 \
Kevin Morris's avatar
Kevin Morris committed
492
	cover "$GIT_SERVE" 2>&1 &&
493
494
495
496
497
498
499
500
501
502
503
504
505
506
	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." '
507
508
509
	test_must_fail \
	env SSH_ORIGINAL_COMMAND="unvote foobar" \
	AUR_USER=user AUR_PRIVILEGED=0 \
Kevin Morris's avatar
Kevin Morris committed
510
	cover "$GIT_SERVE" 2>&1 &&
511
512
513
514
515
516
517
518
519
520
521
522
523
	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
'

524
test_done