2015-10-17 | Paul Boddie | raw annotate files changeset graph | Consolidated descriptions of events for both REFRESH requests and for messages sent by the manager, bundling the necessary REQUEST and CANCEL payloads to describe events and their recurrences. Changed organiser-sent messages in the manager to be also sent to the user's own address, not the people-outgoing version of that address, adding support for self-sent CANCEL messages in the person handler. Added the removal of cancelled recurrences to restore periods in events edited in the manager. Otherwise, such periods can never be restored. Expanded the REFRESH method tests. |
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 echo 'add' > "$PREFS/$USER/add_method_response" 42 43 mkdir -p "$PREFS/$SENDER" 44 echo 'Europe/Oslo' > "$PREFS/$USER/TZID" 45 echo 'always' > "$PREFS/$SENDER/event_refreshing" 46 47 # Publish an event, testing registration in the outgoing handler. 48 49 "$OUTGOING_SCRIPT" $ARGS < "$TEMPLATES/event-request-person-recurring.txt" 2>> $ERROR 50 51 grep -q "^20141212T090000Z${TAB}20141212T100000Z" "$FBSENDERFILE" \ 52 && echo "Success" \ 53 || echo "Failed" 54 55 # Test a request from an attendee for the event details to be refreshed. 56 57 "$PERSON_SCRIPT" $ARGS < "$TEMPLATES/event-refresh-person-recurring.txt" 2>> $ERROR \ 58 | "$SHOWMAIL" \ 59 > out2.tmp 60 61 grep -q 'METHOD:REQUEST' out2.tmp \ 62 && echo "Success" \ 63 || echo "Failed" 64 65 # Present the result to the recipient. 66 67 "$PERSON_SCRIPT" $ARGS < out2.tmp 2>> $ERROR \ 68 | "$SHOWMAIL" \ 69 > out3.tmp 70 71 ! grep -q 'METHOD:REPLY' out3.tmp \ 72 && echo "Success" \ 73 || echo "Failed" 74 75 ! [ -e "$FBFILE" ] \ 76 || ! grep -q "^20141212T090000Z${TAB}20141212T100000Z" "$FBFILE" \ 77 && echo "Success" \ 78 || echo "Failed" 79 80 grep -q "^20141212T090000Z${TAB}20141212T100000Z" "$FBOTHERFILE" \ 81 && echo "Success" \ 82 || echo "Failed" 83 84 # Test acceptance and registration in the outgoing handler. 85 86 "$ACCEPT_SCRIPT" $ACCEPT_ARGS "$USER" "event8@example.com" 2>> $ERROR \ 87 | tee out4.tmp \ 88 | "$OUTGOING_SCRIPT" $ARGS 2>> $ERROR 89 90 grep -q "^20141212T090000Z${TAB}20141212T100000Z" "$FBFILE" \ 91 && echo "Success" \ 92 || echo "Failed" 93 94 # Test a request from a non-attendee for the event details to be refreshed. 95 96 "$PERSON_SCRIPT" $ARGS < "$TEMPLATES/event-refresh-person-recurring-non-attendee.txt" 2>> $ERROR \ 97 | "$SHOWMAIL" \ 98 > out5.tmp 99 100 ! grep -q 'METHOD:REQUEST' out5.tmp \ 101 && echo "Success" \ 102 || echo "Failed" 103 104 # Test rescheduling in the outgoing handler. 105 106 "$OUTGOING_SCRIPT" $ARGS < "$TEMPLATES/event-request-person-recurring-reschedule-instance.txt" 2>> $ERROR 107 108 grep -q "^20141011T080000Z${TAB}20141011T090000Z" "$FBSENDERFILE" \ 109 && ! grep -q "^20141010T080000Z${TAB}20141010T090000Z" "$FBSENDERFILE" \ 110 && echo "Success" \ 111 || echo "Failed" 112 113 # Test another request from an attendee for the event details to be refreshed. 114 115 "$PERSON_SCRIPT" $ARGS < "$TEMPLATES/event-refresh-person-recurring.txt" 2>> $ERROR \ 116 | tee out6r.tmp \ 117 | "$SHOWMAIL" \ 118 > out6.tmp 119 120 grep -q 'METHOD:REQUEST' out6.tmp \ 121 && grep -q 'RECURRENCE-ID' out6.tmp \ 122 && [ `grep 'BEGIN:VEVENT' out6.tmp | wc -l` = '2' ] \ 123 && echo "Success" \ 124 || echo "Failed" 125 126 # Process the resulting message. 127 128 "$PERSON_SCRIPT" $ARGS < out6r.tmp 2>> $ERROR \ 129 | "$SHOWMAIL" \ 130 > out6a.tmp 131 132 [ -e "$STORE/$USER/objects/event8@example.com" ] \ 133 && [ -e "$STORE/$USER/recurrences/event8@example.com/20141010T080000Z" ] \ 134 && echo "Success" \ 135 || echo "Failed" 136 137 # Cancel a recurrence. Both the original and rescheduled recurrences should be 138 # absent from the free/busy collection. 139 140 "$OUTGOING_SCRIPT" $ARGS < "$TEMPLATES/event-cancel-person-recurring-rescheduled-instance.txt" 2>> $ERROR 141 142 [ -e "$STORE/$SENDER/objects/event8@example.com" ] \ 143 && ! [ -e "$STORE/$SENDER/recurrences/event8@example.com/20141010T080000Z" ] \ 144 && [ -e "$STORE/$SENDER/cancellations/recurrences/event8@example.com/20141010T080000Z" ] \ 145 && echo "Success" \ 146 || echo "Failed" 147 148 ! grep -q "^20141010T080000Z${TAB}20141010T090000Z" "$FBSENDERFILE" \ 149 && ! grep -q "^20141011T080000Z${TAB}20141011T090000Z" "$FBSENDERFILE" \ 150 && echo "Success" \ 151 || echo "Failed" 152 153 # Test another request from an attendee for the event details to be refreshed. 154 # The additional recurrence should now be absent. 155 156 "$PERSON_SCRIPT" $ARGS < "$TEMPLATES/event-refresh-person-recurring.txt" 2>> $ERROR \ 157 | tee out7r.tmp \ 158 | "$SHOWMAIL" \ 159 > out7.tmp 160 161 grep -q 'METHOD:REQUEST' out7.tmp \ 162 && grep -q 'METHOD:CANCEL' out7.tmp \ 163 && [ `grep 'BEGIN:VEVENT' out7.tmp | wc -l` = '2' ] \ 164 && echo "Success" \ 165 || echo "Failed" 166 167 # Process the resulting message. 168 169 "$PERSON_SCRIPT" $ARGS < out7r.tmp 2>> $ERROR \ 170 | "$SHOWMAIL" \ 171 > out7a.tmp 172 173 [ -e "$STORE/$USER/objects/event8@example.com" ] \ 174 && ! [ -e "$STORE/$USER/recurrences/event8@example.com/20141010T080000Z" ] \ 175 && [ -e "$STORE/$USER/cancellations/recurrences/event8@example.com/20141010T080000Z" ] \ 176 && echo "Success" \ 177 || echo "Failed" 178 179 # Re-add the cancelled instance. 180 181 "$OUTGOING_SCRIPT" $ARGS < "$TEMPLATES/event-add-person-recurring-rescheduled-instance.txt" 2>> $ERROR 182 183 grep -q "^20141010T080000Z${TAB}20141010T090000Z" "$FBSENDERFILE" \ 184 && ! grep -q "^20141011T080000Z${TAB}20141011T090000Z" "$FBSENDERFILE" \ 185 && echo "Success" \ 186 || echo "Failed" 187 188 "$PERSON_SCRIPT" $ARGS < "$TEMPLATES/event-add-person-recurring-rescheduled-instance.txt" 2>> $ERROR \ 189 | "$SHOWMAIL" \ 190 > out8.tmp 191 192 [ -e "$STORE/$USER/objects/event8@example.com" ] \ 193 && [ -e "$STORE/$USER/recurrences/event8@example.com/20141010T080000Z" ] \ 194 && ! [ -e "$STORE/$USER/cancellations/recurrences/event8@example.com/20141010T080000Z" ] \ 195 && echo "Success" \ 196 || echo "Failed" 197 198 ! grep -q "^20141010T080000Z${TAB}20141010T090000Z" "$FBFILE" \ 199 && echo "Success" \ 200 || echo "Failed" 201 202 grep -q "^20141010T080000Z${TAB}20141010T090000Z" "$FBOTHERFILE" \ 203 && echo "Success" \ 204 || echo "Failed" 205 206 # Test acceptance and registration in the outgoing handler. 207 208 "$ACCEPT_SCRIPT" $ACCEPT_ARGS "$USER" "event8@example.com" "20141010T080000Z" 2>> $ERROR \ 209 | tee out9.tmp \ 210 | "$OUTGOING_SCRIPT" $ARGS 2>> $ERROR 211 212 grep -q "^20141010T080000Z${TAB}20141010T090000Z" "$FBFILE" \ 213 && echo "Success" \ 214 || echo "Failed" 215 216 # Test yet another request from an attendee for the event details to be refreshed. 217 218 "$PERSON_SCRIPT" $ARGS < "$TEMPLATES/event-refresh-person-recurring.txt" 2>> $ERROR \ 219 | tee out10r.tmp \ 220 | "$SHOWMAIL" \ 221 > out10.tmp 222 223 grep -q 'METHOD:REQUEST' out10.tmp \ 224 && grep -q 'RECURRENCE-ID' out10.tmp \ 225 && [ `grep 'BEGIN:VEVENT' out10.tmp | wc -l` = '2' ] \ 226 && echo "Success" \ 227 || echo "Failed" 228 229 # Process the resulting message. 230 231 "$PERSON_SCRIPT" $ARGS < out10r.tmp 2>> $ERROR \ 232 | "$SHOWMAIL" \ 233 > out11.tmp 234 235 [ -e "$STORE/$USER/objects/event8@example.com" ] \ 236 && [ -e "$STORE/$USER/recurrences/event8@example.com/20141010T080000Z" ] \ 237 && echo "Success" \ 238 || echo "Failed"