diff --git a/tests/test.sh b/tests/test.sh index 9093bb5..bd25f60 100644 --- a/tests/test.sh +++ b/tests/test.sh @@ -89,6 +89,7 @@ function test_result() { . 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" diff --git a/tests/units/backup-cron/test.sh b/tests/units/backup-cron/test.sh new file mode 100644 index 0000000..165a76f --- /dev/null +++ b/tests/units/backup-cron/test.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +TEST_NAME="backup-cron" +TEST_OUTPUT_DIR="$(pwd)/${OUTPUT_DIR}/${TEST_NAME}" + +PASSWORD="faedea12-7f9e-4d84-983f-d049d9b82a36" +BACKUP_FILE="${TEST_OUTPUT_DIR}/backup.test.zip" + +FAILED_NUM=0 + +color yellow "Starting test case \"${TEST_NAME}\"" + +function prepare() { + mkdir -p "${TEST_OUTPUT_DIR}" +} + +function start() { + docker run --rm -d \ + --name "${TEST_NAME}" \ + --mount "type=bind,source=${TEST_OUTPUT_DIR},target=${REMOTE_DIR}" \ + -e "RCLONE_REMOTE_DIR=${REMOTE_DIR}" \ + -e "ZIP_PASSWORD=${PASSWORD}" \ + -e "BACKUP_FILE_SUFFIX=test" \ + -e "CRON='* * * * *'" \ + "${DOCKER_IMAGE}" +} + +function test() { + color blue "Testing..." + + local TIMER=0 + local SUCCESS=FALSE + + # wait 120s + while [[ "${TIMER}" -lt 120 ]]; do + if [[ -f "${BACKUP_FILE}" && -s "${BACKUP_FILE}" ]]; then + SUCCESS=TRUE + break + fi + + sleep 1 + ((TIMER++)) + done + + # stop the container + docker stop "${TEST_NAME}" + + ls -l "${BACKUP_FILE}" + + if [[ "${SUCCESS}" == "FALSE" ]]; then + ((FAILED_NUM++)) + fi +} + +prepare +start +test + +test_result "${TEST_NAME}" "${FAILED_NUM}"