1 #!/bin/sh 2 3 . "`dirname \"$0\"`/common_minimal.sh" 4 5 ACCEPT_SCRIPT="$THIS_DIR/test_handle.py" 6 ACCEPT_ARGS="accept $STORE_TYPE $STORE $JOURNAL $PREFS" 7 8 COUNTER_SCRIPT="$THIS_DIR/test_handle.py" 9 COUNTER_ARGS="counter $STORE_TYPE $STORE $JOURNAL $PREFS" 10 11 DECLINE_SCRIPT="$THIS_DIR/test_handle.py" 12 DECLINE_ARGS="decline $STORE_TYPE $STORE $JOURNAL $PREFS" 13 14 FREEBUSY_SCRIPT="$BASE_DIR/tools/make_freebusy.py" 15 FREEBUSY_ARGS="-s -n" 16 FREEBUSY_QUOTA_ARGS="-s -q" 17 18 LIST_SCRIPT="$THIS_DIR/list_table.py" 19 LIST_ARGS="$STORE_TYPE $STORE $JOURNAL" 20 21 OUTGOING_SCRIPT="$BASE_DIR/imip_person_outgoing.py" 22 23 PERSON_SCRIPT="$BASE_DIR/imip_person.py" 24 25 SET_DELEGATES="$BASE_DIR/tools/set_delegates.py" 26 SET_DELEGATES_ARGS="-T $STORE_TYPE -j $JOURNAL" 27 28 SET_QUOTA_GROUPS="$BASE_DIR/tools/set_quota_groups.py" 29 SET_QUOTA_GROUPS_ARGS="-T $STORE_TYPE -j $JOURNAL" 30 31 SET_QUOTA_LIMITS="$BASE_DIR/tools/set_quota_limits.py" 32 SET_QUOTA_LIMITS_ARGS="-T $STORE_TYPE -j $JOURNAL" 33 34 TEXT_CLIENT="$BASE_DIR/imip_text_client.py" 35 36 TAB=`printf '\t'` 37 38 PYTHONPATH="$BASE_DIR" 39 export PYTHONPATH 40 41 42 43 # Helper functions. 44 45 failed() { 46 # [ <filename> ] 47 echo -n "Failed" 48 if [ "$1" ]; then 49 echo ": $1" 50 else 51 echo 52 fi 53 } 54 55 success() { 56 echo "Success" 57 } 58 59 have_occurrences() { 60 # <string> <number> [ <filename> ] 61 if [ "$3" ]; then 62 [ `grep "$1" "$3" | wc -l` = "$2" ] 63 else 64 [ `grep "$1" | wc -l` = "$2" ] 65 fi 66 } 67 68 is_absent() { 69 # <string> [ <filename> ] 70 if [ "$2" ]; then 71 ! grep -q "$1" "$2" 72 else 73 ! grep -q "$1" 74 fi 75 } 76 77 is_present() { 78 # <string> [ <filename> ] 79 if [ "$2" ]; then 80 grep -q "$1" "$2" 81 else 82 grep -q "$1" 83 fi 84 } 85 86 list_script() { 87 # <filename> <arg>... 88 FILENAME=$1 89 shift 1 90 "$LIST_SCRIPT" $LIST_ARGS $* > "$FILENAME" 91 } 92 93 outgoing_script() { 94 # [ <filename> ] 95 if [ "$1" ]; then 96 "$OUTGOING_SCRIPT" < "$1" $ARGS 2>> $ERROR 97 else 98 "$OUTGOING_SCRIPT" $ARGS 2>> $ERROR 99 fi 100 } 101 102 person_script() { 103 # <filename> <output filename> [ <raw output filename> ] 104 OUTFILE="$3" 105 "$PERSON_SCRIPT" $ARGS < "$1" 2>> $ERROR \ 106 | tee $OUTFILE \ 107 | "$SHOWMAIL" \ 108 > "$2" 109 } 110 111 showmail() { 112 # <filename> 113 "$SHOWMAIL" < "$1" 114 } 115 116 test_freebusy() { 117 # <start> <end> <filename> 118 is_present "^$1${TAB}$2" "$3" && success || failed "$3" 119 } 120 121 test_freebusy_missing() { 122 # <start> <end> <filename> 123 is_absent "^$1${TAB}$2" "$3" && success || failed "$3" 124 } 125 126 text_client() { 127 # <user> <command filename> [ <event filename> ] 128 LOG=`basename "$2" .tmp`_log.tmp 129 if [ "$3" ]; then 130 "$TEXT_CLIENT" $ARGS -u "$1" -f "$3" --echo < "$2" > "$LOG" 131 else 132 "$TEXT_CLIENT" $ARGS -u "$1" --echo < "$2" > "$LOG" 133 fi 134 } 135 136 text_client_specific() { 137 # <user> <command filename> <uid> [ <recurrence-id> ] 138 LOG=`basename "$2" .tmp`_log.tmp 139 if [ "$4" ]; then 140 "$TEXT_CLIENT" $ARGS -u "$1" --uid "$3" --recurrence-id "$4" --echo < "$2" > "$LOG" 141 else 142 "$TEXT_CLIENT" $ARGS -u "$1" --uid "$3" --echo < "$2" > "$LOG" 143 fi 144 } 145 146 test_initial_freebusy() { 147 person_script "$TEMPLATES/fb-request-person-all.txt" "init_fb.tmp" 148 149 # Expect a reply with no periods. 150 151 is_present 'METHOD:REPLY' "init_fb.tmp" \ 152 && is_absent '^FREEBUSY' "init_fb.tmp" \ 153 && success || failed "init_fb.tmp" 154 } 155 156 test_initial_freebusy_limited() { 157 person_script "$TEMPLATES/fb-request-person.txt" "init_fb_limited.tmp" 158 159 # Expect a reply with no periods. 160 161 is_present 'METHOD:REPLY' "init_fb_limited.tmp" \ 162 && is_absent '^FREEBUSY' "init_fb_limited.tmp" \ 163 && success || failed "init_fb_limited.tmp" 164 } 165 166 167 168 # Test environment initialisation. 169 170 if [ "$STORE_TYPE" = "file" ]; then 171 rm -rf "$STORE" 172 rm -rf "$JOURNAL" 173 elif [ "$STORE_TYPE" = "postgresql" ]; then 174 dropdb "$DBNAME" 175 createdb "$DBNAME" 176 psql -q -f "$BASE_DIR/conf/postgresql/schema.sql" "$DBNAME" 2>> $DBERROR 177 fi 178 179 rm -rf "$STATIC" 180 rm -rf "$PREFS" 181 rm -f "$ERROR" 182 rm -f out*.tmp