diff --git a/tests/test.sh b/tests/test.sh index 3e84200..0952dcd 100644 --- a/tests/test.sh +++ b/tests/test.sh @@ -87,6 +87,7 @@ function test_result() { } . tests/units/backup-zip-file/test.sh +. tests/units/backup-7z-file/test.sh if [[ "${ERROR_NUM}" == "0" ]]; then color green "All tests passed" diff --git a/tests/units/backup-7z-file/test.sh b/tests/units/backup-7z-file/test.sh new file mode 100644 index 0000000..c6b5fb1 --- /dev/null +++ b/tests/units/backup-7z-file/test.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +TEST_NAME="backup-7z-file" +TEST_OUTPUT_DIR="$(pwd)/${OUTPUT_DIR}/${TEST_NAME}" +TEST_EXTRACT_DIR="$(pwd)/${EXTRACT_DIR}/${TEST_NAME}" + +PASSWORD="8a0726b7-d0f5-4034-bcb0-40a7efdb3f8b" +BACKUP_FILE="${TEST_OUTPUT_DIR}/backup.test.7z" + +FAILED_NUM=0 + +color yellow "Starting test case \"${TEST_NAME}\"" + +function prepare() { + mkdir -p "${TEST_OUTPUT_DIR}" "${TEST_EXTRACT_DIR}" +} + +function start() { + docker run --rm \ + --mount "type=bind,source=${TEST_OUTPUT_DIR},target=${REMOTE_DIR}" \ + -e "RCLONE_REMOTE_DIR=${REMOTE_DIR}" \ + -e "ZIP_PASSWORD=${PASSWORD}" \ + -e "ZIP_TYPE=7z" \ + -e "BACKUP_FILE_SUFFIX=test" \ + "${DOCKER_IMAGE}" \ + backup +} + +function test() { + color blue "Testing..." + + ls -l "${BACKUP_FILE}" + + 7z l -p"${PASSWORD}" "${BACKUP_FILE}" + + docker run --rm \ + --mount "type=bind,source=${TEST_EXTRACT_DIR},target=/bitwarden/data/" \ + --mount "type=bind,source=$(dirname "${BACKUP_FILE}"),target=/bitwarden/restore/" \ + "${DOCKER_IMAGE}" \ + restore \ + -f \ + -p "${PASSWORD}" \ + --zip-file "$(basename "${BACKUP_FILE}")" + + check_files_same_in_folders "${DATA_DIR}" "${TEST_EXTRACT_DIR}" + if [[ $? != 0 ]]; then + ((FAILED_NUM++)) + fi +} + +prepare +start +test + +test_result "${TEST_NAME}" "${FAILED_NUM}"