netoik-cicd/tests/deployer.bats

107 lines
3.1 KiB
Bash

#
# Deployer unit tests using BATS framework.
#
bats_require_minimum_version 1.5.0
setup() {
source "${PWD}/tests/tests.conf"
make build >/dev/null
DESTDIR="${temp}" make install >/dev/null
install --no-target-directory \
"${PWD}/tests/tests.conf" \
"${temp}${sysconf_dir}/${name}/${name}.conf"
install --directory "${temp}${var_dir}/${name}/repositories/test.git"
install --directory "${temp}${var_dir}/${name}/RPMS"
source "${errs_file}"
}
teardown() {
rm --recursive --force "${temp}"
make clean >/dev/null
}
@test "run with bad arguments" {
run -1 "${deployer_bin}" -z
run -1 "${deployer_bin}" --zzz
run -1 "${deployer_bin}" zzz
run -1 "${deployer_bin}" --conf
run -1 "${deployer_bin}" --conf=/path/to/nowhere
run -1 "${deployer_bin}" --errs
run -1 "${deployer_bin}" --errs=/path/to/nowhere
run -1 "${deployer_bin}" --verbose --quiet
}
@test "run without loop" {
"${deployer_bin}" --conf="${conf_file}" --errs="${errs_file}" --test --verbose
}
send_request() (
request="$1"
"${deployer_bin}" --conf="${conf_file}" --errs="${errs_file}" \
--daemon --once --verbose || return $?
(
inotifywait --event create --quiet --quiet "${response_sock_dir}"
echo "${request}" | ncat --unixsock "${deployer_sock}"
) &
return "$(ncat --listen --unixsock "${response_sock}" | jq .code)"
)
@test "run with err_pkg_name_missing" {
request="$(jq --null-input --compact-output \
--arg s "${response_sock}" \
'{"response_sock":$s}')"
run send_request "${request}"
echo "status: got ${status}, expected ${err_pkg_name_missing}"
[ "${status}" -eq "${err_pkg_name_missing}" ]
}
@test "run with err_pkg_name_empty" {
request="$(jq --null-input --compact-output \
--arg s "${response_sock}" \
'{"response_sock":$s,"pkg_name":""}')"
run send_request "${request}"
echo "status: got ${status}, expected ${err_pkg_name_empty}"
[ "${status}" -eq "${err_pkg_name_empty}" ]
}
@test "run with err_repo_dir_not_exist" {
request="$(jq --null-input --compact-output \
--arg s "${response_sock}" \
'{"response_sock":$s,"pkg_name":"not_exist"}')"
run send_request "${request}"
echo "status: got ${status}, expected ${err_repo_dir_not_existyy}"
[ "${status}" -eq "${err_repo_dir_not_exist}" ]
}
@test "run with err_pkg_version_missing" {
request="$(jq --null-input --compact-output \
--arg s "${response_sock}" \
'{"response_sock":$s,"pkg_name":"test"}')"
run send_request "${request}"
echo "status: got ${status}, expected ${err_pkg_version_missing}"
[ "${status}" -eq "${err_pkg_version_missing}" ]
}
@test "run with err_pkg_version_empty" {
request="$(jq --null-input --compact-output \
--arg s "${response_sock}" \
'{"response_sock":$s,"pkg_name":"test","pkg_version":""}')"
run send_request "${request}"
echo "status: got ${status}, expected ${err_pkg_version_empty}"
[ "${status}" -eq "${err_pkg_version_empty}" ]
}
@test "run with err_rpm_path_not_exist" {
request="$(jq --null-input --compact-output \
--arg s "${response_sock}" \
'{"response_sock":$s,"pkg_name":"test","pkg_version":"0.1"}')"
run send_request "${request}"
echo "status: got ${status}, expected ${err_rpm_path_not_exist}"
[ "${status}" -eq "${err_rpm_path_not_exist}" ]
}