test.bats 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882
  1. #!/usr/bin/env bats
  2. load 'test_helper/bats-support/load'
  3. load 'test_helper/bats-assert/load'
  4. load 'test_helper/bats-file/load'
  5. function random() {
  6. MATRIX='0123456789'
  7. LENGTH=$1
  8. while [ ${n:=1} -le $LENGTH ]; do
  9. rand="$rand${MATRIX:$(($RANDOM%${#MATRIX})):1}"
  10. let n+=1
  11. done
  12. echo "$rand"
  13. }
  14. function setup() {
  15. # echo "# Setup_file" > &3
  16. if [ $BATS_TEST_NUMBER = 1 ]; then
  17. echo 'user=test-5285' > /tmp/hestia-test-env.sh
  18. echo 'userbk=testbk-5285' >> /tmp/hestia-test-env.sh
  19. echo 'userpass1=test-5285' >> /tmp/hestia-test-env.sh
  20. echo 'userpass2=t3st-p4ssw0rd' >> /tmp/hestia-test-env.sh
  21. echo 'HESTIA=/usr/local/hestia' >> /tmp/hestia-test-env.sh
  22. echo 'domain=test-5285.hestiacp.com' >> /tmp/hestia-test-env.sh
  23. fi
  24. source /tmp/hestia-test-env.sh
  25. source $HESTIA/func/main.sh
  26. source $HESTIA/conf/hestia.conf
  27. source $HESTIA/func/ip.sh
  28. }
  29. function validate_web_domain() {
  30. local user=$1
  31. local domain=$2
  32. local webproof=$3
  33. refute [ -z "$user" ]
  34. refute [ -z "$domain" ]
  35. refute [ -z "$webproof" ]
  36. source $HESTIA/func/ip.sh
  37. run v-list-web-domain $user $domain
  38. assert_success
  39. USER_DATA=$HESTIA/data/users/$user
  40. local domain_ip=$(get_object_value 'web' 'DOMAIN' "$domain" '$IP')
  41. SSL=$(get_object_value 'web' 'DOMAIN' "$domain" '$SSL')
  42. domain_ip=$(get_real_ip "$domain_ip")
  43. assert_file_exist $HOMEDIR/$user/web/$domain/public_html/index.php
  44. refute [ -z "$webproof" ]
  45. # Test HTTP
  46. run curl --location --silent --show-error --insecure --resolve "${domain}:80:${domain_ip}" "http://${domain}/index.php"
  47. assert_success
  48. assert_output --partial "$webproof"
  49. # Test HTTPS
  50. if [ "$SSL" = "yes" ]; then
  51. run v-list-web-domain-ssl $user $domain
  52. assert_success
  53. run curl --location --silent --show-error --insecure --resolve "${domain}:443:${domain_ip}" "https://${domain}/index.php"
  54. assert_success
  55. assert_output --partial "$webproof"
  56. fi
  57. }
  58. #----------------------------------------------------------#
  59. # MAIN #
  60. #----------------------------------------------------------#
  61. @test "Add new userXXX" {
  62. skip
  63. run v-add-user $user $user $user@hestiacp.com default Super Test
  64. assert_success
  65. refute_output
  66. }
  67. @test "Check reverse Dns validation" {
  68. skip
  69. # 1. PTR record for a IP should return a hostname(reverse) which in turn must resolve to the same IP addr(forward). (Full circle)
  70. # 2. Reject rPTR records that match generic dynamic IP pool patterns
  71. local ip="54.200.1.22"
  72. local rdns="ec2-54-200-1-22.us-west-2.compute.amazonaws.com"
  73. run is_ip_rdns_valid "$ip" "$rdns"
  74. assert_failure
  75. refute_output
  76. local rdns="ec2.54.200.1.22.us-west-2.compute.amazonaws.com"
  77. run is_ip_rdns_valid "$ip" "$rdns"
  78. assert_failure
  79. refute_output
  80. local rdns="ec2-22-1-200-54.us-west-2.compute.amazonaws.com"
  81. run is_ip_rdns_valid "$ip" "$rdns"
  82. assert_failure
  83. refute_output
  84. local rdns="ec2.22.1.200.54.us-west-2.compute.amazonaws.com"
  85. run is_ip_rdns_valid "$ip" "$rdns"
  86. assert_failure
  87. refute_output
  88. local rdns="ec2-200-54-1-22.us-west-2.compute.amazonaws.com"
  89. run is_ip_rdns_valid "$ip" "$rdns"
  90. assert_failure
  91. refute_output
  92. local rdns="panel-22.mydomain.tld"
  93. run is_ip_rdns_valid "$ip" "$rdns"
  94. assert_success
  95. assert_output "$rdns"
  96. local rdns="mail.mydomain.tld"
  97. run is_ip_rdns_valid "$ip" "$rdns"
  98. assert_success
  99. assert_output "$rdns"
  100. local rdns="mydomain.tld"
  101. run is_ip_rdns_valid "$ip" "$rdns"
  102. assert_success
  103. assert_output "$rdns"
  104. }
  105. #----------------------------------------------------------#
  106. # User #
  107. #----------------------------------------------------------#
  108. @test "Add new user" {
  109. run v-add-user $user $user $user@hestiacp.com default Super Test
  110. assert_success
  111. refute_output
  112. }
  113. @test "Change user password" {
  114. run v-change-user-password "$user" t3st-p4ssw0rd
  115. assert_success
  116. refute_output
  117. }
  118. @test "Change user email" {
  119. run v-change-user-contact "$user" tester@hestiacp.com
  120. assert_success
  121. refute_output
  122. }
  123. @test "Change user contact invalid email " {
  124. run v-change-user-contact "$user" testerhestiacp.com
  125. assert_failure $E_INVALID
  126. assert_output --partial 'Error: invalid email format'
  127. }
  128. @test "Change user shell" {
  129. run v-change-user-shell $user bash
  130. assert_success
  131. refute_output
  132. }
  133. @test "Change user invalid shell" {
  134. run v-change-user-shell $user bashinvalid
  135. assert_failure $E_INVALID
  136. assert_output --partial 'shell bashinvalid is not valid'
  137. }
  138. @test "Change user default ns" {
  139. run v-change-user-ns $user ns0.com ns1.com ns2.com ns3.com
  140. assert_success
  141. refute_output
  142. run v-list-user-ns "$user" plain
  143. assert_success
  144. assert_output --partial 'ns0.com'
  145. }
  146. #----------------------------------------------------------#
  147. # Cron #
  148. #----------------------------------------------------------#
  149. @test "Cron: Add cron job" {
  150. run v-add-cron-job $user 1 1 1 1 1 echo
  151. assert_success
  152. refute_output
  153. }
  154. @test "Cron: Suspend cron job" {
  155. run v-suspend-cron-job $user 1
  156. assert_success
  157. refute_output
  158. }
  159. @test "Cron: Unsuspend cron job" {
  160. run v-unsuspend-cron-job $user 1
  161. assert_success
  162. refute_output
  163. }
  164. @test "Cron: Delete cron job" {
  165. run v-delete-cron-job $user 1
  166. assert_success
  167. refute_output
  168. }
  169. @test "Cron: Add cron job (duplicate)" {
  170. run v-add-cron-job $user 1 1 1 1 1 echo 1
  171. assert_success
  172. refute_output
  173. run v-add-cron-job $user 1 1 1 1 1 echo 1
  174. assert_failure $E_EXISTS
  175. assert_output --partial 'JOB=1 is already exists'
  176. }
  177. @test "Cron: Second cron job" {
  178. run v-add-cron-job $user 2 2 2 2 2 echo 2
  179. assert_success
  180. refute_output
  181. }
  182. @test "Cron: Two cron jobs must be listed" {
  183. run v-list-cron-jobs $user csv
  184. assert_success
  185. assert_line --partial '1,1,1,1,1,"echo",no'
  186. assert_line --partial '2,2,2,2,2,"echo",no'
  187. }
  188. @test "Cron: rebuild" {
  189. run v-rebuild-cron-jobs $user
  190. assert_success
  191. refute_output
  192. }
  193. #----------------------------------------------------------#
  194. # IP #
  195. #----------------------------------------------------------#
  196. @test "Ip: Add new ip on first interface" {
  197. interface=$(v-list-sys-interfaces plain | head -n 1)
  198. run ip link show dev $interface
  199. assert_success
  200. local a2_rpaf="/etc/$WEB_SYSTEM/mods-enabled/rpaf.conf"
  201. local a2_remoteip="/etc/$WEB_SYSTEM/mods-enabled/remoteip.conf"
  202. # Save initial state
  203. echo "interface=${interface}" >> /tmp/hestia-test-env.sh
  204. [ -f "$a2_rpaf" ] && file_hash1=$(cat $a2_rpaf |md5sum |cut -d" " -f1) && echo "a2_rpaf_hash='${file_hash1}'" >> /tmp/hestia-test-env.sh
  205. [ -f "$a2_remoteip" ] && file_hash2=$(cat $a2_remoteip |md5sum |cut -d" " -f1) && echo "a2_remoteip_hash='${file_hash2}'" >> /tmp/hestia-test-env.sh
  206. local ip="198.18.0.12"
  207. run v-add-sys-ip $ip 255.255.255.255 $interface $user
  208. assert_success
  209. refute_output
  210. assert_file_exist /etc/$WEB_SYSTEM/conf.d/$ip.conf
  211. assert_file_exist $HESTIA/data/ips/$ip
  212. assert_file_contains $HESTIA/data/ips/$ip "OWNER='$user'"
  213. assert_file_contains $HESTIA/data/ips/$ip "INTERFACE='$interface'"
  214. if [ -n "$PROXY_SYSTEM" ]; then
  215. assert_file_exist /etc/$PROXY_SYSTEM/conf.d/$ip.conf
  216. [ -f "$a2_rpaf" ] && assert_file_contains "$a2_rpaf" "RPAFproxy_ips.*$ip\b"
  217. [ -f "$a2_remoteip" ] && assert_file_contains "$a2_remoteip" "RemoteIPInternalProxy $ip\$"
  218. fi
  219. }
  220. @test "Ip: Add ip (duplicate)" {
  221. run v-add-sys-ip 198.18.0.12 255.255.255.255 $interface $user
  222. assert_failure $E_EXISTS
  223. }
  224. @test "Ip: Add extra ip" {
  225. local ip="198.18.0.121"
  226. run v-add-sys-ip $ip 255.255.255.255 $interface $user
  227. assert_success
  228. refute_output
  229. assert_file_exist /etc/$WEB_SYSTEM/conf.d/$ip.conf
  230. assert_file_exist $HESTIA/data/ips/$ip
  231. assert_file_contains $HESTIA/data/ips/$ip "OWNER='$user'"
  232. assert_file_contains $HESTIA/data/ips/$ip "INTERFACE='$interface'"
  233. if [ -n "$PROXY_SYSTEM" ]; then
  234. assert_file_exist /etc/$PROXY_SYSTEM/conf.d/$ip.conf
  235. local a2_rpaf="/etc/$WEB_SYSTEM/mods-enabled/rpaf.conf"
  236. [ -f "$a2_rpaf" ] && assert_file_contains "$a2_rpaf" "RPAFproxy_ips.*$ip\b"
  237. local a2_remoteip="/etc/$WEB_SYSTEM/mods-enabled/remoteip.conf"
  238. [ -f "$a2_remoteip" ] && assert_file_contains "$a2_remoteip" "RemoteIPInternalProxy $ip\$"
  239. fi
  240. }
  241. @test "Ip: Delete ips" {
  242. local ip="198.18.0.12"
  243. run v-delete-sys-ip $ip
  244. assert_success
  245. refute_output
  246. assert_file_not_exist /etc/$WEB_SYSTEM/conf.d/$ip.conf
  247. assert_file_not_exist $HESTIA/data/ips/$ip
  248. ip="198.18.0.121"
  249. run v-delete-sys-ip $ip
  250. assert_success
  251. refute_output
  252. assert_file_not_exist /etc/$WEB_SYSTEM/conf.d/$ip.conf
  253. assert_file_not_exist $HESTIA/data/ips/$ip
  254. if [ -n "$PROXY_SYSTEM" ]; then
  255. assert_file_not_exist /etc/$PROXY_SYSTEM/conf.d/$ip.conf
  256. fi
  257. # remoteip and rpaf config hashes must match the initial one
  258. if [ ! -z "$a2_rpaf_hash" ]; then
  259. local a2_rpaf="/etc/$WEB_SYSTEM/mods-enabled/rpaf.conf"
  260. file_hash=$(cat $a2_rpaf |md5sum |cut -d" " -f1)
  261. assert_equal "$file_hash" "$a2_rpaf_hash"
  262. fi
  263. if [ ! -z "$a2_remoteip_hash" ]; then
  264. local a2_remoteip="/etc/$WEB_SYSTEM/mods-enabled/remoteip.conf"
  265. file_hash=$(cat $a2_remoteip |md5sum |cut -d" " -f1)
  266. assert_equal "$file_hash" "$a2_remoteip_hash"
  267. fi
  268. }
  269. @test "Ip: Add IP for rest of the test" {
  270. local ip="198.18.0.125"
  271. run v-add-sys-ip $ip 255.255.255.255 $interface $user
  272. assert_success
  273. refute_output
  274. assert_file_exist /etc/$WEB_SYSTEM/conf.d/$ip.conf
  275. assert_file_exist $HESTIA/data/ips/$ip
  276. assert_file_contains $HESTIA/data/ips/$ip "OWNER='$user'"
  277. assert_file_contains $HESTIA/data/ips/$ip "INTERFACE='$interface'"
  278. if [ -n "$PROXY_SYSTEM" ]; then
  279. assert_file_exist /etc/$PROXY_SYSTEM/conf.d/$ip.conf
  280. local a2_rpaf="/etc/$WEB_SYSTEM/mods-enabled/rpaf.conf"
  281. [ -f "$a2_rpaf" ] && assert_file_contains "$a2_rpaf" "RPAFproxy_ips.*$ip\b"
  282. local a2_remoteip="/etc/$WEB_SYSTEM/mods-enabled/remoteip.conf"
  283. [ -f "$a2_remoteip" ] && assert_file_contains "$a2_remoteip" "RemoteIPInternalProxy $ip\$"
  284. fi
  285. }
  286. #----------------------------------------------------------#
  287. # WEB #
  288. #----------------------------------------------------------#
  289. @test "WEB: Add web domain" {
  290. run v-add-web-domain $user $domain 198.18.0.125
  291. assert_success
  292. refute_output
  293. }
  294. @test "WEB: Add web domain (duplicate)" {
  295. run v-add-web-domain $user $domain 198.18.0.125
  296. assert_failure $E_EXISTS
  297. }
  298. @test "WEB: Add web domain alias" {
  299. run v-add-web-domain-alias $user $domain v3.$domain
  300. assert_success
  301. refute_output
  302. }
  303. @test "WEB: Add web domain alias (duplicate)" {
  304. run v-add-web-domain-alias $user $domain v3.$domain
  305. assert_failure $E_EXISTS
  306. }
  307. @test "WEB: Add web domain stats" {
  308. run v-add-web-domain-stats $user $domain awstats
  309. assert_success
  310. refute_output
  311. }
  312. @test "WEB: Add web domain stats user" {
  313. skip
  314. run v-add-web-domain-stats-user $user $domain test m3g4p4ssw0rd
  315. assert_success
  316. refute_output
  317. }
  318. @test "WEB: Suspend web domain" {
  319. run v-suspend-web-domain $user $domain
  320. assert_success
  321. refute_output
  322. }
  323. @test "WEB: Unsuspend web domain" {
  324. run v-unsuspend-web-domain $user $domain
  325. assert_success
  326. refute_output
  327. }
  328. @test "WEB: Add ssl" {
  329. cp -f $HESTIA/ssl/certificate.crt /tmp/$domain.crt
  330. cp -f $HESTIA/ssl/certificate.key /tmp/$domain.key
  331. run v-add-web-domain-ssl $user $domain /tmp
  332. assert_success
  333. refute_output
  334. }
  335. @test "WEB: Rebuild web domain" {
  336. run v-rebuild-web-domains $user
  337. assert_success
  338. refute_output
  339. }
  340. #----------------------------------------------------------#
  341. # DNS #
  342. #----------------------------------------------------------#
  343. @test "DNS: Add domain" {
  344. run v-add-dns-domain $user $domain 198.18.0.125
  345. assert_success
  346. refute_output
  347. }
  348. @test "DNS: Add domain (duplicate)" {
  349. run v-add-dns-domain $user $domain 198.18.0.125
  350. assert_failure $E_EXISTS
  351. }
  352. @test "DNS: Add domain record" {
  353. run v-add-dns-record $user $domain test A 198.18.0.125 20
  354. assert_success
  355. refute_output
  356. }
  357. @test "DNS: Delete domain record" {
  358. run v-delete-dns-record $user $domain 20
  359. assert_success
  360. refute_output
  361. }
  362. @test "DNS: Delete missing domain record" {
  363. run v-delete-dns-record $user $domain 20
  364. assert_failure $E_NOTEXIST
  365. }
  366. @test "DNS: Change domain expire date" {
  367. run v-change-dns-domain-exp $user $domain 2020-01-01
  368. assert_success
  369. refute_output
  370. }
  371. @test "DNS: Change domain ip" {
  372. run v-change-dns-domain-ip $user $domain 127.0.0.1
  373. assert_success
  374. refute_output
  375. }
  376. @test "DNS: Suspend domain" {
  377. run v-suspend-dns-domain $user $domain
  378. assert_success
  379. refute_output
  380. }
  381. @test "DNS: Unsuspend domain" {
  382. run v-unsuspend-dns-domain $user $domain
  383. assert_success
  384. refute_output
  385. }
  386. @test "DNS: Rebuild" {
  387. run v-rebuild-dns-domains $user
  388. assert_success
  389. refute_output
  390. }
  391. #----------------------------------------------------------#
  392. # MAIL #
  393. #----------------------------------------------------------#
  394. @test "MAIL: Add domain" {
  395. run v-add-mail-domain $user $domain
  396. assert_success
  397. refute_output
  398. }
  399. @test "MAIL: Add domain (duplicate)" {
  400. run v-add-mail-domain $user $domain
  401. assert_failure $E_EXISTS
  402. }
  403. @test "MAIL: Add account" {
  404. run v-add-mail-account $user $domain test t3st-p4ssw0rd
  405. assert_success
  406. refute_output
  407. }
  408. @test "MAIL: Add account (duplicate)" {
  409. run v-add-mail-account $user $domain test t3st-p4ssw0rd
  410. assert_failure $E_EXISTS
  411. }
  412. @test "MAIL: Delete account" {
  413. run v-delete-mail-account $user $domain test
  414. assert_success
  415. refute_output
  416. }
  417. @test "MAIL: Delete missing account" {
  418. run v-delete-mail-account $user $domain test
  419. assert_failure $E_NOTEXIST
  420. }
  421. #----------------------------------------------------------#
  422. # DB #
  423. #----------------------------------------------------------#
  424. #----------------------------------------------------------#
  425. # Backup / Restore #
  426. #----------------------------------------------------------#
  427. #Test backup
  428. # Hestia v1.1.1 archive contains:
  429. # user: hestia111
  430. # web:
  431. # - test.hestia.com (+SSL self-signed)
  432. # dns:
  433. # - test.hestia.com
  434. # mail:
  435. # - test.hestia.com
  436. # mail acc:
  437. # - testaccount@test.hestia.com
  438. # db:
  439. # - hestia111_db
  440. # cron:
  441. # - 1: /bin/true
  442. #
  443. # Vesta 0.9.8-23 archive contains:
  444. # user: vesta09823
  445. # web:
  446. # - vesta09823.tld (+SSL self-signed)
  447. # dns:
  448. # - vesta09823.tld
  449. # mail:
  450. # - vesta09823.tld
  451. # mail acc:
  452. # - testaccount@vesta09823.tld
  453. # db:
  454. # - vesta09823_db
  455. # cron:
  456. # - 1: /bin/true
  457. #
  458. # Testing Hestia backups
  459. @test "Restore[1]: Hestia archive for a non-existing user" {
  460. if [ -d "$HOMEDIR/$userbk" ]; then
  461. run v-delete-user $userbk
  462. assert_success
  463. refute_output
  464. fi
  465. mkdir -p /backup
  466. local archive_name="hestia111.2020-03-26"
  467. 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"
  468. assert_success
  469. run v-restore-user $userbk "${archive_name}.tar"
  470. assert_success
  471. rm "/backup/${archive_name}.tar"
  472. }
  473. @test "Restore[1]: From Hestia [WEB]" {
  474. local domain="test.hestia.com"
  475. validate_web_domain $userbk $domain 'Hello Hestia'
  476. }
  477. @test "Restore[1]: From Hestia [DNS]" {
  478. local domain="test.hestia.com"
  479. run v-list-dns-domain $userbk $domain
  480. assert_success
  481. run nslookup $domain 127.0.0.1
  482. assert_success
  483. }
  484. @test "Restore[1]: From Hestia [MAIL]" {
  485. local domain="test.hestia.com"
  486. run v-list-mail-domain $userbk $domain
  487. assert_success
  488. }
  489. @test "Restore[1]: From Hestia [MAIL-Account]" {
  490. local domain="test.hestia.com"
  491. run v-list-mail-account $userbk $domain testaccount
  492. assert_success
  493. }
  494. @test "Restore[1]: From Hestia [DB]" {
  495. run v-list-database $userbk "${userbk}_db"
  496. assert_success
  497. }
  498. @test "Restore[1]: From Hestia [CRON]" {
  499. run v-list-cron-job $userbk 1
  500. assert_success
  501. }
  502. @test "Restore[1]: From Hestia Cleanup" {
  503. run v-delete-user $userbk
  504. assert_success
  505. refute_output
  506. }
  507. @test "Restore[2]: Hestia archive over a existing user" {
  508. if [ -d "$HOMEDIR/$userbk" ]; then
  509. run v-delete-user $userbk
  510. assert_success
  511. refute_output
  512. fi
  513. if [ ! -d "$HOMEDIR/$userbk" ]; then
  514. run v-add-user $userbk $userbk test@hestia.com
  515. assert_success
  516. fi
  517. mkdir -p /backup
  518. local archive_name="hestia111.2020-03-26"
  519. 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"
  520. assert_success
  521. run v-restore-user $userbk "${archive_name}.tar"
  522. assert_success
  523. rm "/backup/${archive_name}.tar"
  524. }
  525. @test "Restore[2]: From Hestia [WEB]" {
  526. local domain="test.hestia.com"
  527. validate_web_domain $userbk "${domain}" 'Hello Hestia'
  528. }
  529. @test "Restore[2]: From Hestia [DNS]" {
  530. local domain="test.hestia.com"
  531. run v-list-dns-domain $userbk $domain
  532. assert_success
  533. run nslookup $domain 127.0.0.1
  534. assert_success
  535. }
  536. @test "Restore[2]: From Hestia [MAIL]" {
  537. local domain="test.hestia.com"
  538. run v-list-mail-domain $userbk $domain
  539. assert_success
  540. }
  541. @test "Restore[2]: From Hestia [MAIL-Account]" {
  542. local domain="test.hestia.com"
  543. run v-list-mail-account $userbk $domain testaccount
  544. assert_success
  545. }
  546. @test "Restore[2]: From Hestia [DB]" {
  547. run v-list-database $userbk "${userbk}_db"
  548. assert_success
  549. }
  550. @test "Restore[2]: From Hestia [CRON]" {
  551. run v-list-cron-job $userbk 1
  552. assert_success
  553. }
  554. @test "Restore[2]: From Hestia Cleanup" {
  555. run v-delete-user $userbk
  556. assert_success
  557. refute_output
  558. }
  559. # Testing Vesta Backups
  560. @test "Restore[1]: Vesta archive for a non-existing user" {
  561. if [ -d "$HOMEDIR/$userbk" ]; then
  562. run v-delete-user $userbk
  563. assert_success
  564. refute_output
  565. fi
  566. mkdir -p /backup
  567. local archive_name="vesta09823.2018-10-18"
  568. 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"
  569. assert_success
  570. run v-restore-user $userbk "${archive_name}.tar"
  571. assert_success
  572. rm "/backup/${archive_name}.tar"
  573. }
  574. @test "Restore[1]: From Vesta [WEB]" {
  575. local domain="vesta09823.tld"
  576. validate_web_domain $userbk $domain 'Hello Vesta'
  577. }
  578. @test "Restore[1]: From Vesta [DNS]" {
  579. local domain="vesta09823.tld"
  580. run v-list-dns-domain $userbk $domain
  581. assert_success
  582. run nslookup $domain 127.0.0.1
  583. assert_success
  584. }
  585. @test "Restore[1]: From Vesta [MAIL]" {
  586. local domain="vesta09823.tld"
  587. run v-list-mail-domain $userbk $domain
  588. assert_success
  589. }
  590. @test "Restore[1]: From Vesta [MAIL-Account]" {
  591. local domain="vesta09823.tld"
  592. run v-list-mail-account $userbk $domain testaccount
  593. assert_success
  594. }
  595. @test "Restore[1]: From Vesta [DB]" {
  596. run v-list-database $userbk "${userbk}_db"
  597. assert_success
  598. }
  599. @test "Restore[1]: From Vesta [CRON]" {
  600. run v-list-cron-job $userbk 1
  601. assert_success
  602. }
  603. @test "Restore[1]: From Vesta Cleanup" {
  604. run v-delete-user $userbk
  605. assert_success
  606. refute_output
  607. }
  608. @test "Restore[2]: Vesta archive over a existing user" {
  609. if [ -d "$HOMEDIR/$userbk" ]; then
  610. run v-delete-user $userbk
  611. assert_success
  612. refute_output
  613. fi
  614. if [ ! -d "$HOMEDIR/$userbk" ]; then
  615. run v-add-user $userbk $userbk test@hestia.com
  616. assert_success
  617. fi
  618. mkdir -p /backup
  619. local archive_name="vesta09823.2018-10-18"
  620. 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"
  621. assert_success
  622. run v-restore-user $userbk "${archive_name}.tar"
  623. assert_success
  624. rm "/backup/${archive_name}.tar"
  625. }
  626. @test "Restore[2]: From Vesta [WEB]" {
  627. local domain="vesta09823.tld"
  628. validate_web_domain $userbk "${domain}" 'Hello Vesta'
  629. }
  630. @test "Restore[2]: From Vesta [DNS]" {
  631. local domain="vesta09823.tld"
  632. run v-list-dns-domain $userbk $domain
  633. assert_success
  634. run nslookup $domain 127.0.0.1
  635. assert_success
  636. }
  637. @test "Restore[2]: From Vesta [MAIL]" {
  638. local domain="vesta09823.tld"
  639. run v-list-mail-domain $userbk $domain
  640. assert_success
  641. }
  642. @test "Restore[2]: From Vesta [MAIL-Account]" {
  643. local domain="vesta09823.tld"
  644. run v-list-mail-account $userbk $domain testaccount
  645. assert_success
  646. }
  647. @test "Restore[2]: From Vesta [DB]" {
  648. run v-list-database $userbk "${userbk}_db"
  649. assert_success
  650. }
  651. @test "Restore[2]: From Vesta [CRON]" {
  652. run v-list-cron-job $userbk 1
  653. assert_success
  654. }
  655. @test "Restore[2]: From Vesta Cleanup" {
  656. run v-delete-user $userbk
  657. assert_success
  658. refute_output
  659. }
  660. #----------------------------------------------------------#
  661. # CLEANUP #
  662. #----------------------------------------------------------#
  663. @test "Mail: Delete domain" {
  664. # skip
  665. run v-delete-mail-domain $user $domain
  666. assert_success
  667. refute_output
  668. }
  669. @test "DNS: Delete domain" {
  670. # skip
  671. run v-delete-dns-domain $user $domain
  672. assert_success
  673. refute_output
  674. }
  675. @test "WEB: Delete domain" {
  676. # skip
  677. run v-delete-web-domain $user $domain
  678. assert_success
  679. refute_output
  680. }
  681. @test "Delete user" {
  682. # skip
  683. run v-delete-user $user
  684. assert_success
  685. refute_output
  686. }
  687. @test "Ip: Delete the test IP" {
  688. # skip
  689. run v-delete-sys-ip 198.18.0.125
  690. assert_success
  691. refute_output
  692. }
  693. @test 'assert()' {
  694. touch '/var/log/test.log'
  695. assert [ -e '/var/log/test.log' ]
  696. }