Skip to content

Commit 6b1965e

Browse files
committed
[Testing] Added tests for restoring Hestia and Vesta backups
1 parent 90e0bbd commit 6b1965e

File tree

1 file changed

+348
-0
lines changed

1 file changed

+348
-0
lines changed

test/test.bats

Lines changed: 348 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ function setup() {
1919
# echo "# Setup_file" > &3
2020
if [ $BATS_TEST_NUMBER = 1 ]; then
2121
echo 'user=test-5285' > /tmp/hestia-test-env.sh
22+
echo 'userbk=testbk-5285' >> /tmp/hestia-test-env.sh
2223
echo 'userpass1=test-5285' >> /tmp/hestia-test-env.sh
2324
echo 'userpass2=t3st-p4ssw0rd' >> /tmp/hestia-test-env.sh
2425
echo 'HESTIA=/usr/local/hestia' >> /tmp/hestia-test-env.sh
@@ -30,6 +31,45 @@ function setup() {
3031
source $HESTIA/conf/hestia.conf
3132
}
3233

34+
function validate_web_domain() {
35+
local user=$1
36+
local domain=$2
37+
local webproof=$3
38+
39+
refute [ -z "$user" ]
40+
refute [ -z "$domain" ]
41+
refute [ -z "$webproof" ]
42+
43+
source $HESTIA/func/ip.sh
44+
45+
run v-list-web-domain $user $domain
46+
assert_success
47+
48+
USER_DATA=$HESTIA/data/users/$user
49+
local domain_ip=$(get_object_value 'web' 'DOMAIN' "$domain" '$IP')
50+
SSL=$(get_object_value 'web' 'DOMAIN' "$domain" '$SSL')
51+
domain_ip=$(get_real_ip "$domain_ip")
52+
53+
assert_file_exist $HOMEDIR/$user/web/$domain/public_html/index.php
54+
55+
refute [ -z "$webproof" ]
56+
57+
# Test HTTP
58+
run curl --location --silent --show-error --insecure --resolve "${domain}:80:${domain_ip}" "http://${domain}/index.php"
59+
assert_success
60+
assert_output --partial "$webproof"
61+
62+
# Test HTTPS
63+
if [ "$SSL" = "yes" ]; then
64+
run v-list-web-domain-ssl $user $domain
65+
assert_success
66+
67+
run curl --location --silent --show-error --insecure --resolve "${domain}:443:${domain_ip}" "https://${domain}/index.php"
68+
assert_success
69+
assert_output --partial "$webproof"
70+
fi
71+
}
72+
3373
#----------------------------------------------------------#
3474
# MAIN #
3575
#----------------------------------------------------------#
@@ -440,6 +480,314 @@ function setup() {
440480
#----------------------------------------------------------#
441481

442482

483+
#----------------------------------------------------------#
484+
# Backup / Restore #
485+
#----------------------------------------------------------#
486+
487+
#Test backup
488+
# Hestia v1.1.1 archive contains:
489+
# user: hestia111
490+
# web:
491+
# - test.hestia.com (+SSL self-signed)
492+
# dns:
493+
# - test.hestia.com
494+
# mail:
495+
# - test.hestia.com
496+
# mail acc:
497+
# - testaccount@test.hestia.com
498+
# db:
499+
# - hestia111_db
500+
# cron:
501+
# - 1: /bin/true
502+
#
503+
# Vesta 0.9.8-23 archive contains:
504+
# user: vesta09823
505+
# web:
506+
# - vesta09823.tld (+SSL self-signed)
507+
# dns:
508+
# - vesta09823.tld
509+
# mail:
510+
# - vesta09823.tld
511+
# mail acc:
512+
# - testaccount@vesta09823.tld
513+
# db:
514+
# - vesta09823_db
515+
# cron:
516+
# - 1: /bin/true
517+
#
518+
519+
# Testing Hestia backups
520+
@test "Restore[1]: Hestia archive for a non-existing user" {
521+
if [ -d "$HOMEDIR/$userbk" ]; then
522+
run v-delete-user $userbk
523+
assert_success
524+
refute_output
525+
fi
526+
527+
mkdir -p /backup
528+
529+
local archive_name="hestia111.2020-03-26"
530+
run wget --quiet --tries=3 --timeout=15 --read-timeout=15 --waitretry=3 --no-dns-cache "https://hestiacp.com/testing/data/${archive_name}.tar" -O "/backup/${archive_name}.tar"
531+
assert_success
532+
533+
run v-restore-user $userbk "${archive_name}.tar"
534+
assert_success
535+
536+
rm "/backup/${archive_name}.tar"
537+
}
538+
539+
@test "Restore[1]: From Hestia [WEB]" {
540+
local domain="test.hestia.com"
541+
validate_web_domain $userbk $domain 'Hello Hestia'
542+
}
543+
544+
@test "Restore[1]: From Hestia [DNS]" {
545+
local domain="test.hestia.com"
546+
547+
run v-list-dns-domain $userbk $domain
548+
assert_success
549+
550+
run nslookup $domain 127.0.0.1
551+
assert_success
552+
}
553+
554+
@test "Restore[1]: From Hestia [MAIL]" {
555+
local domain="test.hestia.com"
556+
557+
run v-list-mail-domain $userbk $domain
558+
assert_success
559+
}
560+
561+
@test "Restore[1]: From Hestia [MAIL-Account]" {
562+
local domain="test.hestia.com"
563+
564+
run v-list-mail-account $userbk $domain testaccount
565+
assert_success
566+
}
567+
568+
@test "Restore[1]: From Hestia [DB]" {
569+
run v-list-database $userbk "${userbk}_db"
570+
assert_success
571+
}
572+
573+
@test "Restore[1]: From Hestia [CRON]" {
574+
run v-list-cron-job $userbk 1
575+
assert_success
576+
}
577+
578+
@test "Restore[1]: From Hestia Cleanup" {
579+
run v-delete-user $userbk
580+
assert_success
581+
refute_output
582+
}
583+
584+
585+
@test "Restore[2]: Hestia archive over a existing user" {
586+
if [ -d "$HOMEDIR/$userbk" ]; then
587+
run v-delete-user $userbk
588+
assert_success
589+
refute_output
590+
fi
591+
592+
if [ ! -d "$HOMEDIR/$userbk" ]; then
593+
run v-add-user $userbk $userbk test@hestia.com
594+
assert_success
595+
fi
596+
597+
mkdir -p /backup
598+
599+
local archive_name="hestia111.2020-03-26"
600+
run wget --quiet --tries=3 --timeout=15 --read-timeout=15 --waitretry=3 --no-dns-cache "https://hestiacp.com/testing/data/${archive_name}.tar" -O "/backup/${archive_name}.tar"
601+
assert_success
602+
603+
run v-restore-user $userbk "${archive_name}.tar"
604+
assert_success
605+
606+
rm "/backup/${archive_name}.tar"
607+
}
608+
609+
@test "Restore[2]: From Hestia [WEB]" {
610+
local domain="test.hestia.com"
611+
validate_web_domain $userbk "${domain}" 'Hello Hestia'
612+
}
613+
614+
@test "Restore[2]: From Hestia [DNS]" {
615+
local domain="test.hestia.com"
616+
617+
run v-list-dns-domain $userbk $domain
618+
assert_success
619+
620+
run nslookup $domain 127.0.0.1
621+
assert_success
622+
}
623+
624+
@test "Restore[2]: From Hestia [MAIL]" {
625+
local domain="test.hestia.com"
626+
627+
run v-list-mail-domain $userbk $domain
628+
assert_success
629+
}
630+
631+
@test "Restore[2]: From Hestia [MAIL-Account]" {
632+
local domain="test.hestia.com"
633+
634+
run v-list-mail-account $userbk $domain testaccount
635+
assert_success
636+
}
637+
638+
@test "Restore[2]: From Hestia [DB]" {
639+
run v-list-database $userbk "${userbk}_db"
640+
assert_success
641+
}
642+
643+
@test "Restore[2]: From Hestia [CRON]" {
644+
run v-list-cron-job $userbk 1
645+
assert_success
646+
}
647+
648+
@test "Restore[2]: From Hestia Cleanup" {
649+
run v-delete-user $userbk
650+
assert_success
651+
refute_output
652+
}
653+
654+
655+
# Testing Vesta Backups
656+
@test "Restore[1]: Vesta archive for a non-existing user" {
657+
if [ -d "$HOMEDIR/$userbk" ]; then
658+
run v-delete-user $userbk
659+
assert_success
660+
refute_output
661+
fi
662+
663+
mkdir -p /backup
664+
665+
local archive_name="vesta09823.2018-10-18"
666+
run wget --quiet --tries=3 --timeout=15 --read-timeout=15 --waitretry=3 --no-dns-cache "https://hestiacp.com/testing/data/${archive_name}.tar" -O "/backup/${archive_name}.tar"
667+
assert_success
668+
669+
run v-restore-user $userbk "${archive_name}.tar"
670+
assert_success
671+
672+
rm "/backup/${archive_name}.tar"
673+
}
674+
675+
@test "Restore[1]: From Vesta [WEB]" {
676+
local domain="vesta09823.tld"
677+
validate_web_domain $userbk $domain 'Hello Vesta'
678+
}
679+
680+
@test "Restore[1]: From Vesta [DNS]" {
681+
local domain="vesta09823.tld"
682+
683+
run v-list-dns-domain $userbk $domain
684+
assert_success
685+
686+
run nslookup $domain 127.0.0.1
687+
assert_success
688+
}
689+
690+
@test "Restore[1]: From Vesta [MAIL]" {
691+
local domain="vesta09823.tld"
692+
693+
run v-list-mail-domain $userbk $domain
694+
assert_success
695+
}
696+
697+
@test "Restore[1]: From Vesta [MAIL-Account]" {
698+
local domain="vesta09823.tld"
699+
700+
run v-list-mail-account $userbk $domain testaccount
701+
assert_success
702+
}
703+
704+
@test "Restore[1]: From Vesta [DB]" {
705+
run v-list-database $userbk "${userbk}_db"
706+
assert_success
707+
}
708+
709+
@test "Restore[1]: From Vesta [CRON]" {
710+
run v-list-cron-job $userbk 1
711+
assert_success
712+
}
713+
714+
@test "Restore[1]: From Vesta Cleanup" {
715+
run v-delete-user $userbk
716+
assert_success
717+
refute_output
718+
}
719+
720+
721+
@test "Restore[2]: Vesta archive over a existing user" {
722+
if [ -d "$HOMEDIR/$userbk" ]; then
723+
run v-delete-user $userbk
724+
assert_success
725+
refute_output
726+
fi
727+
728+
if [ ! -d "$HOMEDIR/$userbk" ]; then
729+
run v-add-user $userbk $userbk test@hestia.com
730+
assert_success
731+
fi
732+
733+
mkdir -p /backup
734+
735+
local archive_name="vesta09823.2018-10-18"
736+
run wget --quiet --tries=3 --timeout=15 --read-timeout=15 --waitretry=3 --no-dns-cache "https://hestiacp.com/testing/data/${archive_name}.tar" -O "/backup/${archive_name}.tar"
737+
assert_success
738+
739+
run v-restore-user $userbk "${archive_name}.tar"
740+
assert_success
741+
742+
rm "/backup/${archive_name}.tar"
743+
}
744+
745+
@test "Restore[2]: From Vesta [WEB]" {
746+
local domain="vesta09823.tld"
747+
validate_web_domain $userbk "${domain}" 'Hello Vesta'
748+
}
749+
750+
@test "Restore[2]: From Vesta [DNS]" {
751+
local domain="vesta09823.tld"
752+
753+
run v-list-dns-domain $userbk $domain
754+
assert_success
755+
756+
run nslookup $domain 127.0.0.1
757+
assert_success
758+
}
759+
760+
@test "Restore[2]: From Vesta [MAIL]" {
761+
local domain="vesta09823.tld"
762+
763+
run v-list-mail-domain $userbk $domain
764+
assert_success
765+
}
766+
767+
@test "Restore[2]: From Vesta [MAIL-Account]" {
768+
local domain="vesta09823.tld"
769+
770+
run v-list-mail-account $userbk $domain testaccount
771+
assert_success
772+
}
773+
774+
@test "Restore[2]: From Vesta [DB]" {
775+
run v-list-database $userbk "${userbk}_db"
776+
assert_success
777+
}
778+
779+
@test "Restore[2]: From Vesta [CRON]" {
780+
run v-list-cron-job $userbk 1
781+
assert_success
782+
}
783+
784+
@test "Restore[2]: From Vesta Cleanup" {
785+
run v-delete-user $userbk
786+
assert_success
787+
refute_output
788+
}
789+
790+
443791
#----------------------------------------------------------#
444792
# CLEANUP #
445793
#----------------------------------------------------------#

0 commit comments

Comments
 (0)