test.bats 69 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308
  1. #!/usr/bin/env bats
  2. if [ "${PATH#*/usr/local/hestia/bin*}" = "$PATH" ]; then
  3. . /etc/profile.d/hestia.sh
  4. fi
  5. load 'test_helper/bats-support/load'
  6. load 'test_helper/bats-assert/load'
  7. load 'test_helper/bats-file/load'
  8. function random() {
  9. head /dev/urandom | tr -dc 0-9 | head -c$1
  10. }
  11. function setup() {
  12. # echo "# Setup_file" > &3
  13. if [ $BATS_TEST_NUMBER = 1 ]; then
  14. echo 'user=test-5285' > /tmp/hestia-test-env.sh
  15. echo 'user2=test-5286' >> /tmp/hestia-test-env.sh
  16. echo 'userbk=testbk-5285' >> /tmp/hestia-test-env.sh
  17. echo 'userpass1=test-5285' >> /tmp/hestia-test-env.sh
  18. echo 'userpass2=t3st-p4ssw0rd' >> /tmp/hestia-test-env.sh
  19. echo 'HESTIA=/usr/local/hestia' >> /tmp/hestia-test-env.sh
  20. echo 'domain=test-5285.hestiacp.com' >> /tmp/hestia-test-env.sh
  21. echo 'domainuk=test-5285.hestiacp.com.uk' >> /tmp/hestia-test-env.sh
  22. echo 'rootdomain=testhestiacp.com' >> /tmp/hestia-test-env.sh
  23. echo 'subdomain=cdn.testhestiacp.com' >> /tmp/hestia-test-env.sh
  24. echo 'database=test-5285_database' >> /tmp/hestia-test-env.sh
  25. echo 'dbuser=test-5285_dbuser' >> /tmp/hestia-test-env.sh
  26. echo 'pguser=test5290' >> /tmp/hestia-test-env.sh
  27. echo 'pgdatabase=test5290_database' >> /tmp/hestia-test-env.sh
  28. echo 'pgdbuser=test5290_dbuser' >> /tmp/hestia-test-env.sh
  29. fi
  30. source /tmp/hestia-test-env.sh
  31. source $HESTIA/func/main.sh
  32. source $HESTIA/conf/hestia.conf
  33. source $HESTIA/func/ip.sh
  34. }
  35. function validate_web_domain() {
  36. local user=$1
  37. local domain=$2
  38. local webproof=$3
  39. local webpath=${4}
  40. refute [ -z "$user" ]
  41. refute [ -z "$domain" ]
  42. refute [ -z "$webproof" ]
  43. source $HESTIA/func/ip.sh
  44. run v-list-web-domain $user $domain
  45. assert_success
  46. USER_DATA=$HESTIA/data/users/$user
  47. local domain_ip=$(get_object_value 'web' 'DOMAIN' "$domain" '$IP')
  48. SSL=$(get_object_value 'web' 'DOMAIN' "$domain" '$SSL')
  49. domain_ip=$(get_real_ip "$domain_ip")
  50. if [ ! -z $webpath ]; then
  51. domain_docroot=$(get_object_value 'web' 'DOMAIN' "$domain" '$CUSTOM_DOCROOT')
  52. if [ -n "$domain_docroot" ] && [ -d "$domain_docroot" ]; then
  53. assert_file_exist "${domain_docroot}/${webpath}"
  54. else
  55. assert_file_exist "${HOMEDIR}/${user}/web/${domain}/public_html/${webpath}"
  56. fi
  57. fi
  58. # Test HTTP
  59. # Curl hates UTF domains so convert them to ascci.
  60. domain_idn=$(idn2 $domain)
  61. run curl --location --silent --show-error --insecure --resolve "${domain_idn}:80:${domain_ip}" "http://${domain_idn}/${webpath}"
  62. assert_success
  63. assert_output --partial "$webproof"
  64. # Test HTTPS
  65. if [ "$SSL" = "yes" ]; then
  66. run v-list-web-domain-ssl $user $domain
  67. assert_success
  68. run curl --location --silent --show-error --insecure --resolve "${domain_idn}:443:${domain_ip}" "https://${domain_idn}/${webpath}"
  69. assert_success
  70. assert_output --partial "$webproof"
  71. fi
  72. }
  73. function validate_web_domain() {
  74. local user=$1
  75. local domain=$2
  76. local webproof=$3
  77. local webpath=${4}
  78. refute [ -z "$user" ]
  79. refute [ -z "$domain" ]
  80. refute [ -z "$webproof" ]
  81. source $HESTIA/func/ip.sh
  82. run v-list-web-domain $user $domain
  83. assert_success
  84. USER_DATA=$HESTIA/data/users/$user
  85. local domain_ip=$(get_object_value 'web' 'DOMAIN' "$domain" '$IP')
  86. SSL=$(get_object_value 'web' 'DOMAIN' "$domain" '$SSL')
  87. domain_ip=$(get_real_ip "$domain_ip")
  88. if [ ! -z $webpath ]; then
  89. domain_docroot=$(get_object_value 'web' 'DOMAIN' "$domain" '$CUSTOM_DOCROOT')
  90. if [ -n "$domain_docroot" ] && [ -d "$domain_docroot" ]; then
  91. assert_file_exist "${domain_docroot}/${webpath}"
  92. else
  93. assert_file_exist "${HOMEDIR}/${user}/web/${domain}/public_html/${webpath}"
  94. fi
  95. fi
  96. # Test HTTP
  97. # Curl hates UTF domains so convert them to ascci.
  98. domain_idn=$(idn2 $domain)
  99. run curl --location --silent --show-error --insecure --resolve "${domain_idn}:80:${domain_ip}" "http://${domain_idn}/${webpath}"
  100. assert_success
  101. assert_output --partial "$webproof"
  102. # Test HTTPS
  103. if [ "$SSL" = "yes" ]; then
  104. run v-list-web-domain-ssl $user $domain
  105. assert_success
  106. run curl --location --silent --show-error --insecure --resolve "${domain_idn}:443:${domain_ip}" "https://${domain_idn}/${webpath}"
  107. assert_success
  108. assert_output --partial "$webproof"
  109. fi
  110. }
  111. function validate_headers_domain() {
  112. local user=$1
  113. local domain=$2
  114. local webproof=$3
  115. refute [ -z "$user" ]
  116. refute [ -z "$domain" ]
  117. refute [ -z "$webproof" ]
  118. source $HESTIA/func/ip.sh
  119. run v-list-web-domain $user $domain
  120. assert_success
  121. USER_DATA=$HESTIA/data/users/$user
  122. local domain_ip=$(get_object_value 'web' 'DOMAIN' "$domain" '$IP')
  123. SSL=$(get_object_value 'web' 'DOMAIN' "$domain" '$SSL')
  124. domain_ip=$(get_real_ip "$domain_ip")
  125. # Test HTTP with code redirect for some reasons due to 301 redirect it fails
  126. curl -i --resolve "${domain}:80:${domain_ip}" "http://${domain}"
  127. assert_success
  128. assert_output --partial "$webproof"
  129. }
  130. function validate_mail_domain() {
  131. local user=$1
  132. local domain=$2
  133. refute [ -z "$user" ]
  134. refute [ -z "$domain" ]
  135. run v-list-mail-domain $user $domain
  136. assert_success
  137. assert_dir_exist $HOMEDIR/$user/mail/$domain
  138. assert_dir_exist $HOMEDIR/$user/conf/mail/$domain
  139. assert_file_exist $HOMEDIR/$user/conf/mail/$domain/aliases
  140. if [ -n "$ANTISPAM_SYSTEM" ]; then
  141. assert_file_exist $HOMEDIR/$user/conf/mail/$domain/antispam
  142. fi
  143. if [ -n "$ANTIVIRUS_SYSTEM" ]; then
  144. assert_file_exist $HOMEDIR/$user/conf/mail/$domain/antivirus
  145. fi
  146. assert_file_exist $HOMEDIR/$user/conf/mail/$domain/fwd_only
  147. assert_file_exist $HOMEDIR/$user/conf/mail/$domain/ip
  148. assert_file_exist $HOMEDIR/$user/conf/mail/$domain/passwd
  149. }
  150. function validate_webmail_domain() {
  151. local user=$1
  152. local domain=$2
  153. local webproof=$3
  154. local webpath=${4}
  155. refute [ -z "$user" ]
  156. refute [ -z "$domain" ]
  157. refute [ -z "$webproof" ]
  158. source $HESTIA/func/ip.sh
  159. USER_DATA=$HESTIA/data/users/$user
  160. local domain_ip=$(get_object_value 'web' 'DOMAIN' "$domain" '$IP')
  161. SSL=$(get_object_value 'mail' 'DOMAIN' "$domain" '$SSL')
  162. domain_ip=$(get_real_ip "$domain_ip")
  163. if [ ! -z "$webpath" ]; then
  164. assert_file_exist /var/lib/roundcube/$webpath
  165. fi
  166. if [ "$SSL" = "no" ]; then
  167. # Test HTTP
  168. run curl --location --silent --show-error --insecure --resolve "webmail.${domain}:80:${domain_ip}" "http://webmail.${domain}/${webpath}"
  169. assert_success
  170. assert_output --partial "$webproof"
  171. # Test HTTP
  172. run curl --location --silent --show-error --insecure --resolve "mail.${domain}:80:${domain_ip}" "http://mail.${domain}/${webpath}"
  173. assert_success
  174. assert_output --partial "$webproof"
  175. fi
  176. # Test HTTPS
  177. if [ "$SSL" = "yes" ]; then
  178. # Test HTTP with 301 redirect for some reasons due to 301 redirect it fails
  179. run curl --silent --show-error --insecure --resolve "webmail.${domain}:80:${domain_ip}" "http://webmail.${domain}/${webpath}"
  180. assert_success
  181. assert_output --partial "301 Moved Permanently"
  182. # Test HTTP with 301 redirect for some reasons due to 301 redirect it fails
  183. run curl --silent --show-error --insecure --resolve "mail.${domain}:80:${domain_ip}" "http://mail.${domain}/${webpath}"
  184. assert_success
  185. assert_output --partial "301 Moved Permanently"
  186. run v-list-mail-domain-ssl $user $domain
  187. assert_success
  188. run curl --location --silent --show-error --insecure --resolve "webmail.${domain}:443:${domain_ip}" "https://webmail.${domain}/${webpath}"
  189. assert_success
  190. assert_output --partial "$webproof"
  191. run curl --location --silent --show-error --insecure --resolve "mail.${domain}:443:${domain_ip}" "https://mail.${domain}/${webpath}"
  192. assert_success
  193. assert_output --partial "$webproof"
  194. fi
  195. }
  196. function validate_database(){
  197. local type=$1
  198. local database=$2
  199. local dbuser=$3
  200. local password=$4
  201. host_str=$(grep "HOST='localhost'" $HESTIA/conf/$type.conf)
  202. parse_object_kv_list "$host_str"
  203. if [ -z $PORT ]; then PORT=3306; fi
  204. refute [ -z "$HOST" ]
  205. refute [ -z "$PORT" ]
  206. refute [ -z "$database" ]
  207. refute [ -z "$dbuser" ]
  208. refute [ -z "$password" ]
  209. if [ "$type" = "mysql" ]; then
  210. # Create an connection to verify correct username / password has been set correctly
  211. tmpfile=$(mktemp /tmp/mysql.XXXXXX)
  212. echo "[client]">$tmpfile
  213. echo "host='$HOST'" >> $tmpfile
  214. echo "user='$dbuser'" >> $tmpfile
  215. echo "password='$password'" >> $tmpfile
  216. echo "port='$PORT'" >> $tmpfile
  217. chmod 600 $tmpfile
  218. sql_tmp=$(mktemp /tmp/query.XXXXXX)
  219. echo "show databases;" > $sql_tmp
  220. run mysql --defaults-file=$tmpfile < "$sql_tmp"
  221. assert_success
  222. assert_output --partial "$database"
  223. rm -f "$sql_tmp"
  224. rm -f "$tmpfile"
  225. else
  226. echo "*:*:*:$dbuser:$password" > /root/.pgpass
  227. chmod 600 /root/.pgpass
  228. run export PGPASSWORD="$password" | psql -h $HOST -U "$dbuser" -p $PORT -d "$database" --no-password -c "\l"
  229. assert_success
  230. rm /root/.pgpass
  231. fi
  232. }
  233. function check_ip_banned(){
  234. local ip=$1
  235. local chain=$2
  236. run grep "IP='$ip' CHAIN='$chain'" $HESTIA/data/firewall/banlist.conf
  237. assert_success
  238. assert_output --partial "$ip"
  239. }
  240. function check_ip_not_banned(){
  241. local ip=$1
  242. local chain=$2
  243. run grep "IP='$ip' CHAIN='$chain'" $HESTIA/data/firewall/banlist.conf
  244. assert_failure E_ARGS
  245. refute_output
  246. }
  247. #----------------------------------------------------------#
  248. # IP #
  249. #----------------------------------------------------------#
  250. @test "RDNS: Check reverse Dns validation" {
  251. # 1. PTR record for a IP should return a hostname(reverse) which in turn must resolve to the same IP addr(forward). (Full circle)
  252. # `-> not implemented in `is_ip_rdns_valid` yet and also not tested here
  253. # 2. Reject rPTR records that match generic dynamic IP pool patterns
  254. local ip="54.200.1.22"
  255. local rdns="ec2-54-200-1-22.us-west-2.compute.amazonaws.com"
  256. run is_ip_rdns_valid "$ip"
  257. assert_failure
  258. refute_output
  259. local rdns="ec2.54.200.1.22.us-west-2.compute.amazonaws.com"
  260. run is_ip_rdns_valid "$ip"
  261. assert_failure
  262. refute_output
  263. local rdns="ec2-22-1-200-54.us-west-2.compute.amazonaws.com"
  264. run is_ip_rdns_valid "$ip"
  265. assert_failure
  266. refute_output
  267. local rdns="ec2.22.1.200.54.us-west-2.compute.amazonaws.com"
  268. run is_ip_rdns_valid "$ip"
  269. assert_failure
  270. refute_output
  271. local rdns="ec2-200-54-1-22.us-west-2.compute.amazonaws.com"
  272. run is_ip_rdns_valid "$ip"
  273. assert_failure
  274. refute_output
  275. local rdns="panel-22.mydomain.tld"
  276. run is_ip_rdns_valid "$ip"
  277. assert_success
  278. assert_output "$rdns"
  279. local rdns="mail.mydomain.tld"
  280. run is_ip_rdns_valid "$ip"
  281. assert_success
  282. assert_output "$rdns"
  283. local rdns="mydomain.tld"
  284. run is_ip_rdns_valid "$ip"
  285. assert_success
  286. assert_output "$rdns"
  287. }
  288. #----------------------------------------------------------#
  289. # User #
  290. #----------------------------------------------------------#
  291. @test "User: Add new user" {
  292. run v-add-user $user $user [email protected] default "Super Test"
  293. assert_success
  294. refute_output
  295. }
  296. @test "User: Add new user Failed 1" {
  297. run v-add-user 'jäap' $user [email protected] default "Super Test"
  298. assert_failure $E_INVALID
  299. assert_output --partial 'Error: invalid user format'
  300. }
  301. @test "User: Add new user Failed 2" {
  302. run v-add-user 'ëaap' $user [email protected] default "Super Test"
  303. assert_failure $E_INVALID
  304. assert_output --partial 'Error: invalid user format'
  305. }
  306. @test "User: Add new user Failed 3" {
  307. run v-add-user 'jaaẞ' $user [email protected] default "Super Test"
  308. assert_failure $E_INVALID
  309. assert_output --partial 'Error: invalid user format'
  310. }
  311. @test "User: Add new user Failed 4" {
  312. run v-add-user '1234' $user [email protected] default "Super Test"
  313. assert_failure $E_INVALID
  314. assert_output --partial 'Error: invalid user format'
  315. }
  316. @test "User: Add new user Failed 5" {
  317. run v-add-user '1aap' $user [email protected] default "Super Test"
  318. assert_failure $E_INVALID
  319. assert_output --partial 'Error: invalid user format'
  320. }
  321. @test "User: Add new user Success 1" {
  322. run v-add-user 'jaap01' $user [email protected] default "Super Test"
  323. assert_success
  324. refute_output
  325. }
  326. @test "User: Add new user Success 1 Delete" {
  327. run v-delete-user jaap01
  328. assert_success
  329. refute_output
  330. }
  331. @test "User: Change user password" {
  332. run v-change-user-password "$user" "$userpass2"
  333. assert_success
  334. refute_output
  335. }
  336. @test "User: Change user email" {
  337. run v-change-user-contact "$user" [email protected]
  338. assert_success
  339. refute_output
  340. }
  341. @test "User: Change user contact invalid email " {
  342. run v-change-user-contact "$user" testerhestiacp.com
  343. assert_failure $E_INVALID
  344. assert_output --partial 'Error: invalid email format'
  345. }
  346. @test "User: Change user name" {
  347. run v-change-user-name "$user" "New name"
  348. assert_success
  349. refute_output
  350. }
  351. @test "User: Change user shell" {
  352. run v-change-user-shell $user bash no
  353. assert_success
  354. refute_output
  355. run stat -c '%U' /home/$user
  356. assert_output --partial "$user"
  357. mount_file=$(systemd-escape -p --suffix=mount "/srv/jail/$user/home")
  358. assert_file_not_exist /etc/systemd/system/$mount_file
  359. }
  360. @test "User: Change user invalid shell" {
  361. run v-change-user-shell $user bashinvalid no
  362. assert_failure $E_INVALID
  363. assert_output --partial 'shell bashinvalid is not valid'
  364. }
  365. @test "User: Change user nologin" {
  366. run v-change-user-shell $user nologin no
  367. assert_success
  368. refute_output
  369. run stat -c '%U' /home/$user
  370. assert_output --partial 'root'
  371. mount_file=$(systemd-escape -p --suffix=mount "/srv/jail/$user/home/$user")
  372. assert_file_exist /etc/systemd/system/$mount_file
  373. }
  374. @test "User: Change user bash with jail" {
  375. run v-change-user-shell $user bash yes
  376. assert_success
  377. refute_output
  378. run stat -c '%U' /home/$user
  379. assert_output --partial 'root'
  380. mount_file=$(systemd-escape -p --suffix=mount "/srv/jail/$user/home/$user")
  381. assert_file_exist /etc/systemd/system/$mount_file
  382. }
  383. @test "User: Change user default ns" {
  384. run v-change-user-ns $user ns0.com ns1.com ns2.com ns3.com
  385. assert_success
  386. refute_output
  387. run v-list-user-ns "$user" plain
  388. assert_success
  389. assert_output --partial 'ns0.com'
  390. }
  391. @test "User: Change user language" {
  392. run v-change-user-language $user "nl"
  393. assert_success
  394. refute_output
  395. }
  396. @test "User: Change user language (Does not exists)" {
  397. run v-change-user-language $user "aa"
  398. assert_failure $E_NOTEXIST
  399. }
  400. @test "User: Change user sort order" {
  401. run v-change-user-sort-order $user "name"
  402. assert_success
  403. refute_output
  404. }
  405. @test "User: Change user theme" {
  406. run v-change-user-theme $user "flat"
  407. assert_success
  408. refute_output
  409. }
  410. @test "User: Change user theme (Does not exists)" {
  411. run v-change-user-theme $user "aa"
  412. assert_failure $E_NOTEXIST
  413. }
  414. @test "User: Change user login ip" {
  415. run v-change-user-config-value $user "LOGIN_USE_IPLIST" "1.2.3.4,1.2.3.5"
  416. assert_success
  417. refute_output
  418. }
  419. @test "User: Change user login ip (Failed)" {
  420. run v-change-user-config-value $user "LOGIN_USE_IPLIST" "'; echo 'jaap'; echo '"
  421. assert_failure $E_INVALID
  422. }
  423. @test "User: Add user notification" {
  424. run v-add-user-notification $user "Test message" "Message"
  425. assert_success
  426. refute_output
  427. }
  428. @test "User: Acknowledge user notification" {
  429. run v-acknowledge-user-notification $user 1
  430. assert_success
  431. refute_output
  432. }
  433. @test "User: List user notification" {
  434. run v-list-user-notifications $user csv
  435. assert_success
  436. assert_output --partial "1,\"Test message\",\"Message\",yes"
  437. }
  438. @test "User: Delete user notification" {
  439. run v-delete-user-notification admin 1
  440. assert_success
  441. refute_output
  442. }
  443. @test "User: Get User salt ipv4" {
  444. run v-get-user-salt $user 192.168.2.10
  445. assert_success
  446. }
  447. @test "User: Get User salt ipv4 invalid" {
  448. run v-get-user-salt $user 192.168.992.10
  449. assert_failure $E_INVALID
  450. }
  451. @test "User: Get User salt ipv6" {
  452. run v-get-user-salt $user "21DA:D3:0:2F3B:2AA:FF:FE28:9C5A"
  453. assert_success
  454. }
  455. @test "User: Get User salt ipv6 not exists" {
  456. run v-get-user-salt "notexists" "21DA:D3:0:2F3B:2AA:FF:FE28:9C5B"
  457. assert_failure $E_PASSWORD
  458. }
  459. @test "User: Get User salt ipv6 invalid" {
  460. run v-get-user-salt "$user" "21DA:D3:0:2F3B:ZZZ:FF:FE28:9C5B"
  461. assert_failure $E_INVALID
  462. }
  463. @test "User: Check user password" {
  464. run v-check-user-password $user "$userpass2" 192.168.2.10 'no'
  465. assert_success
  466. }
  467. @test "User: Check user password Incorrect password" {
  468. run v-check-user-password $user "$userpass1" 192.168.2.10 'no'
  469. assert_failure $E_PASSWORD
  470. }
  471. @test "User: Check user hash ipv4" {
  472. hash=$(v-check-user-password $user "$userpass2" 192.168.2.10 'yes');
  473. run v-check-user-hash $user $hash 192.168.2.10
  474. assert_success
  475. }
  476. @test "User: Check user hash ipv6" {
  477. hash=$(v-check-user-password $user "$userpass2" 21DA:D3:0:2F3B:2AA:FF:FE28:9C5A 'yes');
  478. run v-check-user-hash $user $hash 21DA:D3:0:2F3B:2AA:FF:FE28:9C5A
  479. assert_success
  480. }
  481. @test "User: Check user hash ipv6 incorrect" {
  482. run v-check-user-hash $user 'jafawefaweijawe' 21DA:D3:0:2F3B:2AA:FF:FE28:9C5A
  483. assert_failure $E_PASSWORD
  484. }
  485. #----------------------------------------------------------#
  486. # Cron #
  487. #----------------------------------------------------------#
  488. @test "Cron: Add cron job" {
  489. run v-add-cron-job $user 1 1 1 1 1 echo
  490. assert_success
  491. refute_output
  492. }
  493. @test "Cron: Suspend cron job" {
  494. run v-suspend-cron-job $user 1
  495. assert_success
  496. refute_output
  497. }
  498. @test "Cron: Unsuspend cron job" {
  499. run v-unsuspend-cron-job $user 1
  500. assert_success
  501. refute_output
  502. }
  503. @test "Cron: Delete cron job" {
  504. run v-delete-cron-job $user 1
  505. assert_success
  506. refute_output
  507. }
  508. @test "Cron: Add cron job (duplicate)" {
  509. run v-add-cron-job $user 1 1 1 1 1 echo 1
  510. assert_success
  511. refute_output
  512. run v-add-cron-job $user 1 1 1 1 1 echo 1
  513. assert_failure $E_EXISTS
  514. assert_output --partial 'JOB=1 already exists'
  515. }
  516. @test "Cron: Second cron job" {
  517. run v-add-cron-job $user 2 2 2 2 2 echo 2
  518. assert_success
  519. refute_output
  520. }
  521. @test "Cron: Two cron jobs must be listed" {
  522. run v-list-cron-jobs $user csv
  523. assert_success
  524. assert_line --partial '1,1,1,1,1,"echo",no'
  525. assert_line --partial '2,2,2,2,2,"echo",no'
  526. }
  527. @test "Cron: rebuild" {
  528. run v-rebuild-cron-jobs $user
  529. assert_success
  530. refute_output
  531. }
  532. #----------------------------------------------------------#
  533. # IP #
  534. #----------------------------------------------------------#
  535. @test "Ip: Add new ip on first interface" {
  536. interface=$(v-list-sys-interfaces plain | head -n 1)
  537. run ip link show dev $interface
  538. assert_success
  539. local a2_rpaf="/etc/$WEB_SYSTEM/mods-enabled/rpaf.conf"
  540. local a2_remoteip="/etc/$WEB_SYSTEM/mods-enabled/remoteip.conf"
  541. # Save initial state
  542. echo "interface=${interface}" >> /tmp/hestia-test-env.sh
  543. [ -f "$a2_rpaf" ] && file_hash1=$(cat $a2_rpaf |md5sum |cut -d" " -f1) && echo "a2_rpaf_hash='${file_hash1}'" >> /tmp/hestia-test-env.sh
  544. [ -f "$a2_remoteip" ] && file_hash2=$(cat $a2_remoteip |md5sum |cut -d" " -f1) && echo "a2_remoteip_hash='${file_hash2}'" >> /tmp/hestia-test-env.sh
  545. local ip="198.18.0.12"
  546. run v-add-sys-ip $ip 255.255.255.255 $interface $user
  547. assert_success
  548. refute_output
  549. assert_file_exist /etc/$WEB_SYSTEM/conf.d/$ip.conf
  550. assert_file_exist $HESTIA/data/ips/$ip
  551. assert_file_contains $HESTIA/data/ips/$ip "OWNER='$user'"
  552. assert_file_contains $HESTIA/data/ips/$ip "INTERFACE='$interface'"
  553. if [ -n "$PROXY_SYSTEM" ]; then
  554. assert_file_exist /etc/$PROXY_SYSTEM/conf.d/$ip.conf
  555. [ -f "$a2_rpaf" ] && assert_file_contains "$a2_rpaf" "RPAFproxy_ips.*$ip\b"
  556. [ -f "$a2_remoteip" ] && assert_file_contains "$a2_remoteip" "RemoteIPInternalProxy $ip\$"
  557. fi
  558. }
  559. @test "Ip: [Ubuntu] Netplan file updated" {
  560. # Skip if Debian
  561. if [ $(lsb_release -s -i) != "Ubuntu" ]; then
  562. skip
  563. fi
  564. # Test will fail if systemd (For example Proxmox) is used for setting ip addresses. How ever there is no "decent" way to check if Netplan is used except via the method used in v-add-sys-ip and there for breaking the reason to test this. How ever if the test used in v-add-sys-ip fails it still should check if it exists!
  565. assert_file_exist /etc/netplan/60-hestia.yaml
  566. # also check if file contains the newly added ip
  567. assert_file_contains /etc/netplan/60-hestia.yaml "$ip"
  568. }
  569. @test "Ip: [Debian] Netplan file updated" {
  570. # Skip with netplan
  571. if [ $(lsb_release -s -i) = "Ubuntu" ]; then
  572. skip
  573. fi
  574. assert_file_exist /etc/network/interfaces
  575. assert_file_contains /etc/network/interfaces "$ip"
  576. }
  577. @test "Ip: Add ip (duplicate)" {
  578. run v-add-sys-ip 198.18.0.12 255.255.255.255 $interface $user
  579. assert_failure $E_EXISTS
  580. }
  581. @test "Ip: Add extra ip" {
  582. local ip="198.18.0.121"
  583. run v-add-sys-ip $ip 255.255.255.255 $interface $user
  584. assert_success
  585. refute_output
  586. assert_file_exist /etc/$WEB_SYSTEM/conf.d/$ip.conf
  587. assert_file_exist $HESTIA/data/ips/$ip
  588. assert_file_contains $HESTIA/data/ips/$ip "OWNER='$user'"
  589. assert_file_contains $HESTIA/data/ips/$ip "INTERFACE='$interface'"
  590. if [ -n "$PROXY_SYSTEM" ]; then
  591. assert_file_exist /etc/$PROXY_SYSTEM/conf.d/$ip.conf
  592. local a2_rpaf="/etc/$WEB_SYSTEM/mods-enabled/rpaf.conf"
  593. [ -f "$a2_rpaf" ] && assert_file_contains "$a2_rpaf" "RPAFproxy_ips.*$ip\b"
  594. local a2_remoteip="/etc/$WEB_SYSTEM/mods-enabled/remoteip.conf"
  595. [ -f "$a2_remoteip" ] && assert_file_contains "$a2_remoteip" "RemoteIPInternalProxy $ip\$"
  596. fi
  597. }
  598. @test "Ip: Delete ip 198.18.0.12" {
  599. local ip="198.18.0.12"
  600. run v-delete-sys-ip $ip
  601. assert_success
  602. refute_output
  603. assert_file_not_exist /etc/$WEB_SYSTEM/conf.d/$ip.conf
  604. assert_file_not_exist $HESTIA/data/ips/$ip
  605. }
  606. @test "Ip: [Ubuntu] Netplan file changed" {
  607. # Skip if Debian
  608. if [ $(lsb_release -s -i) != "Ubuntu" ]; then
  609. skip
  610. fi
  611. ip="198.18.0.121"
  612. assert_file_exist /etc/netplan/60-hestia.yaml
  613. assert_file_contains /etc/netplan/60-hestia.yaml "$ip"
  614. }
  615. @test "Ip: Delete ip 198.18.0.121" {
  616. ip="198.18.0.121"
  617. run v-delete-sys-ip $ip
  618. assert_success
  619. refute_output
  620. assert_file_not_exist /etc/$WEB_SYSTEM/conf.d/$ip.conf
  621. assert_file_not_exist $HESTIA/data/ips/$ip
  622. if [ -n "$PROXY_SYSTEM" ]; then
  623. assert_file_not_exist /etc/$PROXY_SYSTEM/conf.d/$ip.conf
  624. fi
  625. # remoteip and rpaf config hashes must match the initial one
  626. if [ ! -z "$a2_rpaf_hash" ]; then
  627. local a2_rpaf="/etc/$WEB_SYSTEM/mods-enabled/rpaf.conf"
  628. file_hash=$(cat $a2_rpaf |md5sum |cut -d" " -f1)
  629. assert_equal "$file_hash" "$a2_rpaf_hash"
  630. fi
  631. if [ ! -z "$a2_remoteip_hash" ]; then
  632. local a2_remoteip="/etc/$WEB_SYSTEM/mods-enabled/remoteip.conf"
  633. file_hash=$(cat $a2_remoteip |md5sum |cut -d" " -f1)
  634. assert_equal "$file_hash" "$a2_remoteip_hash"
  635. fi
  636. }
  637. @test "Ip: Add IP for rest of the test" {
  638. local ip="198.18.0.125"
  639. run v-add-sys-ip $ip 255.255.255.255 $interface $user
  640. assert_success
  641. refute_output
  642. assert_file_exist /etc/$WEB_SYSTEM/conf.d/$ip.conf
  643. assert_file_exist $HESTIA/data/ips/$ip
  644. assert_file_contains $HESTIA/data/ips/$ip "OWNER='$user'"
  645. assert_file_contains $HESTIA/data/ips/$ip "INTERFACE='$interface'"
  646. if [ -n "$PROXY_SYSTEM" ]; then
  647. assert_file_exist /etc/$PROXY_SYSTEM/conf.d/$ip.conf
  648. local a2_rpaf="/etc/$WEB_SYSTEM/mods-enabled/rpaf.conf"
  649. [ -f "$a2_rpaf" ] && assert_file_contains "$a2_rpaf" "RPAFproxy_ips.*$ip\b"
  650. local a2_remoteip="/etc/$WEB_SYSTEM/mods-enabled/remoteip.conf"
  651. [ -f "$a2_remoteip" ] && assert_file_contains "$a2_remoteip" "RemoteIPInternalProxy $ip\$"
  652. fi
  653. }
  654. #----------------------------------------------------------#
  655. # WEB #
  656. #----------------------------------------------------------#
  657. @test "WEB: Add web domain" {
  658. run v-add-web-domain $user $domain 198.18.0.125
  659. assert_success
  660. refute_output
  661. echo -e "<?php\necho 'Hestia Test:'.(4*3);" > $HOMEDIR/$user/web/$domain/public_html/php-test.php
  662. validate_web_domain $user $domain 'Hestia Test:12' 'php-test.php'
  663. rm $HOMEDIR/$user/web/$domain/public_html/php-test.php
  664. }
  665. @test "WEB: Add web domain (duplicate)" {
  666. run v-add-web-domain $user $domain 198.18.0.125
  667. assert_failure $E_EXISTS
  668. }
  669. @test "WEB: Add web domain alias" {
  670. run v-add-web-domain-alias $user $domain v3.$domain
  671. assert_success
  672. refute_output
  673. }
  674. @test "WEB: Add web domain alias (duplicate)" {
  675. run v-add-web-domain-alias $user $domain v3.$domain
  676. assert_failure $E_EXISTS
  677. }
  678. @test "WEB: Add web domain wildcard alias" {
  679. run v-add-web-domain-alias $user $domain "*.$domain"
  680. assert_success
  681. refute_output
  682. }
  683. @test "WEB: Delete web domain wildcard alias" {
  684. run v-delete-web-domain-alias $user $domain "*.$domain"
  685. assert_success
  686. refute_output
  687. }
  688. @test "WEB: Add web domain stats" {
  689. run v-add-web-domain-stats $user $domain awstats
  690. assert_success
  691. refute_output
  692. }
  693. @test "WEB: Add web domain stats user" {
  694. skip
  695. run v-add-web-domain-stats-user $user $domain test m3g4p4ssw0rd
  696. assert_success
  697. refute_output
  698. }
  699. @test "WEB: Suspend web domain" {
  700. run v-suspend-web-domain $user $domain
  701. assert_success
  702. refute_output
  703. echo -e "<?php\necho 'Hestia Test:'.(4*3);" > $HOMEDIR/$user/web/$domain/public_html/php-test.php
  704. validate_web_domain $user $domain 'This site is currently suspended'
  705. validate_web_domain $user $domain 'This site is currently suspended' 'php-test.php'
  706. rm $HOMEDIR/$user/web/$domain/public_html/php-test.php
  707. }
  708. @test "WEB: Unsuspend web domain" {
  709. run v-unsuspend-web-domain $user $domain
  710. assert_success
  711. refute_output
  712. echo -e "<?php\necho 'Hestia Test:'.(4*3);" > $HOMEDIR/$user/web/$domain/public_html/php-test.php
  713. validate_web_domain $user $domain 'Hestia Test:12' 'php-test.php'
  714. rm $HOMEDIR/$user/web/$domain/public_html/php-test.php
  715. }
  716. @test "WEB: Add redirect to www.domain.com" {
  717. run v-add-web-domain-redirect $user $domain www.$domain 301
  718. assert_success
  719. refute_output
  720. run validate_headers_domain $user $domain "301"
  721. }
  722. @test "WEB: Delete redirect to www.domain.com" {
  723. run v-delete-web-domain-redirect $user $domain
  724. assert_success
  725. refute_output
  726. }
  727. @test "WEB: Enable Fast CGI Cache" {
  728. if [ "$WEB_SYSTEM" != "nginx" ]; then
  729. skip "FastCGI cache is not supported"
  730. fi
  731. run v-add-fastcgi-cache $user $domain '1m' yes
  732. assert_success
  733. refute_output
  734. echo -e "<?php\necho 'Hestia Test:'.(4*3);" > $HOMEDIR/$user/web/$domain/public_html/php-test.php
  735. run validate_headers_domain $user $domain "Miss"
  736. run validate_headers_domain $user $domain "Hit"
  737. rm $HOMEDIR/$user/web/$domain/public_html/php-test.php
  738. }
  739. @test "WEB: Disable Fast CGI Cache" {
  740. if [ "$WEB_SYSTEM" != "nginx" ]; then
  741. skip "FastCGI cache is not supported"
  742. fi
  743. run v-delete-fastcgi-cache $user $domain yes
  744. assert_success
  745. refute_output
  746. }
  747. @test "WEB: Generate Self signed certificate" {
  748. ssl=$(v-generate-ssl-cert "$domain" "info@$domain" US CA "Orange County" HestiaCP IT "mail.$domain" | tail -n1 | awk '{print $2}')
  749. echo $ssl;
  750. mv $ssl/$domain.crt /tmp/$domain.crt
  751. mv $ssl/$domain.key /tmp/$domain.key
  752. }
  753. @test "WEB: Add ssl" {
  754. # Use self signed certificates during last test
  755. run v-add-web-domain-ssl $user $domain /tmp
  756. assert_success
  757. refute_output
  758. }
  759. @test "WEB: Rebuild web domain" {
  760. run v-rebuild-web-domains $user
  761. assert_success
  762. refute_output
  763. }
  764. #----------------------------------------------------------#
  765. # IDN #
  766. #----------------------------------------------------------#
  767. @test "WEB: Add IDN domain UTF idn-tést.eu" {
  768. run v-add-web-domain $user idn-tést.eu 198.18.0.125
  769. assert_success
  770. refute_output
  771. echo -e "<?php\necho 'Hestia Test:'.(4*3);" > $HOMEDIR/$user/web/idn-tést.eu/public_html/php-test.php
  772. validate_web_domain $user idn-tést.eu 'Hestia Test:12' 'php-test.php'
  773. rm $HOMEDIR/$user/web/idn-tést.eu/public_html/php-test.php
  774. }
  775. @test "WEB: Add IDN domain ASCII idn-tést.eu" {
  776. # Expected to fail due to utf exists
  777. run v-add-web-domain $user "xn--idn-tst-fya.eu" 198.18.0.125
  778. assert_failure $E_EXISTS
  779. }
  780. @test "WEB: Generate Self signed certificate ASCII idn-tést.eu" {
  781. run v-generate-ssl-cert "xn--idn-tst-fya.eu" "[email protected]" US CA "Orange County" HestiaCP IT "mail.xn--idn-tst-fya.eu"
  782. assert_success
  783. }
  784. @test "WEB: Delete IDN domain idn-tést.eu" {
  785. run v-delete-web-domain $user idn-tést.eu
  786. assert_success
  787. refute_output
  788. }
  789. @test "WEB: Add IDN domain UTF bløst.рф" {
  790. run v-add-web-domain $user bløst.рф 198.18.0.125
  791. assert_success
  792. refute_output
  793. }
  794. @test "WEB: Generate Self signed certificate ASCII bløst.рф" {
  795. run v-generate-ssl-cert "xn--blst-hra.xn--p1ai" "[email protected]" US CA "Orange County" HestiaCP IT "mail.xn--blst-hra.xn--p1ai"
  796. assert_success
  797. }
  798. @test "WEB: Delete IDN domain bløst.рф" {
  799. run v-delete-web-domain $user bløst.рф
  800. assert_success
  801. refute_output
  802. }
  803. #----------------------------------------------------------#
  804. # MULTIPHP #
  805. #----------------------------------------------------------#
  806. @test "Multiphp: Default php Backend version" {
  807. def_phpver=$(multiphp_default_version)
  808. multi_domain="multiphp.${domain}"
  809. run v-add-web-domain $user $multi_domain 198.18.0.125
  810. assert_success
  811. refute_output
  812. echo -e "<?php\necho PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;" > "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  813. validate_web_domain $user $multi_domain "$def_phpver" 'php-test.php'
  814. rm "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  815. }
  816. @test "Multiphp: Change backend version - PHP v5.6" {
  817. test_phpver='5.6'
  818. multi_domain="multiphp.${domain}"
  819. if [ ! -d "/etc/php/${test_phpver}/fpm/pool.d/" ]; then
  820. skip "PHP ${test_phpver} not installed"
  821. fi
  822. run v-change-web-domain-backend-tpl $user $multi_domain 'PHP-5_6' 'yes'
  823. assert_success
  824. refute_output
  825. # Changing web backend will create a php-fpm pool config in the corresponding php folder
  826. assert_file_exist "/etc/php/${test_phpver}/fpm/pool.d/${multi_domain}.conf"
  827. # A single php-fpm pool config file must be present
  828. num_fpm_config_files="$(find -L /etc/php/ -name "${multi_domain}.conf" | wc -l)"
  829. assert_equal "$num_fpm_config_files" '1'
  830. echo -e "<?php\necho 'hestia-multiphptest:'.PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;" > "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  831. validate_web_domain $user $multi_domain "hestia-multiphptest:$test_phpver" 'php-test.php'
  832. rm "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  833. }
  834. @test "Multiphp: Change backend version - PHP v7.0" {
  835. test_phpver='7.0'
  836. multi_domain="multiphp.${domain}"
  837. if [ ! -d "/etc/php/${test_phpver}/fpm/pool.d/" ]; then
  838. skip "PHP ${test_phpver} not installed"
  839. fi
  840. run v-change-web-domain-backend-tpl $user $multi_domain 'PHP-7_0' 'yes'
  841. assert_success
  842. refute_output
  843. # Changing web backend will create a php-fpm pool config in the corresponding php folder
  844. assert_file_exist "/etc/php/${test_phpver}/fpm/pool.d/${multi_domain}.conf"
  845. # A single php-fpm pool config file must be present
  846. num_fpm_config_files="$(find -L /etc/php/ -name "${multi_domain}.conf" | wc -l)"
  847. assert_equal "$num_fpm_config_files" '1'
  848. echo -e "<?php\necho 'hestia-multiphptest:'.PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;" > "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  849. validate_web_domain $user $multi_domain "hestia-multiphptest:$test_phpver" 'php-test.php'
  850. rm "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  851. }
  852. @test "Multiphp: Change backend version - PHP v7.1" {
  853. test_phpver='7.1'
  854. multi_domain="multiphp.${domain}"
  855. if [ ! -d "/etc/php/${test_phpver}/fpm/pool.d/" ]; then
  856. skip "PHP ${test_phpver} not installed"
  857. fi
  858. run v-change-web-domain-backend-tpl $user $multi_domain 'PHP-7_1' 'yes'
  859. assert_success
  860. refute_output
  861. # Changing web backend will create a php-fpm pool config in the corresponding php folder
  862. assert_file_exist "/etc/php/${test_phpver}/fpm/pool.d/${multi_domain}.conf"
  863. # A single php-fpm pool config file must be present
  864. num_fpm_config_files="$(find -L /etc/php/ -name "${multi_domain}.conf" | wc -l)"
  865. assert_equal "$num_fpm_config_files" '1'
  866. echo -e "<?php\necho 'hestia-multiphptest:'.PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;" > "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  867. validate_web_domain $user $multi_domain "hestia-multiphptest:$test_phpver" 'php-test.php'
  868. rm "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  869. }
  870. @test "Multiphp: Change backend version - PHP v7.2" {
  871. test_phpver='7.2'
  872. multi_domain="multiphp.${domain}"
  873. if [ ! -d "/etc/php/${test_phpver}/fpm/pool.d/" ]; then
  874. skip "PHP ${test_phpver} not installed"
  875. fi
  876. run v-change-web-domain-backend-tpl $user $multi_domain 'PHP-7_2' 'yes'
  877. assert_success
  878. refute_output
  879. # Changing web backend will create a php-fpm pool config in the corresponding php folder
  880. assert_file_exist "/etc/php/${test_phpver}/fpm/pool.d/${multi_domain}.conf"
  881. # A single php-fpm pool config file must be present
  882. num_fpm_config_files="$(find -L /etc/php/ -name "${multi_domain}.conf" | wc -l)"
  883. assert_equal "$num_fpm_config_files" '1'
  884. echo -e "<?php\necho 'hestia-multiphptest:'.PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;" > "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  885. validate_web_domain $user $multi_domain "hestia-multiphptest:$test_phpver" 'php-test.php'
  886. rm "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  887. }
  888. @test "Multiphp: Change backend version - PHP v7.3" {
  889. test_phpver='7.3'
  890. multi_domain="multiphp.${domain}"
  891. if [ ! -d "/etc/php/${test_phpver}/fpm/pool.d/" ]; then
  892. skip "PHP ${test_phpver} not installed"
  893. fi
  894. run v-change-web-domain-backend-tpl $user $multi_domain 'PHP-7_3' 'yes'
  895. assert_success
  896. refute_output
  897. # Changing web backend will create a php-fpm pool config in the corresponding php folder
  898. assert_file_exist "/etc/php/${test_phpver}/fpm/pool.d/${multi_domain}.conf"
  899. # A single php-fpm pool config file must be present
  900. num_fpm_config_files="$(find -L /etc/php/ -name "${multi_domain}.conf" | wc -l)"
  901. assert_equal "$num_fpm_config_files" '1'
  902. echo -e "<?php\necho 'hestia-multiphptest:'.PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;" > "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  903. validate_web_domain $user $multi_domain "hestia-multiphptest:$test_phpver" 'php-test.php'
  904. rm "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  905. }
  906. @test "Multiphp: Change backend version - PHP v7.4" {
  907. test_phpver='7.4'
  908. multi_domain="multiphp.${domain}"
  909. if [ ! -d "/etc/php/${test_phpver}/fpm/pool.d/" ]; then
  910. skip "PHP ${test_phpver} not installed"
  911. fi
  912. run v-change-web-domain-backend-tpl $user $multi_domain 'PHP-7_4' 'yes'
  913. assert_success
  914. refute_output
  915. # Changing web backend will create a php-fpm pool config in the corresponding php folder
  916. assert_file_exist "/etc/php/${test_phpver}/fpm/pool.d/${multi_domain}.conf"
  917. # A single php-fpm pool config file must be present
  918. num_fpm_config_files="$(find -L /etc/php/ -name "${multi_domain}.conf" | wc -l)"
  919. assert_equal "$num_fpm_config_files" '1'
  920. echo -e "<?php\necho 'hestia-multiphptest:'.PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;" > "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  921. validate_web_domain $user $multi_domain "hestia-multiphptest:$test_phpver" 'php-test.php'
  922. rm "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  923. }
  924. @test "Multiphp: Change backend version - PHP v8.0" {
  925. test_phpver='8.0'
  926. multi_domain="multiphp.${domain}"
  927. if [ ! -d "/etc/php/${test_phpver}/fpm/pool.d/" ]; then
  928. skip "PHP ${test_phpver} not installed"
  929. fi
  930. run v-change-web-domain-backend-tpl $user $multi_domain 'PHP-8_0' 'yes'
  931. assert_success
  932. refute_output
  933. # Changing web backend will create a php-fpm pool config in the corresponding php folder
  934. assert_file_exist "/etc/php/${test_phpver}/fpm/pool.d/${multi_domain}.conf"
  935. # A single php-fpm pool config file must be present
  936. num_fpm_config_files="$(find -L /etc/php/ -name "${multi_domain}.conf" | wc -l)"
  937. assert_equal "$num_fpm_config_files" '1'
  938. echo -e "<?php\necho 'hestia-multiphptest:'.PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;" > "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  939. validate_web_domain $user $multi_domain "hestia-multiphptest:$test_phpver" 'php-test.php'
  940. rm $HOMEDIR/$user/web/$multi_domain/public_html/php-test.php
  941. }
  942. @test "Multiphp: Change backend version - PHP v8.1" {
  943. test_phpver='8.1'
  944. multi_domain="multiphp.${domain}"
  945. if [ ! -d "/etc/php/${test_phpver}/fpm/pool.d/" ]; then
  946. skip "PHP ${test_phpver} not installed"
  947. fi
  948. run v-change-web-domain-backend-tpl $user $multi_domain 'PHP-8_1' 'yes'
  949. assert_success
  950. refute_output
  951. # Changing web backend will create a php-fpm pool config in the corresponding php folder
  952. assert_file_exist "/etc/php/${test_phpver}/fpm/pool.d/${multi_domain}.conf"
  953. # A single php-fpm pool config file must be present
  954. num_fpm_config_files="$(find -L /etc/php/ -name "${multi_domain}.conf" | wc -l)"
  955. assert_equal "$num_fpm_config_files" '1'
  956. echo -e "<?php\necho 'hestia-multiphptest:'.PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;" > "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  957. validate_web_domain $user $multi_domain "hestia-multiphptest:$test_phpver" 'php-test.php'
  958. rm $HOMEDIR/$user/web/$multi_domain/public_html/php-test.php
  959. }
  960. @test "Multiphp: Change backend version - PHP v8.2" {
  961. test_phpver='8.2'
  962. multi_domain="multiphp.${domain}"
  963. if [ ! -d "/etc/php/${test_phpver}/fpm/pool.d/" ]; then
  964. skip "PHP ${test_phpver} not installed"
  965. fi
  966. run v-change-web-domain-backend-tpl $user $multi_domain 'PHP-8_2' 'yes'
  967. assert_success
  968. refute_output
  969. # Changing web backend will create a php-fpm pool config in the corresponding php folder
  970. assert_file_exist "/etc/php/${test_phpver}/fpm/pool.d/${multi_domain}.conf"
  971. # A single php-fpm pool config file must be present
  972. num_fpm_config_files="$(find -L /etc/php/ -name "${multi_domain}.conf" | wc -l)"
  973. assert_equal "$num_fpm_config_files" '1'
  974. echo -e "<?php\necho 'hestia-multiphptest:'.PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;" > "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  975. validate_web_domain $user $multi_domain "hestia-multiphptest:$test_phpver" 'php-test.php'
  976. rm $HOMEDIR/$user/web/$multi_domain/public_html/php-test.php
  977. }
  978. @test "Multiphp: Cleanup" {
  979. multi_domain="multiphp.${domain}"
  980. run v-delete-web-domain $user $multi_domain 'yes'
  981. assert_success
  982. refute_output
  983. # No php-fpm pool config file must be present
  984. num_fpm_config_files="$(find -L /etc/php/ -name "${multi_domain}.conf" | wc -l)"
  985. assert_equal "$num_fpm_config_files" '0'
  986. }
  987. #----------------------------------------------------------#
  988. # CUSTOM DOCROOT #
  989. #----------------------------------------------------------#
  990. @test "Docroot: Self Subfolder" {
  991. docroot1_domain="docroot1.${domain}"
  992. run v-add-web-domain $user $docroot1_domain 198.18.0.125
  993. assert_success
  994. refute_output
  995. run v-add-fs-directory $user "$HOMEDIR/$user/web/$docroot1_domain/public_html/public/"
  996. assert_success
  997. refute_output
  998. run v-change-web-domain-docroot $user "$docroot1_domain" "$docroot1_domain" "/public"
  999. assert_success
  1000. refute_output
  1001. echo -e '<?php\necho "self-sub-".$_SERVER["HTTP_HOST"];' > "$HOMEDIR/$user/web/$docroot1_domain/public_html/public/php-test.php"
  1002. validate_web_domain $user $docroot1_domain "self-sub-${docroot1_domain}" 'php-test.php'
  1003. rm "$HOMEDIR/$user/web/$docroot1_domain/public_html/public/php-test.php"
  1004. }
  1005. @test "Docroot: Other domain subfolder" {
  1006. docroot1_domain="docroot1.${domain}"
  1007. docroot2_domain="docroot2.${domain}"
  1008. run v-add-web-domain $user $docroot2_domain 198.18.0.125
  1009. assert_success
  1010. refute_output
  1011. run v-add-fs-directory $user "$HOMEDIR/$user/web/$docroot2_domain/public_html/public/"
  1012. assert_success
  1013. refute_output
  1014. run v-change-web-domain-docroot $user "$docroot1_domain" "$docroot2_domain" "/public"
  1015. assert_success
  1016. refute_output
  1017. echo -e '<?php\necho "doc2-sub-".$_SERVER["HTTP_HOST"];' > "$HOMEDIR/$user/web/$docroot2_domain/public_html/public/php-test.php"
  1018. validate_web_domain $user $docroot1_domain "doc2-sub-${docroot1_domain}" 'php-test.php'
  1019. rm "$HOMEDIR/$user/web/$docroot2_domain/public_html/public/php-test.php"
  1020. }
  1021. @test "Docroot: Other domain root folder" {
  1022. docroot1_domain="docroot1.${domain}"
  1023. docroot2_domain="docroot2.${domain}"
  1024. run v-change-web-domain-docroot $user "$docroot1_domain" "$docroot2_domain"
  1025. assert_success
  1026. refute_output
  1027. echo -e '<?php\necho "doc2-root-".$_SERVER["HTTP_HOST"];' > "$HOMEDIR/$user/web/$docroot2_domain/public_html/php-test.php"
  1028. validate_web_domain $user $docroot1_domain "doc2-root-${docroot1_domain}" 'php-test.php'
  1029. rm "$HOMEDIR/$user/web/$docroot2_domain/public_html/php-test.php"
  1030. }
  1031. @test "Docroot: Reset" {
  1032. docroot1_domain="docroot1.${domain}"
  1033. run v-change-web-domain-docroot $user "$docroot1_domain" "default"
  1034. assert_success
  1035. refute_output
  1036. echo -e '<?php\necho "doc1-root-".$_SERVER["HTTP_HOST"];' > "$HOMEDIR/$user/web/$docroot1_domain/public_html/php-test.php"
  1037. validate_web_domain $user $docroot1_domain "doc1-root-${docroot1_domain}" 'php-test.php'
  1038. rm "$HOMEDIR/$user/web/$docroot1_domain/public_html/php-test.php"
  1039. }
  1040. @test "Docroot: Cleanup" {
  1041. docroot1_domain="docroot1.${domain}"
  1042. docroot2_domain="docroot2.${domain}"
  1043. run v-delete-web-domain $user $docroot1_domain
  1044. assert_success
  1045. refute_output
  1046. run v-delete-web-domain $user $docroot2_domain
  1047. assert_success
  1048. refute_output
  1049. }
  1050. #----------------------------------------------------------#
  1051. # DNS #
  1052. #----------------------------------------------------------#
  1053. @test "DNS: Add domain" {
  1054. run v-add-dns-domain $user $domain 198.18.0.125
  1055. assert_success
  1056. refute_output
  1057. }
  1058. @test "DNS: Add domain (duplicate)" {
  1059. run v-add-dns-domain $user $domain 198.18.0.125
  1060. assert_failure $E_EXISTS
  1061. }
  1062. @test "DNS: Add domain record" {
  1063. run v-add-dns-record $user $domain test A 198.18.0.125 '' 20
  1064. assert_success
  1065. refute_output
  1066. }
  1067. @test "DNS: Add domain record *.domain.com" {
  1068. run v-add-dns-record $user $domain '*' A 198.18.0.125 '' 30
  1069. assert_success
  1070. refute_output
  1071. }
  1072. @test "DNS: Add domain record *.domain.com with ID 0" {
  1073. run v-add-dns-record $user $domain '*' A 198.18.0.125 '' 0
  1074. assert_failure $E_INVALID
  1075. }
  1076. @test "DNS: Change DNS record" {
  1077. run v-change-dns-record $user $domain 20 test A 198.18.0.125 "" "" 1500
  1078. assert_success
  1079. refute_output
  1080. }
  1081. @test "DNS: Change DNS record (no update)" {
  1082. run v-change-dns-record $user $domain 20 test A 198.18.0.125 "" "" 1500
  1083. assert_failure $E_EXSIST
  1084. }
  1085. @test "DNS: Change DNS record id" {
  1086. run v-change-dns-record-id $user $domain 20 21
  1087. assert_success
  1088. refute_output
  1089. # Change back
  1090. run v-change-dns-record-id $user $domain 21 20
  1091. }
  1092. @test "DNS: Change DNS record id (no update)" {
  1093. run v-change-dns-record-id $user $domain 20 20
  1094. assert_failure $E_EXSIST
  1095. }
  1096. @test "DNS: Delete domain record" {
  1097. run v-delete-dns-record $user $domain 20
  1098. assert_success
  1099. refute_output
  1100. }
  1101. @test "DNS: Delete missing domain record" {
  1102. run v-delete-dns-record $user $domain 20
  1103. assert_failure $E_NOTEXIST
  1104. }
  1105. @test "DNS: Change domain expire date" {
  1106. run v-change-dns-domain-exp $user $domain 2020-01-01
  1107. assert_success
  1108. refute_output
  1109. }
  1110. @test "DNS: Add domain record MX" {
  1111. run v-add-dns-record $user $domain '@' MX mx.hestiacp.com '' 50
  1112. assert_success
  1113. refute_output
  1114. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "mx.hestiacp.com."
  1115. run v-change-dns-record $user $domain 50 '@' MX mx.hestia.com
  1116. assert_success
  1117. refute_output
  1118. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "mx.hestia.com."
  1119. run v-delete-dns-record $user $domain 50
  1120. assert_success
  1121. refute_output
  1122. }
  1123. @test "DNS: Add domain record NS" {
  1124. run v-delete-dns-record $user $domain 50
  1125. run v-add-dns-record $user $domain '@' NS mx.hestiacp.com '' 50
  1126. assert_success
  1127. refute_output
  1128. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "mx.hestiacp.com."
  1129. run v-change-dns-record $user $domain 50 '@' NS mx.hestia.com
  1130. assert_success
  1131. refute_output
  1132. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "mx.hestia.com."
  1133. run v-delete-dns-record $user $domain 50
  1134. assert_success
  1135. refute_output
  1136. }
  1137. @test "DNS: Add domain record SRV" {
  1138. run v-delete-dns-record $user $domain 50
  1139. run v-add-dns-record $user $domain '_test_domain' SRV mx.hestiacp.com '' 50
  1140. assert_success
  1141. refute_output
  1142. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "mx.hestiacp.com."
  1143. run v-change-dns-record $user $domain 50 '_test.domain' SRV mx.hestia.com
  1144. assert_success
  1145. refute_output
  1146. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "mx.hestia.com."
  1147. run v-delete-dns-record $user $domain 50
  1148. assert_success
  1149. refute_output
  1150. }
  1151. @test "DNS: Add domain record CNAME" {
  1152. run v-delete-dns-record $user $domain 50
  1153. run v-add-dns-record $user $domain 'mail' CNAME mx.hestiacp.com '' 50
  1154. assert_success
  1155. refute_output
  1156. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "mx.hestiacp.com."
  1157. run v-change-dns-record $user $domain 50 'mail' CNAME mx.hestia.com
  1158. assert_success
  1159. refute_output
  1160. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "mx.hestia.com."
  1161. run v-delete-dns-record $user $domain 50
  1162. assert_success
  1163. refute_output
  1164. }
  1165. @test "DNS: Check txt dns records type1" {
  1166. [ -z "$DNS_SYSTEM" ] && skip
  1167. run v-delete-dns-record $user $domain 50
  1168. record1_in='v=DMARC1; p=quarantine; pct=100'
  1169. record2_in='v=DMARC1; p=quarantine; pct=90'
  1170. record1_out='"v=DMARC1; p=quarantine; pct=100"'
  1171. record2_in='"v=DMARC1; p=quarantine; pct=90"'
  1172. # Test Create
  1173. run v-add-dns-record $user $domain 'test-long-txt' 'TXT' "$record1_in" '' 50
  1174. assert_success
  1175. refute_output
  1176. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "$record1_out"
  1177. # Test Edit
  1178. run v-change-dns-record $user $domain 50 'test-long-txt' 'TXT' "$record2_in"
  1179. assert_success
  1180. refute_output
  1181. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "$record2_out"
  1182. # Test Cleanup
  1183. run v-delete-dns-record $user $domain 50
  1184. assert_success
  1185. refute_output
  1186. }
  1187. @test "DNS: Check txt dns records type2" {
  1188. [ -z "$DNS_SYSTEM" ] && skip
  1189. run v-delete-dns-record $user $domain 50
  1190. record3_in='k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4+VEVsoTbl6tYLJlhozqAGju3IgpSVdBAS5LMyzpHP8/L0/PlyVRJnm2xECjVk3DRqCmelyIvmraw1VtFz2aH6DRlDhHsZghj1DmGhwN+7NkwIb4hEvmytMVAz1WyiLH6Rm6Iemm/ZCt1RhrAMUYLxHA9mJgky76YCcf8/cX35xC+1vd4a5U6YofAZeVP9DBvVgQ8ung4gVrOrQrXkU8QfVNAoXz5pfJo74GB7woIBFhZXsU6SKho7KnzT5inVCIOtWp7L5hyEnbySWQPHT2vAMCCAe2AY/Vv0N3HW14o8P3b4A6OU920wFB2kA7pkQNzO5OwH+HSttwG0PaIiQxYQIDAQAB'
  1191. record3_out='"k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4+VEVsoTbl6tYLJlhozqAGju3IgpSVdBAS5LMyzpHP8/L0/PlyVRJnm2xECjVk3DRqCmelyIvmraw1VtFz2aH6DRlDhHsZghj1DmGhwN+7NkwIb4hEvmytMVAz1WyiLH6Rm6Iemm/ZCt1RhrAMUYLxHA9mJgky76YCcf8/cX35xC+1vd4a5U6YofAZeVP9DBvVgQ8ung4g""VrOrQrXkU8QfVNAoXz5pfJo74GB7woIBFhZXsU6SKho7KnzT5inVCIOtWp7L5hyEnbySWQPHT2vAMCCAe2AY/Vv0N3HW14o8P3b4A6OU920wFB2kA7pkQNzO5OwH+HSttwG0PaIiQxYQIDAQAB"'
  1192. record4_in='k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4+VEVsoTbl6tYLJlhozqAGju3IgpSVdBAS5LMyzpHP8/L0/PlyVRJnm2xECjVk3DRqCmelyIvmraw1VtFz2aH6DRlDhHsZghj1DmGhwN+7NkwIb4hEvmytMVAz1WyiLH6Rm6Iemm/ZCt1RhrAMUYLxHA9mJgky76YCcf8/cX35xC+1vd4a5U6YofAZeVP9DBvVgQ8ung4gVrOrQrXkU8QfVNAoXz5pfJo74GB7woIBFhZXsU6SKho7KnzT5inVCIOtWp7L5hyEnbySWQPHT2vAMCCAe2AY/Vv0N3HW14o8P3b4A6OU920wFB2kA7pkQNzO5OwH+HSttwG0PaIiQxYQIDAQA4'
  1193. record4_out='"k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4+VEVsoTbl6tYLJlhozqAGju3IgpSVdBAS5LMyzpHP8/L0/PlyVRJnm2xECjVk3DRqCmelyIvmraw1VtFz2aH6DRlDhHsZghj1DmGhwN+7NkwIb4hEvmytMVAz1WyiLH6Rm6Iemm/ZCt1RhrAMUYLxHA9mJgky76YCcf8/cX35xC+1vd4a5U6YofAZeVP9DBvVgQ8ung4g""VrOrQrXkU8QfVNAoXz5pfJo74GB7woIBFhZXsU6SKho7KnzT5inVCIOtWp7L5hyEnbySWQPHT2vAMCCAe2AY/Vv0N3HW14o8P3b4A6OU920wFB2kA7pkQNzO5OwH+HSttwG0PaIiQxYQIDAQA4"'
  1194. # Test Create
  1195. run v-add-dns-record $user $domain 'test-long-txt' 'TXT' "$record3_in" '' 50
  1196. assert_success
  1197. refute_output
  1198. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "$record3_out"
  1199. # Test Edit
  1200. run v-change-dns-record $user $domain 50 'test-long-txt' 'TXT' "$record4_in"
  1201. assert_success
  1202. refute_output
  1203. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "$record4_out"
  1204. # Test Cleanup
  1205. run v-delete-dns-record $user $domain 50
  1206. assert_success
  1207. refute_output
  1208. }
  1209. @test "DNS: Change domain ip" {
  1210. run v-change-dns-domain-ip $user $domain 127.0.0.1
  1211. assert_success
  1212. refute_output
  1213. }
  1214. @test "DNS: Suspend domain" {
  1215. run v-suspend-dns-domain $user $domain
  1216. assert_success
  1217. refute_output
  1218. }
  1219. @test "DNS: Unsuspend domain" {
  1220. run v-unsuspend-dns-domain $user $domain
  1221. assert_success
  1222. refute_output
  1223. }
  1224. @test "DNS: Rebuild" {
  1225. run v-rebuild-dns-domains $user
  1226. assert_success
  1227. refute_output
  1228. }
  1229. #----------------------------------------------------------#
  1230. # MAIL #
  1231. #----------------------------------------------------------#
  1232. @test "MAIL: Add domain" {
  1233. run v-add-mail-domain $user $domain
  1234. assert_success
  1235. refute_output
  1236. validate_mail_domain $user $domain
  1237. }
  1238. @test "MAIL: Add mail domain webmail client (Roundcube)" {
  1239. run v-add-mail-domain-webmail $user $domain "roundcube" "yes"
  1240. assert_success
  1241. refute_output
  1242. # echo -e "<?php\necho 'Server: ' . \$_SERVER['SERVER_SOFTWARE'];" > /var/lib/roundcube/check_server.php
  1243. validate_webmail_domain $user $domain 'Welcome to Roundcube Webmail'
  1244. # rm /var/lib/roundcube/check_server.php
  1245. }
  1246. @test "Mail: Add SSL to mail domain" {
  1247. # Use generated certificates during WEB Generate Self signed certificate
  1248. run v-add-mail-domain-ssl $user $domain /tmp
  1249. assert_success
  1250. refute_output
  1251. validate_webmail_domain $user $domain 'Welcome to Roundcube Webmail'
  1252. }
  1253. @test "MAIL: Add mail domain webmail client (SnappyMail)" {
  1254. if [ -z "$(echo $WEBMAIL_SYSTEM | grep -w "snappymail")" ]; then
  1255. skip "Webmail client SnappyMail not installed"
  1256. fi
  1257. run v-add-mail-domain-webmail $user $domain "snappymail" "yes"
  1258. assert_success
  1259. refute_output
  1260. validate_mail_domain $user $domain
  1261. validate_webmail_domain $user $domain 'SnappyMail Webmail'
  1262. }
  1263. @test "MAIL: Disable webmail client" {
  1264. run v-add-mail-domain-webmail $user $domain "disabled" "yes"
  1265. assert_success
  1266. refute_output
  1267. validate_mail_domain $user $domain
  1268. validate_webmail_domain $user $domain 'Success!'
  1269. run v-add-mail-domain-webmail $user $domain "roundcube" "yes"
  1270. assert_success
  1271. refute_output
  1272. }
  1273. @test "MAIL: Add domain (duplicate)" {
  1274. run v-add-mail-domain $user $domain
  1275. assert_failure $E_EXISTS
  1276. }
  1277. @test "MAIL: Add account" {
  1278. run v-add-mail-account $user $domain test "$userpass2"
  1279. assert_success
  1280. assert_file_contains /etc/exim4/domains/$domain/limits "test@$domain"
  1281. refute_output
  1282. }
  1283. @test "MAIL: Add account (duplicate)" {
  1284. run v-add-mail-account $user $domain test "$userpass2"
  1285. assert_failure $E_EXISTS
  1286. }
  1287. @test "MAIL: Add account 2" {
  1288. run v-add-mail-account $user $domain random "$userpass2"
  1289. assert_success
  1290. assert_file_contains /etc/exim4/domains/$domain/limits "random@$domain"
  1291. refute_output
  1292. }
  1293. @test "MAIL: Add account alias" {
  1294. run v-add-mail-account-alias $user $domain test hestiacprocks
  1295. assert_success
  1296. assert_file_contains /etc/exim4/domains/$domain/aliases "hestiacprocks@$domain"
  1297. refute_output
  1298. }
  1299. @test "MAIL: Add account alias 2" {
  1300. run v-add-mail-account-alias $user $domain test hestiacprocks2
  1301. assert_success
  1302. assert_file_contains /etc/exim4/domains/$domain/aliases "hestiacprocks2@$domain"
  1303. refute_output
  1304. }
  1305. @test "MAIL: Add account alias 3" {
  1306. run v-add-mail-account-alias $user $domain test hestiacp
  1307. assert_success
  1308. assert_file_contains /etc/exim4/domains/$domain/aliases "hestiacp@$domain"
  1309. refute_output
  1310. }
  1311. @test "MAIL: Add account 3" {
  1312. run v-add-mail-account $user $domain hestia "$userpass2"
  1313. assert_success
  1314. assert_file_contains /etc/exim4/domains/$domain/limits "hestia@$domain"
  1315. refute_output
  1316. }
  1317. @test "MAIL: Add account 4" {
  1318. run v-add-mail-account $user $domain hestiarocks3 "$userpass2"
  1319. assert_success
  1320. assert_file_contains /etc/exim4/domains/$domain/limits "hestiarocks3@$domain"
  1321. refute_output
  1322. }
  1323. @test "MAIL: Add account 5" {
  1324. run v-add-mail-account $user $domain 01 "$userpass2"
  1325. assert_success
  1326. assert_file_contains /etc/exim4/domains/$domain/limits "01@$domain"
  1327. refute_output
  1328. }
  1329. @test "MAIL: Add account 6" {
  1330. run v-add-mail-account $user $domain "0aa" "$userpass2"
  1331. assert_success
  1332. assert_file_contains /etc/exim4/domains/$domain/limits "0aa@$domain"
  1333. refute_output
  1334. }
  1335. @test "MAIL: Add account alias Invalid length" {
  1336. run v-add-mail-account-alias $user $domain test 'hestiacp-realy-rocks-but-i-want-to-have-feature-xyz-and-i-want-it-now'
  1337. assert_failure $E_INVALID
  1338. }
  1339. @test "MAIL: Add account alias Invalid" {
  1340. run v-add-mail-account-alias $user $domain test '-test'
  1341. assert_failure $E_INVALID
  1342. }
  1343. @test "MAIL: Add account alias Invalid 2" {
  1344. run v-add-mail-account-alias $user $domain test 'hestia@test'
  1345. assert_failure $E_INVALID
  1346. }
  1347. @test "MAIL: Add account alias (duplicate)" {
  1348. run v-add-mail-account-alias $user $domain test hestiacprocks
  1349. assert_failure $E_EXISTS
  1350. }
  1351. @test "MAIL: change mail account password" {
  1352. run curl -k -X POST -d "email=test@$domain&password=$userpass2&new=123456" https://localhost:8083/reset/mail/
  1353. assert_success
  1354. assert_output --partial "==ok=="
  1355. }
  1356. @test "MAIL: change mail account password (Incorrect PW)" {
  1357. run curl -k -X POST -d "email=test@$domain&password=$userpass2&new=123456" https://localhost:8083/reset/mail/
  1358. assert_success
  1359. assert_output --partial "error"
  1360. }
  1361. @test "MAIL: Change rate limit" {
  1362. run v-change-mail-account-rate-limit $user $domain test 10
  1363. assert_file_contains /etc/exim4/domains/$domain/limits "test@$domain:10"
  1364. }
  1365. @test "MAIL: Delete account" {
  1366. run v-delete-mail-account $user $domain test
  1367. assert_success
  1368. refute_output
  1369. }
  1370. @test "MAIL: Delete missing account" {
  1371. run v-delete-mail-account $user $domain test
  1372. assert_failure $E_NOTEXIST
  1373. }
  1374. @test "MAIL: Rebuild mail domain" {
  1375. run v-rebuild-mail-domains $user
  1376. assert_success
  1377. refute_output
  1378. }
  1379. @test "MAIL: Delete DKIM" {
  1380. run v-delete-mail-domain-dkim $user $domain
  1381. assert_success
  1382. refute_output
  1383. run grep "RECORD='_domainkey'" "${HESTIA}/data/users/${user}/dns/${domain}.conf"
  1384. assert_failure
  1385. refute_output
  1386. run grep "RECORD='mail._domainkey'" "${HESTIA}/data/users/${user}/dns/${domain}.conf"
  1387. assert_failure
  1388. refute_output
  1389. }
  1390. @test "MAIL: Add DKIM" {
  1391. run v-add-mail-domain-dkim $user $domain
  1392. assert_success
  1393. refute_output
  1394. run grep "RECORD='_domainkey'" "${HESTIA}/data/users/${user}/dns/${domain}.conf"
  1395. assert_success
  1396. assert_output --partial "RECORD='_domainkey' TYPE='TXT'"
  1397. run grep "RECORD='mail._domainkey'" "${HESTIA}/data/users/${user}/dns/${domain}.conf"
  1398. assert_success
  1399. assert_output --partial "RECORD='mail._domainkey' TYPE='TXT'"
  1400. }
  1401. @test "MAIL: Delete DKIM but preserve custom dkim records" {
  1402. run v-add-dns-record $user $domain 'k2._domainkey' 'TXT' 'v=DKIM1; k=rsa; p=123456'
  1403. assert_success
  1404. refute_output
  1405. run v-delete-mail-domain-dkim $user $domain
  1406. assert_success
  1407. refute_output
  1408. run grep "RECORD='k2._domainkey'" "${HESTIA}/data/users/${user}/dns/${domain}.conf"
  1409. assert_success
  1410. assert_output --partial "RECORD='k2._domainkey' TYPE='TXT'"
  1411. }
  1412. #----------------------------------------------------------#
  1413. # Limit possibilities adding different owner domain #
  1414. #----------------------------------------------------------#
  1415. @test "Allow Users: User can't add user.user2.com " {
  1416. # Case: admin company.tld
  1417. # users should not be allowed to add user.company.tld
  1418. run v-add-user $user2 $user2 [email protected] default "Super Test"
  1419. assert_success
  1420. refute_output
  1421. run v-add-web-domain $user2 $rootdomain
  1422. assert_success
  1423. refute_output
  1424. run v-add-web-domain $user $subdomain
  1425. assert_failure $E_EXISTS
  1426. }
  1427. @test "Allow Users: User can't add user.user2.com as alias" {
  1428. run v-add-web-domain-alias $user $domain $subdomain
  1429. assert_failure $E_EXISTS
  1430. }
  1431. @test "Allow Users: User can't add user.user2.com as mail domain" {
  1432. run v-add-mail-domain $user $subdomain
  1433. assert_failure $E_EXISTS
  1434. }
  1435. @test "Allow Users: User can't add user.user2.com as dns domain" {
  1436. run v-add-dns-domain $user $subdomain 198.18.0.125
  1437. assert_failure $E_EXISTS
  1438. }
  1439. @test "Allow Users: Set Allow users" {
  1440. # Allow user to yes allows
  1441. # Case: admin company.tld
  1442. # users are allowed to add user.company.tld
  1443. run v-add-web-domain-allow-users $user2 $rootdomain
  1444. assert_success
  1445. refute_output
  1446. }
  1447. @test "Allow Users: User can add user.user2.com" {
  1448. run v-add-web-domain $user $subdomain
  1449. assert_success
  1450. refute_output
  1451. }
  1452. @test "Allow Users: User can add user.user2.com as alias" {
  1453. run v-delete-web-domain $user $subdomain
  1454. assert_success
  1455. refute_output
  1456. run v-add-web-domain-alias $user $domain $subdomain
  1457. assert_success
  1458. refute_output
  1459. }
  1460. @test "Allow Users: User can add user.user2.com as mail domain" {
  1461. run v-add-mail-domain $user $subdomain
  1462. assert_success
  1463. refute_output
  1464. }
  1465. @test "Allow Users: User can add user.user2.com as dns domain" {
  1466. run v-add-dns-domain $user $subdomain 198.18.0.125
  1467. assert_success
  1468. refute_output
  1469. }
  1470. @test "Allow Users: Cleanup tests" {
  1471. run v-delete-dns-domain $user $subdomain
  1472. assert_success
  1473. refute_output
  1474. run v-delete-mail-domain $user $subdomain
  1475. assert_success
  1476. refute_output
  1477. }
  1478. @test "Allow Users: Set Allow users no" {
  1479. run v-delete-web-domain-alias $user $domain $subdomain
  1480. assert_success
  1481. refute_output
  1482. run v-delete-web-domain-allow-users $user2 $rootdomain
  1483. assert_success
  1484. refute_output
  1485. }
  1486. @test "Allow Users: User can't add user.user2.com again" {
  1487. run v-add-web-domain $user $subdomain
  1488. assert_failure $E_EXISTS
  1489. }
  1490. @test "Allow Users: user2 can add user.user2.com again" {
  1491. run v-add-web-domain $user2 $subdomain
  1492. assert_success
  1493. refute_output
  1494. }
  1495. #----------------------------------------------------------#
  1496. # DB #
  1497. #----------------------------------------------------------#
  1498. @test "MYSQL: Add database" {
  1499. run v-add-database $user database dbuser 1234 mysql
  1500. assert_success
  1501. refute_output
  1502. # validate_database mysql database_name database_user password
  1503. validate_database mysql $database $dbuser 1234
  1504. }
  1505. @test "MYSQL: Add Database (Duplicate)" {
  1506. run v-add-database $user database dbuser 1234 mysql
  1507. assert_failure $E_EXISTS
  1508. }
  1509. @test "MYSQL: Rebuild Database" {
  1510. run v-rebuild-database $user $database
  1511. assert_success
  1512. refute_output
  1513. }
  1514. @test "MYSQL: Change database user password" {
  1515. run v-change-database-password $user $database 123456
  1516. assert_success
  1517. refute_output
  1518. validate_database mysql $database $dbuser 123456
  1519. }
  1520. @test "MYSQL: Change database user" {
  1521. run v-change-database-user $user $database database
  1522. assert_success
  1523. refute_output
  1524. validate_database mysql $database $database 123456
  1525. }
  1526. @test "MYSQL: Suspend database" {
  1527. run v-suspend-database $user $database
  1528. assert_success
  1529. refute_output
  1530. }
  1531. @test "MYSQL: Unsuspend database" {
  1532. run v-unsuspend-database $user $database
  1533. assert_success
  1534. refute_output
  1535. }
  1536. @test "MYSQL: Delete database" {
  1537. run v-delete-database $user $database
  1538. assert_success
  1539. refute_output
  1540. }
  1541. @test "MYSQL: Delete missing database" {
  1542. run v-delete-database $user $database
  1543. assert_failure $E_NOTEXIST
  1544. }
  1545. @test "PGSQL: Add database invalid user" {
  1546. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1547. skip "PostGreSQL is not installed"
  1548. fi
  1549. run v-add-database "$user" "database" "dbuser" "1234ABCD" "pgsql"
  1550. assert_failure $E_INVALID
  1551. }
  1552. @test "PGSQL: Add database" {
  1553. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1554. skip "PostGreSQL is not installed"
  1555. fi
  1556. run v-add-user $pguser $pguser [email protected] default "Super Test"
  1557. run v-add-database "$pguser" "database" "dbuser" "1234ABCD" "pgsql"
  1558. assert_success
  1559. refute_output
  1560. # validate_database pgsql $pgdatabase $pgdbuser "1234ABCD"
  1561. }
  1562. @test "PGSQL: Add Database (Duplicate)" {
  1563. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1564. skip "PostGreSQL is not installed"
  1565. fi
  1566. run v-add-database "$pguser" "database" "dbuser" "1234ABCD" "pgsql"
  1567. assert_failure $E_EXISTS
  1568. }
  1569. @test "PGSQL: Rebuild Database" {
  1570. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1571. skip "PostGreSQL is not installed"
  1572. fi
  1573. run v-rebuild-database $pguser $pgdatabase
  1574. assert_success
  1575. refute_output
  1576. }
  1577. @test "PGSQL: Change database user password" {
  1578. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1579. skip "PostGreSQL is not installed"
  1580. fi
  1581. run v-change-database-password $pguser $pgdatabase "123456"
  1582. assert_success
  1583. refute_output
  1584. # validate_database pgsql $pgdatabase $pgdbuser "123456"
  1585. }
  1586. @test "PGSQL: Suspend database" {
  1587. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1588. skip "PostGreSQL is not installed"
  1589. fi
  1590. run v-suspend-database $pguser $pgdatabase
  1591. assert_success
  1592. refute_output
  1593. }
  1594. @test "PGSQL: Unsuspend database" {
  1595. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1596. skip "PostGreSQL is not installed"
  1597. fi
  1598. run v-unsuspend-database $pguser $pgdatabase
  1599. assert_success
  1600. refute_output
  1601. }
  1602. @test "PGSQL: Change database user" {
  1603. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1604. skip "PostGreSQL is not installed"
  1605. fi
  1606. skip
  1607. run v-change-database-user $pguser $pgdatabase database
  1608. assert_success
  1609. refute_output
  1610. validate_database pgsql $pgdatabase $pgdatabase 123456
  1611. }
  1612. @test "PGSQL: Delete database" {
  1613. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1614. skip "PostGreSQL is not installed"
  1615. fi
  1616. run v-delete-database $pguser $pgdatabase
  1617. assert_success
  1618. refute_output
  1619. }
  1620. @test "PGSQL: Delete missing database" {
  1621. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1622. skip "PostGreSQL is not installed"
  1623. fi
  1624. run v-delete-database $pguser $pgdatabase
  1625. assert_failure $E_NOTEXIST
  1626. run v-delete-user $pguser
  1627. }
  1628. #----------------------------------------------------------#
  1629. # System #
  1630. #----------------------------------------------------------#
  1631. @test "System: Set/Enable SMTP account for internal mail" {
  1632. run v-add-sys-smtp $domain 587 STARTTLS info@$domain 1234-test noreply@$domain
  1633. assert_success
  1634. refute_output
  1635. }
  1636. @test "System: Disable SMTP account for internal mail" {
  1637. run v-delete-sys-smtp
  1638. assert_success
  1639. refute_output
  1640. }
  1641. @test "System: Set/Enable SMTP relay" {
  1642. run v-add-sys-smtp-relay $domain info@$domain 1234-test 587
  1643. assert_success
  1644. refute_output
  1645. assert_file_exist /etc/exim4/smtp_relay.conf
  1646. }
  1647. @test "System: Delete SMTP relay" {
  1648. run v-delete-sys-smtp-relay
  1649. assert_success
  1650. refute_output
  1651. assert_file_not_exist /etc/exim4/smtp_relay.conf
  1652. }
  1653. #----------------------------------------------------------#
  1654. # Firewall #
  1655. #----------------------------------------------------------#
  1656. @test "Firewall: Add ip to banlist" {
  1657. run v-add-firewall-ban '1.2.3.4' 'HESTIA'
  1658. assert_success
  1659. refute_output
  1660. check_ip_banned '1.2.3.4' 'HESTIA'
  1661. }
  1662. @test "Firewall: Delete ip to banlist" {
  1663. run v-delete-firewall-ban '1.2.3.4' 'HESTIA'
  1664. assert_success
  1665. refute_output
  1666. check_ip_not_banned '1.2.3.4' 'HESTIA'
  1667. }
  1668. @test "Firewall: Add ip to banlist for ALL" {
  1669. run v-add-firewall-ban '1.2.3.4' 'HESTIA'
  1670. assert_success
  1671. refute_output
  1672. run v-add-firewall-ban '1.2.3.4' 'MAIL'
  1673. assert_success
  1674. refute_output
  1675. check_ip_banned '1.2.3.4' 'HESTIA'
  1676. }
  1677. @test "Firewall: Delete ip to banlist CHAIN = ALL" {
  1678. run v-delete-firewall-ban '1.2.3.4' 'ALL'
  1679. assert_success
  1680. refute_output
  1681. check_ip_not_banned '1.2.3.4' 'HESTIA'
  1682. }
  1683. @test "Test Whitelist Fail2ban" {
  1684. echo "1.2.3.4" >> $HESTIA/data/firewall/excludes.conf
  1685. run v-add-firewall-ban '1.2.3.4' 'HESTIA'
  1686. rm $HESTIA/data/firewall/excludes.conf
  1687. check_ip_not_banned '1.2.3.4' 'HESTIA'
  1688. }
  1689. @test "Test create ipset" {
  1690. run v-add-firewall-ipset "country-nl" "https://raw.githubusercontent.com/ipverse/rir-ip/master/country/nl/ipv4-aggregated.txt" v4 yes
  1691. assert_success
  1692. refute_output
  1693. }
  1694. @test "Create firewall with Ipset" {
  1695. run v-add-firewall-rule 'DROP' 'ipset:country-nl' '8083,22' 'TCP' 'Test'
  1696. assert_success
  1697. refute_output
  1698. }
  1699. @test "List firewall rules" {
  1700. run v-list-firewall csv
  1701. assert_success
  1702. assert_line --partial '11,DROP,TCP,8083,22,ipset:country-nl'
  1703. }
  1704. @test "Delete firewall with Ipset" {
  1705. run v-delete-firewall-rule '11'
  1706. assert_success
  1707. refute_output
  1708. }
  1709. @test "Test delete ipset" {
  1710. run v-delete-firewall-ipset "country-nl"
  1711. assert_success
  1712. refute_output
  1713. }
  1714. #----------------------------------------------------------#
  1715. # PACKAGE #
  1716. #----------------------------------------------------------#
  1717. @test "Package: Create new Package" {
  1718. cp $HESTIA/data/packages/default.pkg /tmp/package
  1719. run v-add-user-package /tmp/package hestiatest
  1720. assert_success
  1721. refute_output
  1722. }
  1723. @test "Package: Assign user to new Package" {
  1724. run v-change-user-package $user hestiatest
  1725. assert_success
  1726. refute_output
  1727. }
  1728. @test "Package: Create new package (Duplicate)" {
  1729. sed -i "s/BANDWIDTH='unlimited'/BANDWIDTH='100'/g" /tmp/package
  1730. run v-add-user-package /tmp/package hestiatest
  1731. assert_failure $E_EXISTS
  1732. }
  1733. @test "Package: Update new Package" {
  1734. sed -i "s/BANDWIDTH='unlimited'/BANDWIDTH='100'/g" /tmp/package
  1735. run v-add-user-package /tmp/package hestiatest yes
  1736. assert_success
  1737. refute_output
  1738. }
  1739. @test "Package: Update package of user" {
  1740. run v-change-user-package $user hestiatest
  1741. assert_success
  1742. refute_output
  1743. run grep "BANDWIDTH='100'" $HESTIA/data/users/$user/user.conf
  1744. assert_success
  1745. assert_output --partial "100"
  1746. }
  1747. @test "Package: Copy package Not Exists" {
  1748. run v-copy-user-package hestiadoesnotexists hestiatest2
  1749. assert_failure $E_NOTEXIST
  1750. }
  1751. @test "Package: Copy package" {
  1752. run v-copy-user-package hestiatest hestiatest2
  1753. assert_success
  1754. refute_output
  1755. }
  1756. @test "Package: Copy package Exists" {
  1757. run v-copy-user-package hestiatest hestiatest2
  1758. assert_failure $E_EXISTS
  1759. }
  1760. @test "Package: Delete package" {
  1761. run v-delete-user-package hestiatest
  1762. run v-delete-user-package hestiatest2
  1763. rm /tmp/package
  1764. assert_success
  1765. refute_output
  1766. run grep "BANDWIDTH='unlimited'" $HESTIA/data/users/$user/user.conf
  1767. assert_success
  1768. assert_output --partial "unlimited"
  1769. }
  1770. #----------------------------------------------------------#
  1771. # Backup user #
  1772. #----------------------------------------------------------#
  1773. @test "Backup: Backup user" {
  1774. run v-backup-user $user
  1775. assert_success
  1776. }
  1777. @test "Backup: List Backups" {
  1778. run v-list-user-backups $user plain
  1779. assert_success
  1780. assert_output --partial "$user"
  1781. }
  1782. @test "Backup: Delete backups" {
  1783. run v-delete-user-backup $user $(v-list-user-backups $user plain | cut -f1)
  1784. assert_success
  1785. run rm /backup/$user.log
  1786. }
  1787. #----------------------------------------------------------#
  1788. # Change owner scripts #
  1789. #----------------------------------------------------------#
  1790. @test "Change: Change domain owner" {
  1791. run v-change-domain-owner $domain $user2
  1792. assert_success
  1793. run v-restart-web
  1794. run v-restart-proxy
  1795. }
  1796. @test "Change: Add database" {
  1797. run v-add-database $user database dbuser 1234 mysql
  1798. assert_success
  1799. refute_output
  1800. # validate_database mysql database_name database_user password
  1801. validate_database mysql $database $dbuser 1234
  1802. }
  1803. @test "Change: Change database owner" {
  1804. run v-change-database-owner $database $user2
  1805. assert_success
  1806. validate_database mysql test-5286_database test-5286_dbuser 1234
  1807. }
  1808. @test "Change: Delete database" {
  1809. run v-delete-database $user2 test-5286_database
  1810. assert_success
  1811. refute_output
  1812. }
  1813. #----------------------------------------------------------#
  1814. # CLEANUP #
  1815. #----------------------------------------------------------#
  1816. @test "Mail: Delete domain" {
  1817. run v-delete-mail-domain $user2 $domain
  1818. assert_success
  1819. refute_output
  1820. }
  1821. @test "DNS: Delete domain" {
  1822. run v-delete-dns-domain $user2 $domain
  1823. assert_success
  1824. refute_output
  1825. }
  1826. @test "WEB: Delete domain" {
  1827. run v-delete-web-domain $user2 $domain
  1828. assert_success
  1829. refute_output
  1830. }
  1831. @test "Delete user" {
  1832. run v-delete-user $user
  1833. assert_success
  1834. refute_output
  1835. }
  1836. @test "Delete user2" {
  1837. run v-delete-user $user2
  1838. assert_success
  1839. refute_output
  1840. }
  1841. @test "Ip: Delete the test IP" {
  1842. run v-delete-sys-ip 198.18.0.125
  1843. assert_success
  1844. refute_output
  1845. }
  1846. @test 'assert()' {
  1847. touch '/var/log/test.log'
  1848. assert [ -e '/var/log/test.log' ]
  1849. }