@@ -18,6 +18,8 @@ function setup() {
1818 echo ' userpass2=t3st-p4ssw0rd' >> /tmp/hestia-test-env.sh
1919 echo ' HESTIA=/usr/local/hestia' >> /tmp/hestia-test-env.sh
2020 echo ' domain=test-5285.hestiacp.com' >> /tmp/hestia-test-env.sh
21+ echo ' database=test-5285_database' >> /tmp/hestia-test-env.sh
22+ echo ' dbuser=test-5285_dbuser' >> /tmp/hestia-test-env.sh
2123 fi
2224
2325 source /tmp/hestia-test-env.sh
@@ -138,6 +140,42 @@ function validate_webmail_domain() {
138140 fi
139141}
140142
143+ function validate_database(){
144+ local database=$1
145+ local dbuser=$2
146+ local password=$3
147+
148+ host_str=$( grep " HOST='localhost'" $HESTIA /conf/mysql.conf)
149+ parse_object_kv_list " $host_str "
150+ if [ -z $PORT ]; then PORT=3306; fi
151+
152+ refute [ -z " $HOST " ]
153+ refute [ -z " $PORT " ]
154+ refute [ -z " $database " ]
155+ refute [ -z " $dbuser " ]
156+ refute [ -z " $password " ]
157+
158+
159+ # Create an connection to verify correct username / password has been set correctly
160+ tmpfile=$( mktemp /tmp/mysql.XXXXXX)
161+ echo " [client]" > $tmpfile
162+ echo " host='$HOST '" >> $tmpfile
163+ echo " user='$dbuser '" >> $tmpfile
164+ echo " password='$password '" >> $tmpfile
165+ echo " port='$PORT '" >> $tmpfile
166+ chmod 600 $tmpfile
167+
168+ sql_tmp=$( mktemp /tmp/query.XXXXXX)
169+ echo " show databases;" > $sql_tmp
170+ run mysql --defaults-file=$tmpfile < " $sql_tmp "
171+
172+ assert_success
173+ assert_output --partial " $database "
174+
175+ rm -f " $sql_tmp "
176+ rm -f " $tmpfile "
177+ }
178+
141179# ----------------------------------------------------------#
142180# MAIN #
143181# ----------------------------------------------------------#
@@ -154,7 +192,6 @@ function validate_webmail_domain() {
154192# ----------------------------------------------------------#
155193
156194@test " Check reverse Dns validation" {
157-
158195 # 1. PTR record for a IP should return a hostname(reverse) which in turn must resolve to the same IP addr(forward). (Full circle)
159196 # `-> not implemented in `is_ip_rdns_valid` yet and also not tested here
160197 # 2. Reject rPTR records that match generic dynamic IP pool patterns
@@ -903,6 +940,61 @@ function validate_webmail_domain() {
903940# DB #
904941# ----------------------------------------------------------#
905942
943+ @test " DB: Add database (mysql)" {
944+ run v-add-database $user database dbuser 1234 mysql
945+ assert_success
946+ refute_output
947+ # validate_database database_name database_user password
948+ validate_database $database $dbuser 1234
949+ }
950+ @test " DB: Add Database (mysql) (Duplicate)" {
951+ run v-add-database $user database dbuser 1234 mysql
952+ assert_failure $E_EXISTS
953+ }
954+
955+ @test " DB: Rebuild Database (mysql)" {
956+ run v-rebuild-database $user $database
957+ assert_success
958+ refute_output
959+ }
960+
961+ @test " DB: Change database user password (mysql)" {
962+ run v-change-database-password $user $database 123456
963+ assert_success
964+ refute_output
965+
966+ validate_database $database $dbuser 123456
967+ }
968+
969+ @test " DB: Change database user (mysql)" {
970+ run v-change-database-user $user $database database
971+ assert_success
972+ refute_output
973+ validate_database $database $database 123456
974+ }
975+
976+ @test " DB: Suspend database" {
977+ run v-suspend-database $user $database
978+ assert_success
979+ refute_output
980+ }
981+
982+ @test " DB: Unsuspend database" {
983+ run v-unsuspend-database $user $database
984+ assert_success
985+ refute_output
986+ }
987+
988+ @test " DB: Delete database" {
989+ run v-delete-database $user $database
990+ assert_success
991+ refute_output
992+ }
993+
994+ @test " DB: Delete missing database" {
995+ run v-delete-database $user $database
996+ assert_failure $E_NOTEXIST
997+ }
906998
907999# ----------------------------------------------------------#
9081000# Backup / Restore #
@@ -923,7 +1015,20 @@ function validate_webmail_domain() {
9231015# - hestia111_db
9241016# cron:
9251017# - 1: /bin/true
926- #
1018+ # Hestia 1.3.1 archive contains (As zstd format)
1019+ # user: hestia131
1020+ # web:
1021+ # - test.hestia.com (+SSL self-signed)
1022+ # dns:
1023+ # - test.hestia.com
1024+ # mail:
1025+ # - test.hestia.com
1026+ # mail acc:
1027+ # - testaccount@test.hestia.com
1028+ # db:
1029+ # - hestia131_db
1030+ # cron:
1031+ # - 1: /bin/true
9271032# Vesta 0.9.8-23 archive contains:
9281033# user: vesta09823
9291034# web:
@@ -1075,6 +1180,139 @@ function validate_webmail_domain() {
10751180 refute_output
10761181}
10771182
1183+ @test " Restore[3]: Hestia (zstd) archive for a non-existing user" {
1184+ if [ -d " $HOMEDIR /$userbk " ]; then
1185+ run v-delete-user $userbk
1186+ assert_success
1187+ refute_output
1188+ fi
1189+
1190+ mkdir -p /backup
1191+
1192+ local archive_name=" hestia131.2020-12-12"
1193+ 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"
1194+ assert_success
1195+
1196+ run v-restore-user $userbk " ${archive_name} .tar"
1197+ assert_success
1198+
1199+ rm " /backup/${archive_name} .tar"
1200+ }
1201+
1202+ @test " Restore[3]: From Hestia [WEB]" {
1203+ local domain=" test.hestia.com"
1204+ validate_web_domain $userbk $domain ' Hello Hestia'
1205+ }
1206+
1207+ @test " Restore[3]: From Hestia [DNS]" {
1208+ local domain=" test.hestia.com"
1209+
1210+ run v-list-dns-domain $userbk $domain
1211+ assert_success
1212+
1213+ run nslookup $domain 127.0.0.1
1214+ assert_success
1215+ }
1216+
1217+ @test " Restore[3]: From Hestia [MAIL]" {
1218+ local domain=" test.hestia.com"
1219+
1220+ run v-list-mail-domain $userbk $domain
1221+ assert_success
1222+ }
1223+
1224+ @test " Restore[3]: From Hestia [MAIL-Account]" {
1225+ local domain=" test.hestia.com"
1226+
1227+ run v-list-mail-account $userbk $domain testaccount
1228+ assert_success
1229+ }
1230+
1231+ @test " Restore[3]: From Hestia [DB]" {
1232+ run v-list-database $userbk " ${userbk} _db"
1233+ assert_success
1234+ }
1235+
1236+ @test " Restore[3]: From Hestia [CRON]" {
1237+ run v-list-cron-job $userbk 1
1238+ assert_success
1239+ }
1240+
1241+ @test " Restore[3]: From Hestia Cleanup" {
1242+ run v-delete-user $userbk
1243+ assert_success
1244+ refute_output
1245+ }
1246+
1247+ @test " Restore[4]: Hestia (zstd) archive for a existing user" {
1248+ if [ -d " $HOMEDIR /$userbk " ]; then
1249+ run v-delete-user $userbk
1250+ assert_success
1251+ refute_output
1252+ fi
1253+
1254+ if [ ! -d " $HOMEDIR /$userbk " ]; then
1255+ run v-add-user $userbk $userbk test@hestia.com
1256+ assert_success
1257+ fi
1258+
1259+ mkdir -p /backup
1260+
1261+ local archive_name=" hestia131.2020-12-12"
1262+ 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"
1263+ assert_success
1264+
1265+ run v-restore-user $userbk " ${archive_name} .tar"
1266+ assert_success
1267+
1268+ rm " /backup/${archive_name} .tar"
1269+ }
1270+
1271+ @test " Restore[4]: From Hestia [WEB]" {
1272+ local domain=" test.hestia.com"
1273+ validate_web_domain $userbk $domain ' Hello Hestia'
1274+ }
1275+
1276+ @test " Restore[4]: From Hestia [DNS]" {
1277+ local domain=" test.hestia.com"
1278+
1279+ run v-list-dns-domain $userbk $domain
1280+ assert_success
1281+
1282+ run nslookup $domain 127.0.0.1
1283+ assert_success
1284+ }
1285+
1286+ @test " Restore[4]: From Hestia [MAIL]" {
1287+ local domain=" test.hestia.com"
1288+
1289+ run v-list-mail-domain $userbk $domain
1290+ assert_success
1291+ }
1292+
1293+ @test " Restore[4]: From Hestia [MAIL-Account]" {
1294+ local domain=" test.hestia.com"
1295+
1296+ run v-list-mail-account $userbk $domain testaccount
1297+ assert_success
1298+ }
1299+
1300+ @test " Restore[4]: From Hestia [DB]" {
1301+ run v-list-database $userbk " ${userbk} _db"
1302+ assert_success
1303+ }
1304+
1305+ @test " Restore[4]: From Hestia [CRON]" {
1306+ run v-list-cron-job $userbk 1
1307+ assert_success
1308+ }
1309+
1310+ @test " Restore[4]: From Hestia Cleanup" {
1311+ run v-delete-user $userbk
1312+ assert_success
1313+ refute_output
1314+ }
1315+
10781316
10791317# Testing Vesta Backups
10801318@test " Restore[1]: Vesta archive for a non-existing user" {
0 commit comments