Procházet zdrojové kódy

[Testing] Added tests for restoring Hestia and Vesta backups

Robert Zollner před 5 roky
rodič
revize
6b1965e945
1 změnil soubory, kde provedl 348 přidání a 0 odebrání
  1. 348 0
      test/test.bats

+ 348 - 0
test/test.bats

@@ -19,6 +19,7 @@ function setup() {
     # echo "# Setup_file" > &3
     if [ $BATS_TEST_NUMBER = 1 ]; then
         echo 'user=test-5285' > /tmp/hestia-test-env.sh
+        echo 'userbk=testbk-5285' >> /tmp/hestia-test-env.sh
         echo 'userpass1=test-5285' >> /tmp/hestia-test-env.sh
         echo 'userpass2=t3st-p4ssw0rd' >> /tmp/hestia-test-env.sh
         echo 'HESTIA=/usr/local/hestia' >> /tmp/hestia-test-env.sh
@@ -30,6 +31,45 @@ function setup() {
     source $HESTIA/conf/hestia.conf
 }
 
+function validate_web_domain() {
+    local user=$1
+    local domain=$2
+    local webproof=$3
+
+    refute [ -z "$user" ]
+    refute [ -z "$domain" ]
+    refute [ -z "$webproof" ]
+
+    source $HESTIA/func/ip.sh
+
+    run v-list-web-domain $user $domain
+    assert_success
+
+    USER_DATA=$HESTIA/data/users/$user
+    local domain_ip=$(get_object_value 'web' 'DOMAIN' "$domain" '$IP')
+    SSL=$(get_object_value 'web' 'DOMAIN' "$domain" '$SSL')
+    domain_ip=$(get_real_ip "$domain_ip")
+
+    assert_file_exist $HOMEDIR/$user/web/$domain/public_html/index.php
+
+    refute [ -z "$webproof" ]
+
+    # Test HTTP
+    run curl --location --silent --show-error --insecure --resolve "${domain}:80:${domain_ip}" "http://${domain}/index.php"
+    assert_success
+    assert_output --partial "$webproof"
+
+    # Test HTTPS
+    if [ "$SSL" = "yes" ]; then
+        run v-list-web-domain-ssl $user $domain
+        assert_success
+
+        run curl --location --silent --show-error --insecure --resolve "${domain}:443:${domain_ip}" "https://${domain}/index.php"
+        assert_success
+        assert_output --partial "$webproof"
+    fi
+}
+
 #----------------------------------------------------------#
 #                         MAIN                             #
 #----------------------------------------------------------#
@@ -440,6 +480,314 @@ function setup() {
 #----------------------------------------------------------#
 
 
+#----------------------------------------------------------#
+#                     Backup / Restore                     #
+#----------------------------------------------------------#
+
+#Test backup
+#  Hestia v1.1.1 archive contains:
+#    user: hestia111
+#    web:
+#      - test.hestia.com (+SSL self-signed)
+#    dns:
+#      - test.hestia.com
+#    mail:
+#      - test.hestia.com
+#    mail acc:
+#      - [email protected]
+#    db:
+#      - hestia111_db
+#    cron:
+#      - 1: /bin/true
+#
+#  Vesta 0.9.8-23 archive contains:
+#    user: vesta09823
+#    web:
+#      - vesta09823.tld (+SSL self-signed)
+#    dns:
+#      - vesta09823.tld
+#    mail:
+#      - vesta09823.tld
+#    mail acc:
+#      - [email protected]
+#    db:
+#      - vesta09823_db
+#    cron:
+#      - 1: /bin/true
+#
+
+# Testing Hestia backups
+@test "Restore[1]: Hestia archive for a non-existing user" {
+    if [ -d "$HOMEDIR/$userbk" ]; then
+        run v-delete-user $userbk
+        assert_success
+        refute_output
+    fi
+
+    mkdir -p /backup
+
+    local archive_name="hestia111.2020-03-26"
+    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"
+    assert_success
+
+    run v-restore-user $userbk "${archive_name}.tar"
+    assert_success
+
+    rm "/backup/${archive_name}.tar"
+}
+
+@test "Restore[1]: From Hestia [WEB]" {
+    local domain="test.hestia.com"
+    validate_web_domain $userbk $domain 'Hello Hestia'
+}
+
+@test "Restore[1]: From Hestia [DNS]" {
+    local domain="test.hestia.com"
+
+    run v-list-dns-domain $userbk $domain
+    assert_success
+
+    run nslookup $domain 127.0.0.1
+    assert_success
+}
+
+@test "Restore[1]: From Hestia [MAIL]" {
+    local domain="test.hestia.com"
+
+    run v-list-mail-domain $userbk $domain
+    assert_success
+}
+
+@test "Restore[1]: From Hestia [MAIL-Account]" {
+    local domain="test.hestia.com"
+
+    run v-list-mail-account $userbk $domain testaccount
+    assert_success
+}
+
+@test "Restore[1]: From Hestia [DB]" {
+    run v-list-database $userbk "${userbk}_db"
+    assert_success
+}
+
+@test "Restore[1]: From Hestia [CRON]" {
+    run v-list-cron-job $userbk 1
+    assert_success
+}
+
+@test "Restore[1]: From Hestia Cleanup" {
+    run v-delete-user $userbk
+    assert_success
+    refute_output
+}
+
+
+@test "Restore[2]: Hestia archive over a existing user" {
+    if [ -d "$HOMEDIR/$userbk" ]; then
+        run v-delete-user $userbk
+        assert_success
+        refute_output
+    fi
+
+    if [ ! -d "$HOMEDIR/$userbk" ]; then
+        run v-add-user $userbk $userbk [email protected]
+        assert_success
+    fi
+
+    mkdir -p /backup
+
+    local archive_name="hestia111.2020-03-26"
+    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"
+    assert_success
+
+    run v-restore-user $userbk "${archive_name}.tar"
+    assert_success
+
+    rm "/backup/${archive_name}.tar"
+}
+
+@test "Restore[2]: From Hestia [WEB]" {
+    local domain="test.hestia.com"
+    validate_web_domain $userbk "${domain}" 'Hello Hestia'
+}
+
+@test "Restore[2]: From Hestia [DNS]" {
+    local domain="test.hestia.com"
+
+    run v-list-dns-domain $userbk $domain
+    assert_success
+
+    run nslookup $domain 127.0.0.1
+    assert_success
+}
+
+@test "Restore[2]: From Hestia [MAIL]" {
+    local domain="test.hestia.com"
+
+    run v-list-mail-domain $userbk $domain
+    assert_success
+}
+
+@test "Restore[2]: From Hestia [MAIL-Account]" {
+    local domain="test.hestia.com"
+
+    run v-list-mail-account $userbk $domain testaccount
+    assert_success
+}
+
+@test "Restore[2]: From Hestia [DB]" {
+    run v-list-database $userbk "${userbk}_db"
+    assert_success
+}
+
+@test "Restore[2]: From Hestia [CRON]" {
+    run v-list-cron-job $userbk 1
+    assert_success
+}
+
+@test "Restore[2]: From Hestia Cleanup" {
+    run v-delete-user $userbk
+    assert_success
+    refute_output
+}
+
+
+# Testing Vesta Backups
+@test "Restore[1]: Vesta archive for a non-existing user" {
+    if [ -d "$HOMEDIR/$userbk" ]; then
+        run v-delete-user $userbk
+        assert_success
+        refute_output
+    fi
+
+    mkdir -p /backup
+
+    local archive_name="vesta09823.2018-10-18"
+    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"
+    assert_success
+
+    run v-restore-user $userbk "${archive_name}.tar"
+    assert_success
+
+    rm "/backup/${archive_name}.tar"
+}
+
+@test "Restore[1]: From Vesta [WEB]" {
+    local domain="vesta09823.tld"
+    validate_web_domain $userbk $domain 'Hello Vesta'
+}
+
+@test "Restore[1]: From Vesta [DNS]" {
+    local domain="vesta09823.tld"
+
+    run v-list-dns-domain $userbk $domain
+    assert_success
+
+    run nslookup $domain 127.0.0.1
+    assert_success
+}
+
+@test "Restore[1]: From Vesta [MAIL]" {
+    local domain="vesta09823.tld"
+
+    run v-list-mail-domain $userbk $domain
+    assert_success
+}
+
+@test "Restore[1]: From Vesta [MAIL-Account]" {
+    local domain="vesta09823.tld"
+
+    run v-list-mail-account $userbk $domain testaccount
+    assert_success
+}
+
+@test "Restore[1]: From Vesta [DB]" {
+    run v-list-database $userbk "${userbk}_db"
+    assert_success
+}
+
+@test "Restore[1]: From Vesta [CRON]" {
+    run v-list-cron-job $userbk 1
+    assert_success
+}
+
+@test "Restore[1]: From Vesta Cleanup" {
+    run v-delete-user $userbk
+    assert_success
+    refute_output
+}
+
+
+@test "Restore[2]: Vesta archive over a existing user" {
+    if [ -d "$HOMEDIR/$userbk" ]; then
+        run v-delete-user $userbk
+        assert_success
+        refute_output
+    fi
+
+    if [ ! -d "$HOMEDIR/$userbk" ]; then
+        run v-add-user $userbk $userbk [email protected]
+        assert_success
+    fi
+
+    mkdir -p /backup
+
+    local archive_name="vesta09823.2018-10-18"
+    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"
+    assert_success
+
+    run v-restore-user $userbk "${archive_name}.tar"
+    assert_success
+
+    rm "/backup/${archive_name}.tar"
+}
+
+@test "Restore[2]: From Vesta [WEB]" {
+    local domain="vesta09823.tld"
+    validate_web_domain $userbk "${domain}" 'Hello Vesta'
+}
+
+@test "Restore[2]: From Vesta [DNS]" {
+    local domain="vesta09823.tld"
+
+    run v-list-dns-domain $userbk $domain
+    assert_success
+
+    run nslookup $domain 127.0.0.1
+    assert_success
+}
+
+@test "Restore[2]: From Vesta [MAIL]" {
+    local domain="vesta09823.tld"
+
+    run v-list-mail-domain $userbk $domain
+    assert_success
+}
+
+@test "Restore[2]: From Vesta [MAIL-Account]" {
+    local domain="vesta09823.tld"
+
+    run v-list-mail-account $userbk $domain testaccount
+    assert_success
+}
+
+@test "Restore[2]: From Vesta [DB]" {
+    run v-list-database $userbk "${userbk}_db"
+    assert_success
+}
+
+@test "Restore[2]: From Vesta [CRON]" {
+    run v-list-cron-job $userbk 1
+    assert_success
+}
+
+@test "Restore[2]: From Vesta Cleanup" {
+    run v-delete-user $userbk
+    assert_success
+    refute_output
+}
+
+
 #----------------------------------------------------------#
 #                         CLEANUP                          #
 #----------------------------------------------------------#