diff --git a/test/main.bats b/test/main.bats index 1507615..ee3e70e 100755 --- a/test/main.bats +++ b/test/main.bats @@ -2,47 +2,132 @@ setup() { port=$(awk -v min=2222 -v max=2999 'BEGIN{srand(); print int(min+rand()*(max-min+1))}') + date=$(date +"%Y-%m-%d-%H") + inode=$(stat --format=%i /backup) rm -f /root/bkctld.key* && ssh-keygen -t rsa -N "" -f /root/bkctld.key -q - bkctld init test - bkctld port test "${port}" - bkctld key test /root/bkctld.key.pub - bkctld start test - bpid=$(cat /backup/jails/test/run/sshd.pid) - bkctld restart test - apid=$(cat /backup/jails/test/run/sshd.pid) - bkctld inc + [ -f /etc/default/bkctld ] && . /etc/default/bkctld + CONFDIR="${CONFDIR:-/etc/evobackup}" + JAILDIR="${JAILDIR:-/backup/jails}" + INCDIR="${INCDIR:-/backup/incs}" + TPLDIR="${TPLDIR:-/usr/share/bkctld}" + LOCALTPLDIR="${LOCALTPLDIR:-/usr/local/share/bkctld}" + SSHD_PID="${SSHD_PID:-/run/sshd.pid}" + SSHD_CONFIG="${SSHD_CONFIG:-/etc/ssh/sshd_config}" + AUTHORIZED_KEYS="${AUTHORIZED_KEYS:-/root/.ssh/authorized_keys}" + FIREWALL_RULES="${FIREWALL_RULES:-}" + LOGLEVEL="${LOGLEVEL:-6}" } teardown() { - bkctld remove test + bkctld remove all && rm -rf "${INCDIR}/*" } -@test "port" { - run nc -vz 127.0.0.1 "${port}" - [ "$status" -eq 0 ] +@test "init" { + bkctld init test + if [ "${inode}" -eq 256 ]; then + run stat --format=%i "${JAILDIR}/test" + [ "${output}" -eq 256 ] + else + run test -d "${JAILDIR}/test" + [ "${status}" -eq 0 ] + fi +} + +@test "update" { + skip +} + +@test "start" { + bkctld init test + bkctld start test + pid=$(cat "${JAILDIR}/test/${SSHD_PID}") + run ps --pid "${pid}" + [ "${status}" -eq 0 ] +} + +@test "stop" { + bkctld init test + bkctld start test + pid=$(cat "${JAILDIR}/test/${SSHD_PID}") + bkctld stop test + run ps --pid "${pid}" + [ "${status}" -ne 0 ] +} + +@test "reload" { + bkctld init test + bkctld start test + bkctld reload test + run grep "Received SIGHUP; restarting." "${JAILDIR}/test/var/log/authlog" + [ "${status}" -eq 0 ] +} + +@test "restart" { + bkctld init test + bkctld start test + bpid=$(cat "${JAILDIR}/test/${SSHD_PID}") + bkctld restart test + apid=$(cat "${JAILDIR}/test/${SSHD_PID}") + [ "${bpid}" -ne "${apid}" ] +} + +@test "status" { + bkctld init test + run bkctld status test + [ "${status}" -eq 0 ] } @test "key" { + bkctld init test + bkctld start test + bkctld key test /root/bkctld.key.pub run cat /backup/jails/test/root/.ssh/authorized_keys - [ "$status" -eq 0 ] - [ "$output" = $(cat /root/bkctld.key.pub) ] + [ "${status}" -eq 0 ] + [ "${output}" = $(cat /root/bkctld.key.pub) ] +} + +@test "port" { + bkctld init test + bkctld start test + bkctld port test "${port}" + run nc -vz 127.0.0.1 "${port}" + [ "${status}" -eq 0 ] +} + +@test "ip" { + skip +} + +@test "inc" { + bkctld init test + bkctld inc + if [ "${inode}" -eq 256 ]; then + run stat --format=%i "${INCDIR}/test/${date}" + [ "${output}" -eq 256 ] + else + run test -d "${INCDIR}/test/${date}" + [ "${status}" -eq 0 ] + fi +} + +@test "rm" { + skip } @test "ssh" { + bkctld init test + bkctld start test + bkctld port test "${port}" + bkctld key test /root/bkctld.key.pub run ssh -p "${port}" -i /root/bkctld.key -oStrictHostKeyChecking=no root@127.0.0.1 ls [ "$status" -eq 0 ] } @test "rsync" { + bkctld init test + bkctld start test + bkctld port test "${port}" + bkctld key test /root/bkctld.key.pub run rsync -a -e "ssh -p ${port} -i /root/bkctld.key -oStrictHostKeyChecking=no" /tmp/ root@127.0.0.1:/var/backup/ [ "$status" -eq 0 ] } - -@test "restart" { - [ "${bpid}" -ne "${apid}" ] -} - -@test "inc" { - run ls /backup/incs/test/* - [ "$status" -eq 0 ] -}