diff --git a/.github/workflows/docker-test.yml b/.github/workflows/docker-test.yml index 0d11f65..fa4008a 100644 --- a/.github/workflows/docker-test.yml +++ b/.github/workflows/docker-test.yml @@ -49,4 +49,7 @@ jobs: load: true - name: Test - run: bash tests/test.sh + run: | + sudo apt-get update + sudo apt-get install -y p7zip-full + bash tests/test.sh diff --git a/tests/fixtures/source/bitwarden/data/config.json b/tests/fixtures/source/bitwarden/data/config.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/tests/fixtures/source/bitwarden/data/config.json @@ -0,0 +1 @@ +{} diff --git a/tests/test.sh b/tests/test.sh index c78be77..f474224 100644 --- a/tests/test.sh +++ b/tests/test.sh @@ -1,3 +1,35 @@ #!/bin/bash + +DOCKER_IMAGE="ttionya/vaultwarden-backup:test" +ERROR_NUM=0 + +OUTPUT_DIR="outputs" +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 +} + . tests/units/backup-zip-file/test.sh + +if [[ "${ERROR_NUM}" == "0" ]]; then + color green "All tests passed." +else + color red "Some tests failed." + exit 1 +fi diff --git a/tests/units/backup-zip-file/test.sh b/tests/units/backup-zip-file/test.sh index 2b64fff..bdae056 100644 --- a/tests/units/backup-zip-file/test.sh +++ b/tests/units/backup-zip-file/test.sh @@ -1,13 +1,40 @@ #!/bin/bash -echo "Test backup-zip-file" +TEST_NAME="backup-zip-file" +TEST_OUTPUT_DIR="$(pwd)/${OUTPUTS_DIR}/${TEST_NAME}" -mkdir -p outputs/backup-zip-file +PASSWORD="71ad8764-2f69-4c0c-8452-61e08b9f489d" -docker run --rm \ - --mount type=bind,source=$(pwd)/outputs/backup-zip-file,target=/outputs \ - -e RCLONE_REMOTE_DIR=/outputs \ - ttionya/vaultwarden-backup:test \ - backup +color blue "Testing the ${TEST_NAME} unit..." -ls -l outputs/backup-zip-file +function prepare() { + mkdir -p "${TEST_OUTPUT_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 "BACKUP_FILE_SUFFIX=test" \ + "${DOCKER_IMAGE}" \ + backup +} + +function test() { + color blue "Starting the test..." + + local BACKUP_FILE="${TEST_OUTPUT_DIR}/backup.test.zip" + + ls -l "${BACKUP_FILE}" + if [[ -s "${BACKUP_FILE}" ]]; then + color red "Error" + ((ERROR_NUM++)) + fi + + 7z l -p"${PASSWORD}" "${BACKUP_FILE}" +} + +prepare +start +test