mirror of
https://github.com/mail-in-a-box/mailinabox.git
synced 2026-03-05 15:57:23 +01:00
Test upgrade to LDAP from upstream Mail-in-a-Box/sqlite
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
set +eu
|
||||
|
||||
# load test suite helper functions
|
||||
. suites/_locations.sh || exit 1
|
||||
. lib/all.sh "lib" || exit 1
|
||||
. suites/_ldap-functions.sh || exit 1
|
||||
. suites/_mail-functions.sh || exit 1
|
||||
. suites/_mgmt-functions.sh || exit 1
|
||||
@@ -20,10 +20,6 @@ declare -i OVERALL_SKIPPED=0
|
||||
declare -i OVERALL_COUNT=0
|
||||
declare -i OVERALL_COUNT_SUITES=0
|
||||
|
||||
# ansi escapes for hilighting text
|
||||
F_DANGER=$(echo -e "\033[31m")
|
||||
F_WARN=$(echo -e "\033[93m")
|
||||
F_RESET=$(echo -e "\033[39m")
|
||||
|
||||
# options
|
||||
FAILURE_IS_FATAL=no
|
||||
@@ -157,7 +153,12 @@ test_skip() {
|
||||
}
|
||||
|
||||
skip_test() {
|
||||
# return 0 if we should skip the current test
|
||||
# call from within a test to check whether the test will be
|
||||
# skipped
|
||||
#
|
||||
# returns 0 if the current test was skipped in which case your test
|
||||
# function must immediately call 'test_end' and return
|
||||
#
|
||||
if [ "$SKIP_REMOTE_SMTP_TESTS" == "yes" ] &&
|
||||
array_contains "remote-smtp" "$@";
|
||||
then
|
||||
@@ -191,16 +192,6 @@ die() {
|
||||
exit 1
|
||||
}
|
||||
|
||||
array_contains() {
|
||||
local searchfor="$1"
|
||||
shift
|
||||
local item
|
||||
for item; do
|
||||
[ "$item" == "$searchfor" ] && return 0
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
python_error() {
|
||||
# finds tracebacks and outputs just the final error message of
|
||||
# each
|
||||
|
||||
@@ -1,16 +1,10 @@
|
||||
# -*- indent-tabs-mode: t; tab-width: 4; -*-
|
||||
|
||||
generate_uuid() {
|
||||
local uuid
|
||||
uuid=$(python3 -c "import uuid; print(uuid.uuid4())")
|
||||
[ $? -ne 0 ] && die "Unable to generate a uuid"
|
||||
echo "$uuid"
|
||||
}
|
||||
# requirements:
|
||||
# system packages: [ ldap-utils ]
|
||||
# setup scripts: [ functions-ldap.sh ]
|
||||
# setup artifacts: [ miab_ldap.conf ]
|
||||
|
||||
sha1() {
|
||||
local txt="$1"
|
||||
python3 -c "import hashlib; m=hashlib.sha1(); m.update(bytearray(r'''$txt''','utf-8')); print(m.hexdigest());" || die "Unable to generate sha1 hash"
|
||||
}
|
||||
|
||||
delete_user() {
|
||||
local email="$1"
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
#
|
||||
|
||||
# where webmail.sh installs roundcube
|
||||
RCM_DIR=/usr/local/lib/roundcubemail
|
||||
RCM_PLUGIN_DIR=${RCM_DIR}/plugins
|
||||
|
||||
# where zpush.sh installs z-push
|
||||
ZPUSH_DIR=/usr/local/lib/z-push
|
||||
@@ -44,49 +44,9 @@ mgmt_rest() {
|
||||
local uri="$2" # eg "/mail/users/add"
|
||||
shift; shift; # remaining arguments are data
|
||||
|
||||
local auth_user="${MGMT_ADMIN_EMAIL}"
|
||||
local auth_pass="${MGMT_ADMIN_PW}"
|
||||
local url="https://$PRIMARY_HOSTNAME${uri}"
|
||||
local data=()
|
||||
local item output
|
||||
|
||||
for item; do data+=("--data-urlencode" "$item"); done
|
||||
|
||||
record "spawn: curl -w \"%{http_code}\" -X $verb --user \"${auth_user}:xxx\" ${data[@]} $url"
|
||||
output=$(curl -s -S -w "%{http_code}" -X $verb --user "${auth_user}:${auth_pass}" "${data[@]}" $url 2>>$TEST_OF)
|
||||
local code=$?
|
||||
|
||||
# http status is last 3 characters of output, extract it
|
||||
REST_HTTP_CODE=$(awk '{S=substr($0,length($0)-2)} END {print S}' <<<"$output")
|
||||
REST_OUTPUT=$(awk 'BEGIN{L=""}{ if(L!="") print L; L=$0 } END { print substr(L,1,length(L)-3) }' <<<"$output")
|
||||
REST_ERROR=""
|
||||
[ -z "$REST_HTTP_CODE" ] && REST_HTTP_CODE="000"
|
||||
|
||||
if [ $code -ne 0 ]; then
|
||||
if [ $code -eq 56 -a $REST_HTTP_CODE -eq 200 ]; then
|
||||
# this is okay, I guess. happens sometimes during
|
||||
# POST /admin/mail/aliases/remove
|
||||
# 56=Unexpected EOF
|
||||
record "Ignoring curl return code 56 due to 200 status"
|
||||
|
||||
elif [ $code -ne 16 -o $REST_HTTP_CODE -ne 200 ]; then
|
||||
# any error code will fail the rest call except for a 16
|
||||
# with a 200 HTTP status.
|
||||
# 16="a problem was detected in the HTTP2 framing layer. This is somewhat generic and can be one out of several problems"
|
||||
REST_ERROR="CURL failed with code $code"
|
||||
record "${F_DANGER}$REST_ERROR${F_RESET}"
|
||||
record "$output"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
if [ $REST_HTTP_CODE -lt 200 -o $REST_HTTP_CODE -ge 300 ]; then
|
||||
REST_ERROR="REST status $REST_HTTP_CODE: $REST_OUTPUT"
|
||||
record "${F_DANGER}$REST_ERROR${F_RESET}"
|
||||
return 2
|
||||
fi
|
||||
record "CURL succeded, HTTP status $REST_HTTP_CODE"
|
||||
record "$output"
|
||||
return 0
|
||||
# call function from lib/rest.sh
|
||||
rest_urlencoded "$verb" "$uri" "${MGMT_ADMIN_EMAIL}" "${MGMT_ADMIN_PW}" "$@" 2>>$TEST_OF
|
||||
return $?
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user