1 #!/bin/sh 2 3 THIS_DIR=`dirname $0` 4 5 TEMPLATES="$THIS_DIR/templates" 6 PERSON_SCRIPT="$THIS_DIR/../imip_person.py" 7 SHOWMAIL="$THIS_DIR/../tools/showmail.py" 8 STORE=/tmp/store 9 STATIC=/tmp/static 10 PREFS=/tmp/prefs 11 ARGS="-S $STORE -P $STATIC -p $PREFS -d" 12 USER="mailto:vincent.vole@example.com" 13 SENDER="mailto:paul.boddie@example.com" 14 FBFILE="$STORE/$USER/freebusy" 15 FBOTHERFILE="$STORE/$USER/freebusy-other/$SENDER" 16 FBSENDERFILE="$STORE/$SENDER/freebusy" 17 TAB=`printf '\t'` 18 19 OUTGOING_SCRIPT="$THIS_DIR/../imip_person_outgoing.py" 20 21 PYTHONPATH="$THIS_DIR/.." 22 export PYTHONPATH 23 24 ACCEPT_SCRIPT="$THIS_DIR/test_handle.py" 25 ACCEPT_ARGS="accept $STORE" 26 27 DECLINE_SCRIPT="$THIS_DIR/test_handle.py" 28 DECLINE_ARGS="decline $STORE" 29 30 ERROR=err.tmp 31 32 rm -r $STORE 33 rm -r $STATIC 34 rm -r $PREFS 35 rm $ERROR 36 rm out*.tmp 37 38 mkdir -p "$PREFS/$USER" 39 echo 'Europe/Oslo' > "$PREFS/$USER/TZID" 40 echo 'share' > "$PREFS/$USER/freebusy_sharing" 41 42 mkdir -p "$PREFS/$SENDER" 43 echo 'Europe/Oslo' > "$PREFS/$USER/TZID" 44 45 # Test free/busy responses. 46 47 "$PERSON_SCRIPT" $ARGS < "$TEMPLATES/fb-request-person-all.txt" 2>> $ERROR \ 48 | "$SHOWMAIL" \ 49 > out0.tmp 50 51 grep -q 'METHOD:REPLY' out0.tmp \ 52 && ! grep -q '^FREEBUSY' out0.tmp \ 53 && echo "Success" \ 54 || echo "Failed" 55 56 "$PERSON_SCRIPT" $ARGS < "$TEMPLATES/fb-request-person.txt" 2>> $ERROR \ 57 | "$SHOWMAIL" \ 58 > out1.tmp 59 60 grep -q 'METHOD:REPLY' out1.tmp \ 61 && ! grep -q '^FREEBUSY' out1.tmp \ 62 && echo "Success" \ 63 || echo "Failed" 64 65 # Publish an event, testing registration in the outgoing handler. 66 67 "$OUTGOING_SCRIPT" $ARGS < "$TEMPLATES/event-request-person-recurring.txt" 2>> $ERROR 68 69 grep -q "^20141212T090000Z${TAB}20141212T100000Z" "$FBSENDERFILE" \ 70 && echo "Success" \ 71 || echo "Failed" 72 73 # Test registration in the incoming handler for the recipient. 74 75 "$PERSON_SCRIPT" $ARGS < "$TEMPLATES/event-request-person-recurring.txt" 2>> $ERROR \ 76 | "$SHOWMAIL" \ 77 > out2.tmp 78 79 ! grep -q 'METHOD:REPLY' out2.tmp \ 80 && echo "Success" \ 81 || echo "Failed" 82 83 ! grep -q "^20141212T090000Z${TAB}20141212T100000Z" "$FBFILE" \ 84 && echo "Success" \ 85 || echo "Failed" 86 87 grep -q "^20141212T090000Z${TAB}20141212T100000Z" "$FBOTHERFILE" \ 88 && echo "Success" \ 89 || echo "Failed" 90 91 # Test acceptance and registration in the outgoing handler. 92 93 "$ACCEPT_SCRIPT" $ACCEPT_ARGS "$USER" "event8@example.com" 2>> $ERROR \ 94 | tee out3.tmp \ 95 | "$OUTGOING_SCRIPT" $ARGS 2>> $ERROR 96 97 grep -q "^20141212T090000Z${TAB}20141212T100000Z" "$FBFILE" \ 98 && echo "Success" \ 99 || echo "Failed" 100 101 # Test recurrence cancellation in the outgoing handler. 102 103 "$OUTGOING_SCRIPT" $ARGS < "$TEMPLATES/event-cancel-person-recurring-instance.txt" 2>> $ERROR 104 105 [ `grep "event8@example.com" "$FBSENDERFILE" | wc -l` = '2' ] \ 106 && ! grep -q "^20141114T090000Z${TAB}20141114T100000Z" "$FBSENDERFILE" \ 107 && echo "Success" \ 108 || echo "Failed" 109 110 # Test cancellation in the incoming handler. 111 112 "$PERSON_SCRIPT" $ARGS < "$TEMPLATES/event-cancel-person-recurring-instance.txt" 2>> $ERROR \ 113 | "$SHOWMAIL" \ 114 > out4.tmp 115 116 ! grep -q 'METHOD:REPLY' out4.tmp \ 117 && echo "Success" \ 118 || echo "Failed" 119 120 [ `grep "event8@example.com" "$FBFILE" | wc -l` = '2' ] \ 121 && ! grep -q "^20141114T090000Z${TAB}20141114T100000Z" "$FBFILE" \ 122 && echo "Success" \ 123 || echo "Failed" 124 125 [ `grep "event8@example.com" "$FBOTHERFILE" | wc -l` = '2' ] \ 126 && ! grep -q "^20141114T090000Z${TAB}20141114T100000Z" "$FBOTHERFILE" \ 127 && echo "Success" \ 128 || echo "Failed" 129 130 # Test rescheduling in the outgoing handler. 131 132 "$OUTGOING_SCRIPT" $ARGS < "$TEMPLATES/event-request-person-recurring-reschedule-instance.txt" 2>> $ERROR 133 134 grep -q "^20141011T080000Z${TAB}20141011T090000Z" "$FBSENDERFILE" \ 135 && ! grep -q "^20141010T080000Z${TAB}20141010T090000Z" "$FBSENDERFILE" \ 136 && echo "Success" \ 137 || echo "Failed" 138 139 # Test rescheduling in the incoming handler. 140 141 "$PERSON_SCRIPT" $ARGS < "$TEMPLATES/event-request-person-recurring-reschedule-instance.txt" 2>> $ERROR \ 142 | "$SHOWMAIL" \ 143 > out5.tmp 144 145 ! grep -q 'METHOD:REPLY' out5.tmp \ 146 && echo "Success" \ 147 || echo "Failed" 148 149 ! grep -q "^20141011T080000Z${TAB}20141011T090000Z" "$FBFILE" \ 150 && grep -q "^20141010T080000Z${TAB}20141010T090000Z" "$FBFILE" \ 151 && echo "Success" \ 152 || echo "Failed" 153 154 grep -q "^20141011T080000Z${TAB}20141011T090000Z" "$FBOTHERFILE" \ 155 && ! grep -q "^20141010T080000Z${TAB}20141010T090000Z" "$FBOTHERFILE" \ 156 && echo "Success" \ 157 || echo "Failed" 158 159 # Test rescheduling acceptance in the outgoing handler. 160 161 "$ACCEPT_SCRIPT" $ACCEPT_ARGS "$USER" "event8@example.com" "20141010T080000Z" 2>> $ERROR \ 162 | tee out6.tmp \ 163 | "$OUTGOING_SCRIPT" $ARGS 2>> $ERROR 164 165 grep -q "^20141011T080000Z${TAB}20141011T090000Z" "$FBFILE" \ 166 && ! grep -q "^20141010T080000Z${TAB}20141010T090000Z" "$FBFILE" \ 167 && echo "Success" \ 168 || echo "Failed" 169 170 # Test complete cancellation in the outgoing handler. 171 172 "$OUTGOING_SCRIPT" $ARGS < "$TEMPLATES/event-cancel-person-recurring.txt" 2>> $ERROR 173 174 ! grep -q "event8@example.com" "$FBSENDERFILE" \ 175 && echo "Success" \ 176 || echo "Failed" 177 178 # Test complete cancellation in the incoming handler. 179 180 "$PERSON_SCRIPT" $ARGS < "$TEMPLATES/event-cancel-person-recurring.txt" 2>> $ERROR \ 181 | "$SHOWMAIL" \ 182 > out6.tmp 183 184 ! grep -q 'METHOD:REPLY' out6.tmp \ 185 && echo "Success" \ 186 || echo "Failed" 187 188 ! grep -q "event8@example.com" "$FBFILE" \ 189 && echo "Success" \ 190 || echo "Failed" 191 192 ! grep -q "event8@example.com" "$FBOTHERFILE" \ 193 && echo "Success" \ 194 || echo "Failed" 195 196 # Switch time zones. 197 198 echo 'Europe/Mariehamn' > "$PREFS/$USER/TZID" 199 200 "$OUTGOING_SCRIPT" $ARGS < "$TEMPLATES/event-request-person-recurring.txt" 2>> $ERROR 201 202 grep -q "^20141212T090000Z${TAB}20141212T100000Z" "$FBSENDERFILE" \ 203 && echo "Success" \ 204 || echo "Failed" 205 206 "$PERSON_SCRIPT" $ARGS < "$TEMPLATES/event-request-person-recurring.txt" 2>> $ERROR \ 207 | "$SHOWMAIL" \ 208 > out7.tmp 209 210 ! grep -q 'METHOD:REPLY' out7.tmp \ 211 && echo "Success" \ 212 || echo "Failed" 213 214 ! grep -q "^20141212T090000Z${TAB}20141212T100000Z" "$FBFILE" \ 215 && echo "Success" \ 216 || echo "Failed" 217 218 grep -q "^20141212T090000Z${TAB}20141212T100000Z" "$FBOTHERFILE" \ 219 && echo "Success" \ 220 || echo "Failed" 221 222 "$ACCEPT_SCRIPT" $ACCEPT_ARGS "$USER" "event8@example.com" 2>> $ERROR \ 223 | tee out8.tmp \ 224 | "$OUTGOING_SCRIPT" $ARGS 2>> $ERROR 225 226 grep -q "^20141212T090000Z${TAB}20141212T100000Z" "$FBFILE" \ 227 && echo "Success" \ 228 || echo "Failed" 229 230 "$OUTGOING_SCRIPT" $ARGS < "$TEMPLATES/event-cancel-person-recurring.txt" 2>> $ERROR 231 232 ! grep -q "event8@example.com" "$FBSENDERFILE" \ 233 && echo "Success" \ 234 || echo "Failed" 235 236 "$PERSON_SCRIPT" $ARGS < "$TEMPLATES/event-cancel-person-recurring.txt" 2>> $ERROR \ 237 | "$SHOWMAIL" \ 238 > out9.tmp 239 240 ! grep -q 'METHOD:REPLY' out9.tmp \ 241 && echo "Success" \ 242 || echo "Failed" 243 244 ! grep -q "event8@example.com" "$FBFILE" \ 245 && echo "Success" \ 246 || echo "Failed" 247 248 ! grep -q "event8@example.com" "$FBOTHERFILE" \ 249 && echo "Success" \ 250 || echo "Failed" 251 252 # Test floating dates. Here, the outgoing interpretation is different because 253 # the sender is in a different time zone. 254 255 "$OUTGOING_SCRIPT" $ARGS < "$TEMPLATES/event-request-person-recurring-day-floating.txt" 2>> $ERROR 256 257 grep -q "^20141211T230000Z${TAB}20141212T230000Z" "$FBSENDERFILE" \ 258 && echo "Success" \ 259 || echo "Failed" 260 261 "$PERSON_SCRIPT" $ARGS < "$TEMPLATES/event-request-person-recurring-day-floating.txt" 2>> $ERROR \ 262 | "$SHOWMAIL" \ 263 > out10.tmp 264 265 ! grep -q 'METHOD:REPLY' out10.tmp \ 266 && echo "Success" \ 267 || echo "Failed" 268 269 ! grep -q "^20141211T220000Z${TAB}20141212T220000Z" "$FBFILE" \ 270 && echo "Success" \ 271 || echo "Failed" 272 273 grep -q "^20141211T220000Z${TAB}20141212T220000Z" "$FBOTHERFILE" \ 274 && echo "Success" \ 275 || echo "Failed" 276 277 "$ACCEPT_SCRIPT" $ACCEPT_ARGS "$USER" "event12@example.com" 2>> $ERROR \ 278 | tee out11.tmp \ 279 | "$OUTGOING_SCRIPT" $ARGS 2>> $ERROR 280 281 grep -q "^20141211T220000Z${TAB}20141212T220000Z" "$FBFILE" \ 282 && echo "Success" \ 283 || echo "Failed"