Skip to content

Commit 8fad55f

Browse files
authored
Merge pull request hestiacp#1457 from hestiacp/fix/additinol_bats_testing
Improve testing
2 parents e2c1ef7 + d2cfb1a commit 8fad55f

File tree

1 file changed

+240
-2
lines changed

1 file changed

+240
-2
lines changed

test/test.bats

Lines changed: 240 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)