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@1447 | 59 | have_occurrences() { |
paul@1447 | 60 | # <string> <number> [ <filename> ] |
paul@1447 | 61 | if [ "$3" ]; then |
paul@1447 | 62 | [ `grep "$1" "$3" | wc -l` = "$2" ] |
paul@1447 | 63 | else |
paul@1447 | 64 | [ `grep "$1" | wc -l` = "$2" ] |
paul@1447 | 65 | fi |
paul@1447 | 66 | } |
paul@1447 | 67 | |
paul@1438 | 68 | is_absent() { |
paul@1438 | 69 | # <string> [ <filename> ] |
paul@1438 | 70 | if [ "$2" ]; then |
paul@1438 | 71 | ! grep -q "$1" "$2" |
paul@1438 | 72 | else |
paul@1438 | 73 | ! grep -q "$1" |
paul@1438 | 74 | fi |
paul@1438 | 75 | } |
paul@1438 | 76 | |
paul@1438 | 77 | is_present() { |
paul@1438 | 78 | # <string> [ <filename> ] |
paul@1438 | 79 | if [ "$2" ]; then |
paul@1438 | 80 | grep -q "$1" "$2" |
paul@1438 | 81 | else |
paul@1438 | 82 | grep -q "$1" |
paul@1438 | 83 | fi |
paul@1438 | 84 | } |
paul@1438 | 85 | |
paul@1438 | 86 | list_script() { |
paul@1438 | 87 | # <filename> <arg>... |
paul@1438 | 88 | FILENAME=$1 |
paul@1438 | 89 | shift 1 |
paul@1438 | 90 | "$LIST_SCRIPT" $LIST_ARGS $* > "$FILENAME" |
paul@1438 | 91 | } |
paul@1438 | 92 | |
paul@1438 | 93 | outgoing_script() { |
paul@1438 | 94 | # [ <filename> ] |
paul@1438 | 95 | if [ "$1" ]; then |
paul@1438 | 96 | "$OUTGOING_SCRIPT" < "$1" $ARGS 2>> $ERROR |
paul@1438 | 97 | else |
paul@1438 | 98 | "$OUTGOING_SCRIPT" $ARGS 2>> $ERROR |
paul@1438 | 99 | fi |
paul@1438 | 100 | } |
paul@1438 | 101 | |
paul@1438 | 102 | person_script() { |
paul@1438 | 103 | # <filename> <output filename> [ <raw output filename> ] |
paul@1438 | 104 | OUTFILE="$3" |
paul@1438 | 105 | "$PERSON_SCRIPT" $ARGS < "$1" 2>> $ERROR \ |
paul@1438 | 106 | | tee $OUTFILE \ |
paul@1438 | 107 | | "$SHOWMAIL" \ |
paul@1438 | 108 | > "$2" |
paul@1438 | 109 | } |
paul@1438 | 110 | |
paul@1438 | 111 | showmail() { |
paul@1438 | 112 | # <filename> |
paul@1438 | 113 | "$SHOWMAIL" < "$1" |
paul@1438 | 114 | } |
paul@1438 | 115 | |
paul@1438 | 116 | test_freebusy() { |
paul@1438 | 117 | # <start> <end> <filename> |
paul@1438 | 118 | is_present "^$1${TAB}$2" "$3" && success || failed "$3" |
paul@1438 | 119 | } |
paul@1438 | 120 | |
paul@1438 | 121 | test_freebusy_missing() { |
paul@1438 | 122 | # <start> <end> <filename> |
paul@1438 | 123 | is_absent "^$1${TAB}$2" "$3" && success || failed "$3" |
paul@1438 | 124 | } |
paul@1438 | 125 | |
paul@1438 | 126 | text_client() { |
paul@1438 | 127 | # <user> <command filename> [ <event filename> ] |
paul@1438 | 128 | LOG=`basename "$2" .tmp`_log.tmp |
paul@1438 | 129 | if [ "$3" ]; then |
paul@1438 | 130 | "$TEXT_CLIENT" $ARGS -u "$1" -f "$3" --echo < "$2" > "$LOG" |
paul@1438 | 131 | else |
paul@1438 | 132 | "$TEXT_CLIENT" $ARGS -u "$1" --echo < "$2" > "$LOG" |
paul@1438 | 133 | fi |
paul@1438 | 134 | } |
paul@1438 | 135 | |
paul@1438 | 136 | text_client_specific() { |
paul@1438 | 137 | # <user> <command filename> <uid> [ <recurrence-id> ] |
paul@1438 | 138 | LOG=`basename "$2" .tmp`_log.tmp |
paul@1438 | 139 | if [ "$4" ]; then |
paul@1438 | 140 | "$TEXT_CLIENT" $ARGS -u "$1" --uid "$3" --recurrence-id "$4" --echo < "$2" > "$LOG" |
paul@1438 | 141 | else |
paul@1438 | 142 | "$TEXT_CLIENT" $ARGS -u "$1" --uid "$3" --echo < "$2" > "$LOG" |
paul@1438 | 143 | fi |
paul@1438 | 144 | } |
paul@1438 | 145 | |
paul@1440 | 146 | test_initial_freebusy() { |
paul@1440 | 147 | person_script "$TEMPLATES/fb-request-person-all.txt" "init_fb.tmp" |
paul@1440 | 148 | |
paul@1440 | 149 | # Expect a reply with no periods. |
paul@1440 | 150 | |
paul@1440 | 151 | is_present 'METHOD:REPLY' "init_fb.tmp" \ |
paul@1440 | 152 | && is_absent '^FREEBUSY' "init_fb.tmp" \ |
paul@1440 | 153 | && success || failed "init_fb.tmp" |
paul@1440 | 154 | } |
paul@1440 | 155 | |
paul@1440 | 156 | test_initial_freebusy_limited() { |
paul@1440 | 157 | person_script "$TEMPLATES/fb-request-person.txt" "init_fb_limited.tmp" |
paul@1440 | 158 | |
paul@1440 | 159 | # Expect a reply with no periods. |
paul@1440 | 160 | |
paul@1440 | 161 | is_present 'METHOD:REPLY' "init_fb_limited.tmp" \ |
paul@1440 | 162 | && is_absent '^FREEBUSY' "init_fb_limited.tmp" \ |
paul@1440 | 163 | && success || failed "init_fb_limited.tmp" |
paul@1440 | 164 | } |
paul@1440 | 165 | |
paul@1438 | 166 | |
paul@1438 | 167 | |
paul@1438 | 168 | # Test environment initialisation. |
paul@1438 | 169 | |
paul@1095 | 170 | if [ "$STORE_TYPE" = "file" ]; then |
paul@1088 | 171 | rm -rf "$STORE" |
paul@1088 | 172 | rm -rf "$JOURNAL" |
paul@1095 | 173 | elif [ "$STORE_TYPE" = "postgresql" ]; then |
paul@1088 | 174 | dropdb "$DBNAME" |
paul@1088 | 175 | createdb "$DBNAME" |
paul@1220 | 176 | psql -q -f "$BASE_DIR/conf/postgresql/schema.sql" "$DBNAME" 2>> $DBERROR |
paul@1088 | 177 | fi |
paul@1088 | 178 | |
paul@1039 | 179 | rm -rf "$STATIC" |
paul@1039 | 180 | rm -rf "$PREFS" |
paul@1039 | 181 | rm -f "$ERROR" |
paul@1024 | 182 | rm -f out*.tmp |