]> diplodocus.org Git - nmh/blob - test/mhical/test-mhical
Forgot to commit test-mhical.
[nmh] / test / mhical / test-mhical
1 #!/bin/sh
2 ######################################################
3 #
4 # Test mhical
5 #
6 ######################################################
7
8 set -e
9
10 if test -z "${MH_OBJ_DIR}"; then
11 srcdir=`dirname $0`/../..
12 MH_OBJ_DIR=`cd $srcdir && pwd`; export MH_OBJ_DIR
13 fi
14
15 . "${MH_OBJ_DIR}/test/common.sh"
16
17 setup_test
18
19 #### Make sure that html-to-text conversion is what we expect.
20 require_locale en_US.utf-8 en_US.utf8
21 LC_ALL=en_US.UTF-8; export LC_ALL
22
23 #### Disable colorized output.
24 TERM=dumb; export TERM
25
26 expected="$MH_TEST_DIR/test-mhical$$.expected"
27 expected_err="$MH_TEST_DIR/test-mhical$$.expected_err"
28 actual="$MH_TEST_DIR/test-mhical$$.actual"
29 actual_err="$MH_TEST_DIR/test-mhical$$.actual_err"
30
31
32 # check -help
33 cat >"$expected" <<EOF
34 Usage: mhical [switches]
35 switches are:
36 -reply accept|decline|tentative
37 -cancel
38 -form formatfile
39 -(forma)t string
40 -infile
41 -outfile
42 -[no]contenttype
43 -unfold
44 -debug
45 -version
46 -help
47 EOF
48
49 run_prog mhical -help >"$actual" 2>&1
50 check "$expected" "$actual"
51
52
53 # check -version
54 case `mhical -version` in
55 mhical\ --*) ;;
56 *) printf '%s: mhical -version generated unexpected output\n' "$0" >&2
57 failed=`expr ${failed:-0} + 1`;;
58 esac
59
60
61 # check display with timezone that only has standard time
62 cat >"$expected" <<'EOF'
63 Summary: Santa Watch
64 Description: See Santa here first!
65 At: Wed, 24 Dec 2014 12:00 +0000
66 To: Fri, 25 Dec 2015 11:59
67 EOF
68
69 cat >"$MH_TEST_DIR/test1.ics" <<'EOF'
70 BEGIN:VCALENDAR
71 VERSION:2.0
72 PRODID:test-mhical
73
74 BEGIN:VTIMEZONE
75 TZID:MHT-12
76 BEGIN:STANDARD
77 DTSTART:16010101T020000
78 TZOFFSETFROM:+1200
79 TZOFFSETTO:+1200
80 END:STANDARD
81 END:VTIMEZONE
82
83 BEGIN:VEVENT
84 DTSTAMP:20141224T140426Z
85 DTSTART;TZID=MHT-12:20141225T000000
86 DTEND;TZID=MHT-12:20151225T235959
87 SUMMARY:Santa Watch
88 DESCRIPTION: See Santa here first!
89 END:VEVENT
90
91 END:VCALENDAR
92 EOF
93
94 TZ=UTC mhical <"$MH_TEST_DIR/test1.ics" >"$MH_TEST_DIR/test1.txt"
95 check "$expected" "$MH_TEST_DIR/test1.txt"
96 rm -f "$MH_TEST_DIR/test1.ics"
97
98
99 # check display with 24 hour time format and -outfile
100 cat >"$expected" <<'EOF'
101 Summary: 4 pm meeting
102 At: Mon, 05 Jan 2015 16:00
103 To: Mon, 05 Jan 2015 16:30
104 EOF
105
106 cat >"$MH_TEST_DIR/test1.ics" <<'EOF'
107 BEGIN:VCALENDAR
108 VERSION:2.0
109 PRODID:test-mhical
110
111 BEGIN:VEVENT
112 DTSTAMP:20150101T162400Z
113 DTSTART:20150105T160000
114 DTEND:20150105T163000
115 SUMMARY:4 pm meeting
116 END:VEVENT
117
118 END:VCALENDAR
119 EOF
120
121 mhical -outfile "$MH_TEST_DIR/test1.txt" <"$MH_TEST_DIR/test1.ics"
122 check "$expected" "$MH_TEST_DIR/test1.txt"
123 rm -f "$MH_TEST_DIR/test1.ics"
124
125
126 # check display with 12 hour time format and -infile
127 cat >"$expected" <<'EOF'
128 Summary: 4 pm meeting
129 At: Mon, 05 Jan 2015 4:00 PM
130 To: Mon, 05 Jan 2015 4:30 PM
131 EOF
132
133 cat >"$MH_TEST_DIR/test1.ics" <<'EOF'
134 BEGIN:VCALENDAR
135 VERSION:2.0
136 PRODID:test-mhical
137
138 BEGIN:VEVENT
139 DTSTAMP:20150101T162800Z
140 DTSTART:20150105T160000
141 DTEND:20150105T163000
142 SUMMARY:4 pm meeting
143 END:VEVENT
144
145 END:VCALENDAR
146 EOF
147
148 mhical -form mhical.12hour -infile "$MH_TEST_DIR/test1.ics" \
149 >"$MH_TEST_DIR/test1.txt"
150 check "$expected" "$MH_TEST_DIR/test1.txt"
151 rm -f "$MH_TEST_DIR/test1.ics"
152
153
154 # check display with DST
155 cat >"$expected" <<'EOF'
156 Method: REQUEST
157 Organizer: Requester
158 Summary: Big Meeting
159 Location: The Office
160 At: Mon, 05 Jan 2015 08:00 -0500
161 To: Mon, 05 Jan 2015 09:00
162 Attendees: Requestee
163 EOF
164
165 cat >"$MH_TEST_DIR/test1.ics" <<'EOF'
166 BEGIN:VCALENDAR
167 METHOD:REQUEST
168 PRODID:Microsoft Exchange Server 2010
169 VERSION:2.0
170 BEGIN:VTIMEZONE
171 TZID:Eastern Standard Time
172 BEGIN:STANDARD
173 DTSTART:16010101T020000
174 TZOFFSETFROM:-0400
175 TZOFFSETTO:-0500
176 RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11
177 END:STANDARD
178 BEGIN:DAYLIGHT
179 DTSTART:16010101T020000
180 TZOFFSETFROM:-0500
181 TZOFFSETTO:-0400
182 RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3
183 END:DAYLIGHT
184 END:VTIMEZONE
185 BEGIN:VEVENT
186 ORGANIZER;CN=Requester:MAILTO:requester@example.com
187 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=FALSE;CN=Requestee
188 :MAILTO:requestee@example.com
189 DESCRIPTION;LANGUAGE=en-US:\n\n
190 SUMMARY;LANGUAGE=en-US:Big Meeting
191 DTSTART;TZID=Eastern Standard Time:20150105T080000
192 DTEND;TZID=Eastern Standard Time:20150105T090000
193 UID:0123456789
194 CLASS:PUBLIC
195 PRIORITY:5
196 DTSTAMP:20141231T235959Z
197 TRANSP:OPAQUE
198 STATUS:CONFIRMED
199 SEQUENCE:0
200 LOCATION;LANGUAGE=en-US:The Office
201 X-MICROSOFT-CDO-APPT-SEQUENCE:0
202 X-MICROSOFT-CDO-OWNERAPPTID:-0123456789
203 X-MICROSOFT-CDO-BUSYSTATUS:TENTATIVE
204 X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
205 X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
206 X-MICROSOFT-CDO-IMPORTANCE:1
207 X-MICROSOFT-CDO-INSTTYPE:0
208 X-MICROSOFT-DISALLOW-COUNTER:FALSE
209 BEGIN:VALARM
210 ACTION:DISPLAY
211 DESCRIPTION:REMINDER
212 TRIGGER;RELATED=START:-PT15M
213 END:VALARM
214 END:VEVENT
215 END:VCALENDAR
216 EOF
217
218 TZ=EST mhical <"$MH_TEST_DIR/test1.ics" >"$MH_TEST_DIR/test1.txt"
219 check "$expected" "$MH_TEST_DIR/test1.txt"
220 rm -f "$MH_TEST_DIR/test1.ics"
221
222
223 # check timezone boundary at transition to daylight saving time
224 # The default mhical display format doesn't show the timezone for the
225 # To: time, but it is different than that of the At: time.
226 cat >"$expected" <<'EOF'
227 Summary: EST to EDT
228 At: Sun, 09 Mar 2014 01:59 -0500
229 To: Sun, 09 Mar 2014 03:30
230 EOF
231
232 cat >"$MH_TEST_DIR/test1.ics" <<'EOF'
233 BEGIN:VCALENDAR
234 VERSION:2.0
235 PRODID:test-mhical
236 BEGIN:VTIMEZONE
237 TZID:Eastern Standard Time
238 BEGIN:STANDARD
239 DTSTART:16010101T020000
240 TZOFFSETFROM:-0400
241 TZOFFSETTO:-0500
242 RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11
243 END:STANDARD
244 BEGIN:DAYLIGHT
245 DTSTART:16010101T020000
246 TZOFFSETFROM:-0500
247 TZOFFSETTO:-0400
248 RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3
249 END:DAYLIGHT
250 END:VTIMEZONE
251 BEGIN:VEVENT
252 DTSTAMP:20150101T000000Z
253 DTSTART;TZID=Eastern Standard Time:20140309T015959
254 DTEND;TZID=Eastern Standard Time:20140309T023000
255 Summary: EST to EDT
256 END:VEVENT
257 END:VCALENDAR
258 EOF
259
260 TZ=EST5EDT mhical <"$MH_TEST_DIR/test1.ics" >"$MH_TEST_DIR/test1.txt"
261 check "$expected" "$MH_TEST_DIR/test1.txt"
262
263
264 # check -format, and that timezone is correct in end time
265 cat >"$expected" <<'EOF'
266 Sun, 09 Mar 2014 03:30:00 -0400
267 EOF
268
269 TZ=EST5EDT mhical -format '%(pretty{dtend})' \
270 -infile "$MH_TEST_DIR/test1.ics" -outfile "$MH_TEST_DIR/test1.txt"
271 check "$expected" "$MH_TEST_DIR/test1.txt"
272 rm -f "$MH_TEST_DIR/test1.ics"
273
274
275 # check timezone boundary at transition from daylight saving time
276 cat >"$expected" <<'EOF'
277 Summary: EDT to EST
278 At: Sun, 02 Nov 2014 01:59 -0400
279 To: Sun, 02 Nov 2014 02:00
280 EOF
281
282 cat >"$MH_TEST_DIR/test1.ics" <<'EOF'
283 BEGIN:VCALENDAR
284 VERSION:2.0
285 PRODID:test-mhical
286 BEGIN:VTIMEZONE
287 TZID:Eastern Standard Time
288 BEGIN:STANDARD
289 DTSTART:16010101T020000
290 TZOFFSETFROM:-0400
291 TZOFFSETTO:-0500
292 RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11
293 END:STANDARD
294 BEGIN:DAYLIGHT
295 DTSTART:16010101T020000
296 TZOFFSETFROM:-0500
297 TZOFFSETTO:-0400
298 RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3
299 END:DAYLIGHT
300 END:VTIMEZONE
301 BEGIN:VEVENT
302 DTSTAMP:20150101T000000Z
303 DTSTART;TZID=Eastern Standard Time:20141102T015959
304 DTEND;TZID=Eastern Standard Time:20141102T020000
305 Summary: EDT to EST
306 END:VEVENT
307 END:VCALENDAR
308 EOF
309
310 TZ=EST5EDT mhical <"$MH_TEST_DIR/test1.ics" >"$MH_TEST_DIR/test1.txt"
311 check "$expected" "$MH_TEST_DIR/test1.txt"
312
313
314 # check -format, and that timezone is correct in end time
315 cat >"$expected" <<'EOF'
316 Sun, 02 Nov 2014 02:00:00 -0500
317 EOF
318
319 TZ=EST5EDT mhical -format '%(pretty{dtend})' \
320 -infile "$MH_TEST_DIR/test1.ics" -outfile "$MH_TEST_DIR/test1.txt"
321 check "$expected" "$MH_TEST_DIR/test1.txt"
322 rm -f "$MH_TEST_DIR/test1.ics"
323
324
325 printf 'Local-Mailbox: Requestee2 <requestee2@example.com>\n' >> "$MH"
326
327 # check accept of request
328 cat >"$expected" <<'EOF'
329 BEGIN:VCALENDAR
330 METHOD:REPLY
331 PRODID:nmh mhical v0.1
332 VERSION:2.0
333 BEGIN:VTIMEZONE
334 TZID:Eastern Standard Time
335 BEGIN:STANDARD
336 DTSTART:16010101T020000
337 TZOFFSETFROM:-0400
338 TZOFFSETTO:-0500
339 RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11
340 END:STANDARD
341 BEGIN:DAYLIGHT
342 DTSTART:16010101T020000
343 TZOFFSETFROM:-0500
344 TZOFFSETTO:-0400
345 RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3
346 END:DAYLIGHT
347 END:VTIMEZONE
348 BEGIN:VEVENT
349 ORGANIZER;CN=Requester:MAILTO:requester@example.com
350 ATTENDEE;PARTSTAT=ACCEPTED;CN=Requestee2:MAILTO:requestee2@example.com
351 SUMMARY;LANGUAGE=en-US:Accepted: test request
352 DTSTART;TZID=Eastern Standard Time:20150105T090000
353 DTEND;TZID=Eastern Standard Time:20150105T093000
354 UID:0123456789
355 CLASS:PUBLIC
356 PRIORITY:5
357 TRANSP:OPAQUE
358 STATUS:CONFIRMED
359 SEQUENCE:0
360 LOCATION;LANGUAGE=en-US:
361 END:VEVENT
362 END:VCALENDAR
363 EOF
364
365 cat >"$MH_TEST_DIR/test1.ics" <<'EOF'
366 BEGIN:VCALENDAR
367 METHOD:REQUEST
368 PRODID:test-mhical
369 VERSION:2.0
370 BEGIN:VTIMEZONE
371 TZID:Eastern Standard Time
372 BEGIN:STANDARD
373 DTSTART:16010101T020000
374 TZOFFSETFROM:-0400
375 TZOFFSETTO:-0500
376 RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11
377 END:STANDARD
378 BEGIN:DAYLIGHT
379 DTSTART:16010101T020000
380 TZOFFSETFROM:-0500
381 TZOFFSETTO:-0400
382 RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3
383 END:DAYLIGHT
384 END:VTIMEZONE
385 BEGIN:VEVENT
386 ORGANIZER;CN=Requester:MAILTO:requester@example.com
387 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Requestee1
388 :MAILTO:requestee1@example.com
389 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Requestee2
390 :MAILTO:requestee2@example.com
391 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Requestee3
392 :MAILTO:requestee3@example.com
393 SUMMARY;LANGUAGE=en-US:test request
394 DTSTART;TZID=Eastern Standard Time:20150105T090000
395 DTEND;TZID=Eastern Standard Time:20150105T093000
396 UID:0123456789
397 CLASS:PUBLIC
398 PRIORITY:5
399 DTSTAMP:20150101T171600Z
400 TRANSP:OPAQUE
401 STATUS:CONFIRMED
402 SEQUENCE:0
403 LOCATION;LANGUAGE=en-US:
404 BEGIN:VALARM
405 ACTION:DISPLAY
406 DESCRIPTION:REMINDER
407 TRIGGER;RELATED=START:-PT15M
408 END:VALARM
409 END:VEVENT
410 END:VCALENDAR
411 EOF
412
413 mhical -reply accept <"$MH_TEST_DIR/test1.ics" | egrep -v '^DTSTAMP:' \
414 >"$MH_TEST_DIR/test1.txt"
415 check "$expected" "$MH_TEST_DIR/test1.txt"
416 rm -f "$MH_TEST_DIR/test1.ics"
417
418 # check accept of multiple vevent requests in single vcalendar
419 cat >"$expected" <<'EOF'
420 BEGIN:VCALENDAR
421 METHOD:REPLY
422 PRODID:nmh mhical v0.1
423 VERSION:2.0
424 BEGIN:VTIMEZONE
425 TZID:Eastern Standard Time
426 BEGIN:STANDARD
427 DTSTART:16010101T020000
428 TZOFFSETFROM:-0400
429 TZOFFSETTO:-0500
430 RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11
431 END:STANDARD
432 BEGIN:DAYLIGHT
433 DTSTART:16010101T020000
434 TZOFFSETFROM:-0500
435 TZOFFSETTO:-0400
436 RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3
437 END:DAYLIGHT
438 END:VTIMEZONE
439 BEGIN:VEVENT
440 ORGANIZER;CN=Requester:MAILTO:requester@example.com
441 ATTENDEE;PARTSTAT=ACCEPTED;CN=Requestee2:MAILTO:requestee2@example.com
442 SUMMARY;LANGUAGE=en-US:Accepted: test request
443 DTSTART;TZID=Eastern Standard Time:20150105T090000
444 DTEND;TZID=Eastern Standard Time:20150105T093000
445 UID:0123456790
446 CLASS:PUBLIC
447 PRIORITY:5
448 TRANSP:OPAQUE
449 STATUS:CONFIRMED
450 SEQUENCE:0
451 LOCATION;LANGUAGE=en-US:
452 END:VEVENT
453
454 BEGIN:VEVENT
455 ORGANIZER;CN=Requester:MAILTO:requester@example.com
456 ATTENDEE;PARTSTAT=ACCEPTED;CN=Requestee2:MAILTO:requestee2@example.com
457 SUMMARY;LANGUAGE=en-US:Accepted: test request
458 DTSTART;TZID=Eastern Standard Time:20150105T130000
459 DTEND;TZID=Eastern Standard Time:20150105T134500
460 UID:0123456791
461 CLASS:PUBLIC
462 PRIORITY:5
463 TRANSP:OPAQUE
464 STATUS:CONFIRMED
465 SEQUENCE:0
466 LOCATION;LANGUAGE=en-US:
467 END:VEVENT
468 END:VCALENDAR
469 EOF
470
471 cat >"$MH_TEST_DIR/test1.ics" <<'EOF'
472 BEGIN:VCALENDAR
473 METHOD:REQUEST
474 PRODID:test-mhical
475 VERSION:2.0
476
477 BEGIN:VTIMEZONE
478 TZID:Eastern Standard Time
479 BEGIN:STANDARD
480 DTSTART:16010101T020000
481 TZOFFSETFROM:-0400
482 TZOFFSETTO:-0500
483 RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11
484 END:STANDARD
485 BEGIN:DAYLIGHT
486 DTSTART:16010101T020000
487 TZOFFSETFROM:-0500
488 TZOFFSETTO:-0400
489 RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3
490 END:DAYLIGHT
491 END:VTIMEZONE
492
493 BEGIN:VEVENT
494 ORGANIZER;CN=Requester:MAILTO:requester@example.com
495 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Requestee1
496 :MAILTO:requestee1@example.com
497 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Requestee2
498 :MAILTO:requestee2@example.com
499 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Requestee3
500 :MAILTO:requestee3@example.com
501 SUMMARY;LANGUAGE=en-US:test request
502 DTSTART;TZID=Eastern Standard Time:20150105T090000
503 DTEND;TZID=Eastern Standard Time:20150105T093000
504 UID:0123456790
505 CLASS:PUBLIC
506 PRIORITY:5
507 DTSTAMP:20150101T171600Z
508 TRANSP:OPAQUE
509 STATUS:CONFIRMED
510 SEQUENCE:0
511 LOCATION;LANGUAGE=en-US:
512 BEGIN:VALARM
513 ACTION:DISPLAY
514 DESCRIPTION:REMINDER
515 TRIGGER;RELATED=START:-PT15M
516 END:VALARM
517 END:VEVENT
518
519 BEGIN:VEVENT
520 ORGANIZER;CN=Requester:MAILTO:requester@example.com
521 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Requestee2
522 :MAILTO:requestee2@example.com
523 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Requestee3
524 :MAILTO:requestee3@example.com
525 SUMMARY;LANGUAGE=en-US:test request
526 DTSTART;TZID=Eastern Standard Time:20150105T130000
527 DTEND;TZID=Eastern Standard Time:20150105T134500
528 UID:0123456791
529 CLASS:PUBLIC
530 PRIORITY:5
531 DTSTAMP:20150101T171600Z
532 TRANSP:OPAQUE
533 STATUS:CONFIRMED
534 SEQUENCE:0
535 LOCATION;LANGUAGE=en-US:
536 BEGIN:VALARM
537 ACTION:DISPLAY
538 DESCRIPTION:REMINDER
539 TRIGGER;RELATED=START:-PT15M
540 END:VALARM
541 END:VEVENT
542
543 END:VCALENDAR
544 EOF
545
546 mhical -reply accept <"$MH_TEST_DIR/test1.ics" | egrep -v '^DTSTAMP:' \
547 >"$MH_TEST_DIR/test1.txt"
548 check "$expected" "$MH_TEST_DIR/test1.txt"
549 rm -f "$MH_TEST_DIR/test1.ics"
550
551
552 # check decline of request
553 cat >"$expected" <<'EOF'
554 BEGIN:VCALENDAR
555 METHOD:REPLY
556 PRODID:nmh mhical v0.1
557 VERSION:2.0
558 BEGIN:VEVENT
559 ORGANIZER;CN=Requester:MAILTO:requester@example.com
560 ATTENDEE;PARTSTAT=DECLINED;CN=Requestee2:MAILTO:requestee2@example.com
561 SUMMARY;LANGUAGE=en-US:Declined: test request
562 DTSTART:20150105T090000
563 DTEND:20150105T093000
564 UID:0123456789
565 CLASS:PUBLIC
566 PRIORITY:5
567 TRANSP:OPAQUE
568 STATUS:CONFIRMED
569 SEQUENCE:0
570 LOCATION;LANGUAGE=en-US:
571 END:VEVENT
572 END:VCALENDAR
573 EOF
574
575 cat >"$MH_TEST_DIR/test1.ics" <<'EOF'
576 BEGIN:VCALENDAR
577 METHOD:REQUEST
578 PRODID:test-mhical
579 VERSION:2.0
580 BEGIN:VEVENT
581 ORGANIZER;CN=Requester:MAILTO:requester@example.com
582 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Requestee1
583 :MAILTO:requestee1@example.com
584 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Requestee2
585 :MAILTO:requestee2@example.com
586 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Requestee3
587 :MAILTO:requestee3@example.com
588 SUMMARY;LANGUAGE=en-US:test request
589 DTSTART:20150105T090000
590 DTEND:20150105T093000
591 UID:0123456789
592 CLASS:PUBLIC
593 PRIORITY:5
594 DTSTAMP:20150101T171600Z
595 TRANSP:OPAQUE
596 STATUS:CONFIRMED
597 SEQUENCE:0
598 LOCATION;LANGUAGE=en-US:
599 BEGIN:VALARM
600 ACTION:DISPLAY
601 DESCRIPTION:REMINDER
602 TRIGGER;RELATED=START:-PT15M
603 END:VALARM
604 END:VEVENT
605 END:VCALENDAR
606 EOF
607
608 mhical -reply decline <"$MH_TEST_DIR/test1.ics" | egrep -v '^DTSTAMP:' \
609 >"$MH_TEST_DIR/test1.txt"
610 check "$expected" "$MH_TEST_DIR/test1.txt"
611 rm -f "$MH_TEST_DIR/test1.ics"
612
613
614 # check response of tentative to request, and -nocontenttype
615 cat >"$expected" <<'EOF'
616 BEGIN:VCALENDAR
617 METHOD:REPLY
618 PRODID:nmh mhical v0.1
619 VERSION:2.0
620 BEGIN:VEVENT
621 ORGANIZER;CN=Requester:MAILTO:requester@example.com
622 ATTENDEE;PARTSTAT=TENTATIVE;CN=Requestee2:MAILTO:requestee2@example.com
623 SUMMARY;LANGUAGE=en-US:Tentative: test request
624 DTSTART:20150105T090000
625 DTEND:20150105T093000
626 UID:0123456789
627 CLASS:PUBLIC
628 PRIORITY:5
629 TRANSP:OPAQUE
630 STATUS:CONFIRMED
631 SEQUENCE:0
632 LOCATION;LANGUAGE=en-US:
633 END:VEVENT
634 END:VCALENDAR
635 EOF
636
637 cat >"$MH_TEST_DIR/test1.ics" <<'EOF'
638 BEGIN:VCALENDAR
639 METHOD:REQUEST
640 PRODID:test-mhical
641 VERSION:2.0
642 BEGIN:VEVENT
643 ORGANIZER;CN=Requester:MAILTO:requester@example.com
644 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Requestee1
645 :MAILTO:requestee1@example.com
646 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Requestee2
647 :MAILTO:requestee2@example.com
648 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Requestee3
649 :MAILTO:requestee3@example.com
650 SUMMARY;LANGUAGE=en-US:test request
651 DTSTART:20150105T090000
652 DTEND:20150105T093000
653 UID:0123456789
654 CLASS:PUBLIC
655 PRIORITY:5
656 DTSTAMP:20150101T171600Z
657 TRANSP:OPAQUE
658 STATUS:CONFIRMED
659 SEQUENCE:0
660 LOCATION;LANGUAGE=en-US:
661 BEGIN:VALARM
662 ACTION:DISPLAY
663 DESCRIPTION:REMINDER
664 TRIGGER;RELATED=START:-PT15M
665 END:VALARM
666 END:VEVENT
667 END:VCALENDAR
668 EOF
669
670 mhical -reply tentative -contenttype -nocontenttype \
671 -infile "$MH_TEST_DIR/test1.ics" | egrep -v '^DTSTAMP:' \
672 >"$MH_TEST_DIR/test1.txt"
673 check "$expected" "$MH_TEST_DIR/test1.txt"
674 rm -f "$MH_TEST_DIR/test1.ics"
675
676
677 # check cancel request, and -contenttype
678 cat >"$expected" <<'EOF'
679 Content-Type: text/calendar; method="CANCEL"; charset="UTF-8"
680
681 BEGIN:VCALENDAR
682 METHOD:CANCEL
683 PRODID:nmh mhical v0.1
684 VERSION:2.0
685 BEGIN:VEVENT
686 ORGANIZER;CN=Requestee2:MAILTO:requestee2@example.com
687 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Requestee1
688 :MAILTO:requestee1@example.com
689 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Requestee3
690 :MAILTO:requestee3@example.com
691 SUMMARY;LANGUAGE=en-US:Cancelled:test request
692 DTSTART:20150105T090000
693 DTEND:20150105T093000
694 UID:0123456789
695 CLASS:PUBLIC
696 PRIORITY:5
697 TRANSP:OPAQUE
698 STATUS:CANCELLED
699 SEQUENCE:1
700 LOCATION;LANGUAGE=en-US:
701 END:VEVENT
702 END:VCALENDAR
703 EOF
704
705 cat >"$MH_TEST_DIR/test1.ics" <<'EOF'
706 BEGIN:VCALENDAR
707 METHOD:REQUEST
708 PRODID:test-mhical
709 VERSION:2.0
710 BEGIN:VEVENT
711 ORGANIZER;CN=Requestee2:MAILTO:requestee2@example.com
712 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Requestee1
713 :MAILTO:requestee1@example.com
714 ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Requestee3
715 :MAILTO:requestee3@example.com
716 SUMMARY;LANGUAGE=en-US:test request
717 DTSTART:20150105T090000
718 DTEND:20150105T093000
719 UID:0123456789
720 CLASS:PUBLIC
721 PRIORITY:5
722 DTSTAMP:20150101T171600Z
723 TRANSP:OPAQUE
724 STATUS:CONFIRMED
725 SEQUENCE:0
726 LOCATION;LANGUAGE=en-US:
727 BEGIN:VALARM
728 ACTION:DISPLAY
729 DESCRIPTION:REMINDER
730 TRIGGER;RELATED=START:-PT15M
731 END:VALARM
732 END:VEVENT
733 END:VCALENDAR
734 EOF
735
736 mhical -cancel -contenttype <"$MH_TEST_DIR/test1.ics" | egrep -v '^DTSTAMP:' \
737 >"$MH_TEST_DIR/test1.txt"
738 check "$expected" "$MH_TEST_DIR/test1.txt"
739 rm -f "$MH_TEST_DIR/test1.ics"
740
741
742 exit $failed