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