Files
vaultwarden-backup/tests/test.sh
T

110 lines
2.8 KiB
Bash

#!/bin/bash
DOCKER_IMAGE="ttionya/vaultwarden-backup:test"
ERROR_NUM=0
DATA_DIR="$(pwd)/tests/fixtures/source/bitwarden/data"
CONFIG_DIR="config"
OUTPUT_DIR="output"
EXTRACT_DIR="extract"
TEMP_DIR="tmp"
REMOTE_DIR="/${OUTPUT_DIR}"
########################################
# Print colorful message.
# Arguments:
# color
# message
# Outputs:
# colorful message
########################################
function color() {
case $1 in
red) echo -e "\033[31m$2\033[0m" ;;
green) echo -e "\033[32m$2\033[0m" ;;
yellow) echo -e "\033[33m$2\033[0m" ;;
blue) echo -e "\033[34m$2\033[0m" ;;
none) echo "$2" ;;
esac
}
########################################
# Check if the files in two folders are the same.
# Arguments:
# folder1
# folder2
# Outputs:
# progress
# Returns:
# same or not
########################################
function check_files_same_in_folders() {
function generate_hash_list() {
find "$1" -type f -not -name "db.*" -exec sha1sum {} \; | sort | sed "s|$1||g" > "$2"
}
color blue "Calculating file hash in folder \"$1\" and \"$2\""
local FOLDER1="$1"
local FOLDER2="$2"
local FOLDER1_HASH_LIST="/tmp/folder1_hash_list"
local FOLDER2_HASH_LIST="/tmp/folder2_hash_list"
generate_hash_list "${FOLDER1}" "${FOLDER1_HASH_LIST}"
generate_hash_list "${FOLDER2}" "${FOLDER2_HASH_LIST}"
color blue "Calculating differences"
local RETURN_CODE
local FOLDER_HASH_DIFF="/tmp/folder_hash_diff"
if diff "${FOLDER1_HASH_LIST}" "${FOLDER2_HASH_LIST}" > "${FOLDER_HASH_DIFF}"; then
RETURN_CODE=0
else
RETURN_CODE=1
cat "${FOLDER_HASH_DIFF}"
fi
rm -rf "${FOLDER1_HASH_LIST}" "${FOLDER2_HASH_LIST}" "${FOLDER_HASH_DIFF}"
return "${RETURN_CODE}"
}
########################################
# Show test result.
# Arguments:
# test name
# failed number
# Outputs:
# test result
########################################
function test_result() {
local SEP="================================================================================"
if [[ "$2" == "0" ]]; then
color green "Test case \"$1\" passed"
color none "${SEP}${SEP}"
return
fi
((ERROR_NUM++))
color red "Test case \"$1\" failed"
color none "${SEP}${SEP}"
}
. tests/units/env-priority/test.sh
. tests/units/check-rclone-config-exists/test.sh
. tests/units/check-rclone-flags-valid/test.sh
. tests/units/check-rclone-connection-initializing/test.sh
. tests/units/backup-zip-file/test.sh
. tests/units/backup-7z-file/test.sh
. tests/units/backup-unpackage/test.sh
. tests/units/backup-cron/test.sh
if [[ "${ERROR_NUM}" == "0" ]]; then
color green "All tests passed"
else
color red "Some tests failed"
exit 1
fi