1 #!/bin/sh 2 3 . "`dirname \"$0\"`/common.sh" 4 5 USER1="mailto:resource-car-porsche911@example.com" 6 USER2="mailto:resource-car-fiat500@example.com" 7 SENDER1="mailto:paul.boddie@example.com" 8 SENDER2="mailto:vincent.vole@example.com" 9 SENDERADDRESS1="paul.boddie@example.com" 10 SENDERADDRESS2="vincent.vole@example.com" 11 FBFILE1="$STORE/$USER1/freebusy" 12 FBFILE2="$STORE/$USER2/freebusy" 13 FBSENDERFILE1="$STORE/$SENDER1/freebusy" 14 FBSENDERFILE2="$STORE/$SENDER2/freebusy" 15 QUOTA=cars 16 JOURNALFILE1="$JOURNAL/$QUOTA/journal/$SENDER1" 17 JOURNALFILE2="$JOURNAL/$QUOTA/journal/$SENDER2" 18 19 mkdir -p "$PREFS/$USER1" 20 echo 'Europe/Oslo' > "$PREFS/$USER1/TZID" 21 echo 'share' > "$PREFS/$USER1/freebusy_sharing" 22 cat > "$PREFS/$USER1/scheduling_function" <<EOF 23 schedule_in_freebusy 24 check_quota $QUOTA 25 EOF 26 cat > "$PREFS/$USER1/confirmation_function" <<EOF 27 add_to_quota $QUOTA 28 EOF 29 cat > "$PREFS/$USER1/retraction_function" <<EOF 30 remove_from_quota $QUOTA 31 EOF 32 33 mkdir -p "$PREFS/$USER2" 34 echo 'Europe/Oslo' > "$PREFS/$USER2/TZID" 35 echo 'share' > "$PREFS/$USER2/freebusy_sharing" 36 cat > "$PREFS/$USER2/scheduling_function" <<EOF 37 schedule_in_freebusy 38 check_quota $QUOTA 39 EOF 40 cat > "$PREFS/$USER2/confirmation_function" <<EOF 41 add_to_quota $QUOTA 42 EOF 43 cat > "$PREFS/$USER2/retraction_function" <<EOF 44 remove_from_quota $QUOTA 45 EOF 46 47 mkdir -p "$JOURNAL/$QUOTA" 48 cat > "$JOURNAL/$QUOTA/limits" <<EOF 49 mailto:vincent.vole@example.com PT10H 50 * PT5H 51 EOF 52 53 "$RESOURCE_SCRIPT" $ARGS < "$TEMPLATES/fb-request-car-all.txt" 2>> $ERROR \ 54 | "$SHOWMAIL" \ 55 > out0.tmp 56 57 grep -q 'METHOD:REPLY' out0.tmp \ 58 && ! grep -q '^FREEBUSY' out0.tmp \ 59 && echo "Success" \ 60 || echo "Failed" 61 62 # Attempt to schedule an event. 63 64 "$OUTGOING_SCRIPT" $ARGS < "$TEMPLATES/event-request-cars-recurring.txt" 2>> $ERROR 65 66 grep -q "^20141126T150000Z${TAB}20141126T160000Z" "$FBSENDERFILE1" \ 67 && grep -q "^20141206T150000Z${TAB}20141206T160000Z" "$FBSENDERFILE1" \ 68 && echo "Success" \ 69 || echo "Failed" 70 71 # Present the request to the resource. 72 73 "$RESOURCE_SCRIPT" $ARGS < "$TEMPLATES/event-request-cars-recurring.txt" 2>> $ERROR \ 74 | tee out1r.tmp \ 75 | "$SHOWMAIL" \ 76 > out1.tmp 77 78 grep -q 'METHOD:REPLY' out1.tmp \ 79 && grep -q 'ATTENDEE.*;PARTSTAT=DECLINED' out1.tmp \ 80 && echo "Success" \ 81 || echo "Failed" 82 83 ( ! [ -e "$FBFILE1" ] \ 84 || ( ! grep -q "^20141126T150000Z${TAB}20141126T160000Z" "$FBFILE1" \ 85 && ! grep -q "^20141206T150000Z${TAB}20141206T160000Z" "$FBFILE1" )) \ 86 && ( ! [ -e "$FBFILE2" ] \ 87 || ( ! grep -q "^20141126T150000Z${TAB}20141126T160000Z" "$FBFILE2" \ 88 && ! grep -q "^20141206T150000Z${TAB}20141206T160000Z" "$FBFILE2" )) \ 89 && echo "Success" \ 90 || echo "Failed" 91 92 # Check the quota (event is not confirmed). 93 94 ! [ -e "$JOURNALFILE1" ] \ 95 || ! grep -q "event25@example.com" "$JOURNALFILE1" \ 96 && echo "Success" \ 97 || echo "Failed" 98 99 # Modify the event and attempt to schedule it again. 100 101 sed 's/FREQ=DAILY/FREQ=DAILY;COUNT=5/;' "$TEMPLATES/event-request-cars-recurring.txt" \ 102 | "$OUTGOING_SCRIPT" $ARGS 2>> $ERROR 103 104 grep -q "^20141126T150000Z${TAB}20141126T160000Z" "$FBSENDERFILE1" \ 105 && grep -q "^20141130T150000Z${TAB}20141130T160000Z" "$FBSENDERFILE1" \ 106 && echo "Success" \ 107 || echo "Failed" 108 109 # Present the request to the resource. 110 111 sed 's/FREQ=DAILY/FREQ=DAILY;COUNT=5/;' "$TEMPLATES/event-request-cars-recurring.txt" \ 112 | "$RESOURCE_SCRIPT" $ARGS 2>> $ERROR \ 113 | tee out2r.tmp \ 114 | "$SHOWMAIL" \ 115 > out2.tmp 116 117 # Since the email module used by showmail.py cannot stop after reading a single 118 # message, the second message is obtained. 119 120 grep -n '^From ' out2r.tmp \ 121 | tail -n 1 \ 122 | cut -d ':' -f 1 \ 123 | xargs -I{} tail -n +'{}' out2r.tmp \ 124 | "$SHOWMAIL" \ 125 >> out2.tmp 126 127 grep -q 'METHOD:REPLY' out2.tmp \ 128 && grep -q 'ATTENDEE.*;PARTSTAT=ACCEPTED' out2.tmp \ 129 && grep -q 'ATTENDEE.*;PARTSTAT=DECLINED' out2.tmp \ 130 && echo "Success" \ 131 || echo "Failed" 132 133 (( ! [ -e "$FBFILE1" ] \ 134 || ( ! grep -q "^20141126T150000Z${TAB}20141126T160000Z" "$FBFILE1" \ 135 && ! grep -q "^20141130T150000Z${TAB}20141130T160000Z" "$FBFILE1" )) \ 136 && [ -e "$FBFILE2" ] \ 137 && grep -q "^20141126T150000Z${TAB}20141126T160000Z" "$FBFILE2" \ 138 && grep -q "^20141130T150000Z${TAB}20141130T160000Z" "$FBFILE2" ) \ 139 || (( ! [ -e "$FBFILE2" ] \ 140 || ( ! grep -q "^20141126T150000Z${TAB}20141126T160000Z" "$FBFILE2" \ 141 && ! grep -q "^20141130T150000Z${TAB}20141130T160000Z" "$FBFILE2" )) \ 142 && [ -e "$FBFILE1" ] \ 143 && grep -q "^20141126T150000Z${TAB}20141126T160000Z" "$FBFILE1" \ 144 && grep -q "^20141130T150000Z${TAB}20141130T160000Z" "$FBFILE1" ) \ 145 && echo "Success" \ 146 || echo "Failed" 147 148 # Check the quota (event is confirmed for one resource). 149 150 ! [ -e "$JOURNALFILE1" ] \ 151 || grep -q "event25@example.com" "$JOURNALFILE1" \ 152 && echo "Success" \ 153 || echo "Failed" 154 155 # Cancel the event. 156 157 "$OUTGOING_SCRIPT" $ARGS < "$TEMPLATES/event-cancel-cars-recurring.txt" 2>> $ERROR 158 159 ! grep -q "^20141126T150000Z${TAB}20141126T160000Z" "$FBSENDERFILE1" \ 160 && ! grep -q "^20141130T150000Z${TAB}20141130T160000Z" "$FBSENDERFILE1" \ 161 && echo "Success" \ 162 || echo "Failed" 163 164 # Present the request to the resource. 165 166 "$RESOURCE_SCRIPT" $ARGS < "$TEMPLATES/event-cancel-cars-recurring.txt" 2>> $ERROR \ 167 | tee out3r.tmp \ 168 | "$SHOWMAIL" \ 169 > out3.tmp 170 171 ! grep -q 'METHOD:REPLY' out3.tmp \ 172 && echo "Success" \ 173 || echo "Failed" 174 175 ( ! [ -e "$FBFILE1" ] \ 176 || ( ! grep -q "^20141126T150000Z${TAB}20141126T160000Z" "$FBFILE1" \ 177 && ! grep -q "^20141206T150000Z${TAB}20141206T160000Z" "$FBFILE1" )) \ 178 && ( ! [ -e "$FBFILE2" ] \ 179 || ( ! grep -q "^20141126T150000Z${TAB}20141126T160000Z" "$FBFILE2" \ 180 && ! grep -q "^20141206T150000Z${TAB}20141206T160000Z" "$FBFILE2" )) \ 181 && echo "Success" \ 182 || echo "Failed" 183 184 # Check the quota (event is retracted). 185 186 ! [ -e "$JOURNALFILE1" ] \ 187 || [ `grep "event25@example.com" "$JOURNALFILE1" | wc -l` = '2' ] \ 188 && echo "Success" \ 189 || echo "Failed" 190 191 # Modify the event and attempt to schedule it again. 192 193 sed 's/FREQ=DAILY/FREQ=DAILY;COUNT=5/;' "$TEMPLATES/event-request-cars-recurring.txt" \ 194 | sed "s/$SENDERADDRESS1/$SENDERADDRESS2/;" \ 195 | "$OUTGOING_SCRIPT" $ARGS 2>> $ERROR 196 197 grep -q "^20141126T150000Z${TAB}20141126T160000Z" "$FBSENDERFILE2" \ 198 && grep -q "^20141130T150000Z${TAB}20141130T160000Z" "$FBSENDERFILE2" \ 199 && echo "Success" \ 200 || echo "Failed" 201 202 # Present the request to the resource. 203 204 sed 's/FREQ=DAILY/FREQ=DAILY;COUNT=5/;' "$TEMPLATES/event-request-cars-recurring.txt" \ 205 | sed "s/$SENDERADDRESS1/$SENDERADDRESS2/;" \ 206 | "$RESOURCE_SCRIPT" $ARGS 2>> $ERROR \ 207 | tee out4r.tmp \ 208 | "$SHOWMAIL" \ 209 > out4.tmp 210 211 # Since the email module used by showmail.py cannot stop after reading a single 212 # message, the second message is obtained. 213 214 grep -n '^From ' out4r.tmp \ 215 | tail -n 1 \ 216 | cut -d ':' -f 1 \ 217 | xargs -I{} tail -n +'{}' out4r.tmp \ 218 | "$SHOWMAIL" \ 219 >> out4.tmp 220 221 grep -q 'METHOD:REPLY' out4.tmp \ 222 && [ `grep 'ATTENDEE.*;PARTSTAT=ACCEPTED' out4.tmp | wc -l` = '2' ] \ 223 && echo "Success" \ 224 || echo "Failed" 225 226 [ -e "$FBFILE1" ] \ 227 && grep -q "^20141126T150000Z${TAB}20141126T160000Z" "$FBFILE1" \ 228 && grep -q "^20141130T150000Z${TAB}20141130T160000Z" "$FBFILE1" \ 229 && [ -e "$FBFILE2" ] \ 230 && grep -q "^20141126T150000Z${TAB}20141126T160000Z" "$FBFILE2" \ 231 && grep -q "^20141130T150000Z${TAB}20141130T160000Z" "$FBFILE2" \ 232 && echo "Success" \ 233 || echo "Failed" 234 235 # Check the quota (event is confirmed for both resources). 236 237 [ -e "$JOURNALFILE2" ] \ 238 && [ `grep "event25@example.com" "$JOURNALFILE2" | wc -l` = '1' ] \ 239 && echo "Success" \ 240 || echo "Failed"