test.bats 70 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338
  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 $user@hestiacp.com 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 $user@hestiacp2.com 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 $user@hestiacp2.com 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 $user@hestiacp2.com 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 $user@hestiacp2.com 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 $user@hestiacp2.com default "Super Test"
  318. assert_failure $E_INVALID
  319. assert_output --partial 'Error: invalid user format'
  320. }
  321. @test "User: Add new user Failed 6" {
  322. run v-add-user 'ib_Buffer' $user $user@hestiacp2.com default "Super Test"
  323. assert_failure $E_INVALID
  324. assert_output --partial 'Error: The user name'
  325. }
  326. @test "User: Add new user Failed 7" {
  327. run v-add-user 'hello.com' $user $user@hestiacp2.com default "Super Test"
  328. assert_failure $E_INVALID
  329. assert_output --partial 'Error: invalid user format'
  330. }
  331. @test "User: Add new user Success 1" {
  332. run v-add-user 'jaap01' $user $user@hestiacp2.com default "Super Test"
  333. assert_success
  334. refute_output
  335. }
  336. @test "User: Add new user Success 1 Delete" {
  337. run v-delete-user jaap01
  338. assert_success
  339. refute_output
  340. }
  341. @test "User: Add new user Success 2" {
  342. run v-add-user 'buffer' $user $user@hestiacp2.com default "Super Test"
  343. assert_success
  344. refute_output
  345. }
  346. @test "User: Add new user Success 2 Delete" {
  347. run v-delete-user buffer
  348. assert_success
  349. refute_output
  350. }
  351. @test "User: Change user password" {
  352. run v-change-user-password "$user" "$userpass2"
  353. assert_success
  354. refute_output
  355. }
  356. @test "User: Change user email" {
  357. run v-change-user-contact "$user" tester@hestiacp.com
  358. assert_success
  359. refute_output
  360. }
  361. @test "User: Change user contact invalid email " {
  362. run v-change-user-contact "$user" testerhestiacp.com
  363. assert_failure $E_INVALID
  364. assert_output --partial 'Error: invalid email format'
  365. }
  366. @test "User: Change user name" {
  367. run v-change-user-name "$user" "New name"
  368. assert_success
  369. refute_output
  370. }
  371. @test "User: Change user shell" {
  372. run v-change-user-shell $user bash no
  373. assert_success
  374. refute_output
  375. run stat -c '%U' /home/$user
  376. assert_output --partial "$user"
  377. mount_file=$(systemd-escape -p --suffix=mount "/srv/jail/$user/home")
  378. assert_file_not_exist /etc/systemd/system/$mount_file
  379. }
  380. @test "User: Change user invalid shell" {
  381. run v-change-user-shell $user bashinvalid no
  382. assert_failure $E_INVALID
  383. assert_output --partial 'shell bashinvalid is not valid'
  384. }
  385. @test "User: Change user nologin" {
  386. run v-change-user-shell $user nologin no
  387. assert_success
  388. refute_output
  389. run stat -c '%U' /home/$user
  390. assert_output --partial 'root'
  391. mount_file=$(systemd-escape -p --suffix=mount "/srv/jail/$user/home/$user")
  392. assert_file_exist /etc/systemd/system/$mount_file
  393. }
  394. @test "User: Change user bash with jail" {
  395. run v-change-user-shell $user bash yes
  396. assert_success
  397. refute_output
  398. run stat -c '%U' /home/$user
  399. assert_output --partial 'root'
  400. mount_file=$(systemd-escape -p --suffix=mount "/srv/jail/$user/home/$user")
  401. assert_file_exist /etc/systemd/system/$mount_file
  402. }
  403. @test "User: Change user default ns" {
  404. run v-change-user-ns $user ns0.com ns1.com ns2.com ns3.com
  405. assert_success
  406. refute_output
  407. run v-list-user-ns "$user" plain
  408. assert_success
  409. assert_output --partial 'ns0.com'
  410. }
  411. @test "User: Change user language" {
  412. run v-change-user-language $user "nl"
  413. assert_success
  414. refute_output
  415. }
  416. @test "User: Change user language (Does not exists)" {
  417. run v-change-user-language $user "aa"
  418. assert_failure $E_NOTEXIST
  419. }
  420. @test "User: Change user sort order" {
  421. run v-change-user-sort-order $user "name"
  422. assert_success
  423. refute_output
  424. }
  425. @test "User: Change user theme" {
  426. run v-change-user-theme $user "flat"
  427. assert_success
  428. refute_output
  429. }
  430. @test "User: Change user theme (Does not exists)" {
  431. run v-change-user-theme $user "aa"
  432. assert_failure $E_NOTEXIST
  433. }
  434. @test "User: Change user login ip" {
  435. run v-change-user-config-value $user "LOGIN_USE_IPLIST" "1.2.3.4,1.2.3.5"
  436. assert_success
  437. refute_output
  438. }
  439. @test "User: Change user login ip (Failed)" {
  440. run v-change-user-config-value $user "LOGIN_USE_IPLIST" "'; echo 'jaap'; echo '"
  441. assert_failure $E_INVALID
  442. }
  443. @test "User: Add user notification" {
  444. run v-add-user-notification $user "Test message" "Message"
  445. assert_success
  446. refute_output
  447. }
  448. @test "User: Acknowledge user notification" {
  449. run v-acknowledge-user-notification $user 1
  450. assert_success
  451. refute_output
  452. }
  453. @test "User: List user notification" {
  454. run v-list-user-notifications $user csv
  455. assert_success
  456. assert_output --partial "1,\"Test message\",\"Message\",yes"
  457. }
  458. @test "User: Delete user notification" {
  459. run v-delete-user-notification admin 1
  460. assert_success
  461. refute_output
  462. }
  463. @test "User: Get User salt ipv4" {
  464. run v-get-user-salt $user 192.168.2.10
  465. assert_success
  466. }
  467. @test "User: Get User salt ipv4 invalid" {
  468. run v-get-user-salt $user 192.168.992.10
  469. assert_failure $E_INVALID
  470. }
  471. @test "User: Get User salt ipv6" {
  472. run v-get-user-salt $user "21DA:D3:0:2F3B:2AA:FF:FE28:9C5A"
  473. assert_success
  474. }
  475. @test "User: Get User salt ipv6 not exists" {
  476. run v-get-user-salt "notexists" "21DA:D3:0:2F3B:2AA:FF:FE28:9C5B"
  477. assert_failure $E_PASSWORD
  478. }
  479. @test "User: Get User salt ipv6 invalid" {
  480. run v-get-user-salt "$user" "21DA:D3:0:2F3B:ZZZ:FF:FE28:9C5B"
  481. assert_failure $E_INVALID
  482. }
  483. @test "User: Check user password" {
  484. run v-check-user-password $user "$userpass2" 192.168.2.10 'no'
  485. assert_success
  486. }
  487. @test "User: Check user password Incorrect password" {
  488. run v-check-user-password $user "$userpass1" 192.168.2.10 'no'
  489. assert_failure $E_PASSWORD
  490. }
  491. @test "User: Check user hash ipv4" {
  492. hash=$(v-check-user-password $user "$userpass2" 192.168.2.10 'yes');
  493. run v-check-user-hash $user $hash 192.168.2.10
  494. assert_success
  495. }
  496. @test "User: Check user hash ipv6" {
  497. hash=$(v-check-user-password $user "$userpass2" 21DA:D3:0:2F3B:2AA:FF:FE28:9C5A 'yes');
  498. run v-check-user-hash $user $hash 21DA:D3:0:2F3B:2AA:FF:FE28:9C5A
  499. assert_success
  500. }
  501. @test "User: Check user hash ipv6 incorrect" {
  502. run v-check-user-hash $user 'jafawefaweijawe' 21DA:D3:0:2F3B:2AA:FF:FE28:9C5A
  503. assert_failure $E_PASSWORD
  504. }
  505. #----------------------------------------------------------#
  506. # Cron #
  507. #----------------------------------------------------------#
  508. @test "Cron: Add cron job" {
  509. run v-add-cron-job $user 1 1 1 1 1 echo
  510. assert_success
  511. refute_output
  512. }
  513. @test "Cron: Suspend cron job" {
  514. run v-suspend-cron-job $user 1
  515. assert_success
  516. refute_output
  517. }
  518. @test "Cron: Unsuspend cron job" {
  519. run v-unsuspend-cron-job $user 1
  520. assert_success
  521. refute_output
  522. }
  523. @test "Cron: Delete cron job" {
  524. run v-delete-cron-job $user 1
  525. assert_success
  526. refute_output
  527. }
  528. @test "Cron: Add cron job (duplicate)" {
  529. run v-add-cron-job $user 1 1 1 1 1 echo 1
  530. assert_success
  531. refute_output
  532. run v-add-cron-job $user 1 1 1 1 1 echo 1
  533. assert_failure $E_EXISTS
  534. assert_output --partial 'JOB=1 already exists'
  535. }
  536. @test "Cron: Second cron job" {
  537. run v-add-cron-job $user 2 2 2 2 2 echo 2
  538. assert_success
  539. refute_output
  540. }
  541. @test "Cron: Two cron jobs must be listed" {
  542. run v-list-cron-jobs $user csv
  543. assert_success
  544. assert_line --partial '1,1,1,1,1,"echo",no'
  545. assert_line --partial '2,2,2,2,2,"echo",no'
  546. }
  547. @test "Cron: rebuild" {
  548. run v-rebuild-cron-jobs $user
  549. assert_success
  550. refute_output
  551. }
  552. #----------------------------------------------------------#
  553. # IP #
  554. #----------------------------------------------------------#
  555. @test "Ip: Add new ip on first interface" {
  556. interface=$(v-list-sys-interfaces plain | head -n 1)
  557. run ip link show dev $interface
  558. assert_success
  559. local a2_rpaf="/etc/$WEB_SYSTEM/mods-enabled/rpaf.conf"
  560. local a2_remoteip="/etc/$WEB_SYSTEM/mods-enabled/remoteip.conf"
  561. # Save initial state
  562. echo "interface=${interface}" >> /tmp/hestia-test-env.sh
  563. [ -f "$a2_rpaf" ] && file_hash1=$(cat $a2_rpaf |md5sum |cut -d" " -f1) && echo "a2_rpaf_hash='${file_hash1}'" >> /tmp/hestia-test-env.sh
  564. [ -f "$a2_remoteip" ] && file_hash2=$(cat $a2_remoteip |md5sum |cut -d" " -f1) && echo "a2_remoteip_hash='${file_hash2}'" >> /tmp/hestia-test-env.sh
  565. local ip="198.18.0.12"
  566. run v-add-sys-ip $ip 255.255.255.255 $interface $user
  567. assert_success
  568. refute_output
  569. assert_file_exist /etc/$WEB_SYSTEM/conf.d/$ip.conf
  570. assert_file_exist $HESTIA/data/ips/$ip
  571. assert_file_contains $HESTIA/data/ips/$ip "OWNER='$user'"
  572. assert_file_contains $HESTIA/data/ips/$ip "INTERFACE='$interface'"
  573. if [ -n "$PROXY_SYSTEM" ]; then
  574. assert_file_exist /etc/$PROXY_SYSTEM/conf.d/$ip.conf
  575. [ -f "$a2_rpaf" ] && assert_file_contains "$a2_rpaf" "RPAFproxy_ips.*$ip\b"
  576. [ -f "$a2_remoteip" ] && assert_file_contains "$a2_remoteip" "RemoteIPInternalProxy $ip\$"
  577. fi
  578. }
  579. @test "Ip: [Ubuntu] Netplan file updated" {
  580. # Skip if Debian
  581. if [ $(lsb_release -s -i) != "Ubuntu" ]; then
  582. skip
  583. fi
  584. # 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!
  585. assert_file_exist /etc/netplan/60-hestia.yaml
  586. # also check if file contains the newly added ip
  587. assert_file_contains /etc/netplan/60-hestia.yaml "$ip"
  588. }
  589. @test "Ip: [Debian] Netplan file updated" {
  590. # Skip with netplan
  591. if [ $(lsb_release -s -i) = "Ubuntu" ]; then
  592. skip
  593. fi
  594. assert_file_exist /etc/network/interfaces
  595. assert_file_contains /etc/network/interfaces "$ip"
  596. }
  597. @test "Ip: Add ip (duplicate)" {
  598. run v-add-sys-ip 198.18.0.12 255.255.255.255 $interface $user
  599. assert_failure $E_EXISTS
  600. }
  601. @test "Ip: Add extra ip" {
  602. local ip="198.18.0.121"
  603. run v-add-sys-ip $ip 255.255.255.255 $interface $user
  604. assert_success
  605. refute_output
  606. assert_file_exist /etc/$WEB_SYSTEM/conf.d/$ip.conf
  607. assert_file_exist $HESTIA/data/ips/$ip
  608. assert_file_contains $HESTIA/data/ips/$ip "OWNER='$user'"
  609. assert_file_contains $HESTIA/data/ips/$ip "INTERFACE='$interface'"
  610. if [ -n "$PROXY_SYSTEM" ]; then
  611. assert_file_exist /etc/$PROXY_SYSTEM/conf.d/$ip.conf
  612. local a2_rpaf="/etc/$WEB_SYSTEM/mods-enabled/rpaf.conf"
  613. [ -f "$a2_rpaf" ] && assert_file_contains "$a2_rpaf" "RPAFproxy_ips.*$ip\b"
  614. local a2_remoteip="/etc/$WEB_SYSTEM/mods-enabled/remoteip.conf"
  615. [ -f "$a2_remoteip" ] && assert_file_contains "$a2_remoteip" "RemoteIPInternalProxy $ip\$"
  616. fi
  617. }
  618. @test "Ip: Delete ip 198.18.0.12" {
  619. local ip="198.18.0.12"
  620. run v-delete-sys-ip $ip
  621. assert_success
  622. refute_output
  623. assert_file_not_exist /etc/$WEB_SYSTEM/conf.d/$ip.conf
  624. assert_file_not_exist $HESTIA/data/ips/$ip
  625. }
  626. @test "Ip: [Ubuntu] Netplan file changed" {
  627. # Skip if Debian
  628. if [ $(lsb_release -s -i) != "Ubuntu" ]; then
  629. skip
  630. fi
  631. ip="198.18.0.121"
  632. assert_file_exist /etc/netplan/60-hestia.yaml
  633. assert_file_contains /etc/netplan/60-hestia.yaml "$ip"
  634. }
  635. @test "Ip: Delete ip 198.18.0.121" {
  636. ip="198.18.0.121"
  637. run v-delete-sys-ip $ip
  638. assert_success
  639. refute_output
  640. assert_file_not_exist /etc/$WEB_SYSTEM/conf.d/$ip.conf
  641. assert_file_not_exist $HESTIA/data/ips/$ip
  642. if [ -n "$PROXY_SYSTEM" ]; then
  643. assert_file_not_exist /etc/$PROXY_SYSTEM/conf.d/$ip.conf
  644. fi
  645. # remoteip and rpaf config hashes must match the initial one
  646. if [ ! -z "$a2_rpaf_hash" ]; then
  647. local a2_rpaf="/etc/$WEB_SYSTEM/mods-enabled/rpaf.conf"
  648. file_hash=$(cat $a2_rpaf |md5sum |cut -d" " -f1)
  649. assert_equal "$file_hash" "$a2_rpaf_hash"
  650. fi
  651. if [ ! -z "$a2_remoteip_hash" ]; then
  652. local a2_remoteip="/etc/$WEB_SYSTEM/mods-enabled/remoteip.conf"
  653. file_hash=$(cat $a2_remoteip |md5sum |cut -d" " -f1)
  654. assert_equal "$file_hash" "$a2_remoteip_hash"
  655. fi
  656. }
  657. @test "Ip: Add IP for rest of the test" {
  658. local ip="198.18.0.125"
  659. run v-add-sys-ip $ip 255.255.255.255 $interface $user
  660. assert_success
  661. refute_output
  662. assert_file_exist /etc/$WEB_SYSTEM/conf.d/$ip.conf
  663. assert_file_exist $HESTIA/data/ips/$ip
  664. assert_file_contains $HESTIA/data/ips/$ip "OWNER='$user'"
  665. assert_file_contains $HESTIA/data/ips/$ip "INTERFACE='$interface'"
  666. if [ -n "$PROXY_SYSTEM" ]; then
  667. assert_file_exist /etc/$PROXY_SYSTEM/conf.d/$ip.conf
  668. local a2_rpaf="/etc/$WEB_SYSTEM/mods-enabled/rpaf.conf"
  669. [ -f "$a2_rpaf" ] && assert_file_contains "$a2_rpaf" "RPAFproxy_ips.*$ip\b"
  670. local a2_remoteip="/etc/$WEB_SYSTEM/mods-enabled/remoteip.conf"
  671. [ -f "$a2_remoteip" ] && assert_file_contains "$a2_remoteip" "RemoteIPInternalProxy $ip\$"
  672. fi
  673. }
  674. #----------------------------------------------------------#
  675. # WEB #
  676. #----------------------------------------------------------#
  677. @test "WEB: Add web domain" {
  678. run v-add-web-domain $user $domain 198.18.0.125
  679. assert_success
  680. refute_output
  681. echo -e "<?php\necho 'Hestia Test:'.(4*3);" > $HOMEDIR/$user/web/$domain/public_html/php-test.php
  682. validate_web_domain $user $domain 'Hestia Test:12' 'php-test.php'
  683. rm $HOMEDIR/$user/web/$domain/public_html/php-test.php
  684. }
  685. @test "WEB: Add web domain (duplicate)" {
  686. run v-add-web-domain $user $domain 198.18.0.125
  687. assert_failure $E_EXISTS
  688. }
  689. @test "WEB: Add web domain alias" {
  690. run v-add-web-domain-alias $user $domain v3.$domain
  691. assert_success
  692. refute_output
  693. }
  694. @test "WEB: Add web domain alias (duplicate)" {
  695. run v-add-web-domain-alias $user $domain v3.$domain
  696. assert_failure $E_EXISTS
  697. }
  698. @test "WEB: Add web domain wildcard alias" {
  699. run v-add-web-domain-alias $user $domain "*.$domain"
  700. assert_success
  701. refute_output
  702. }
  703. @test "WEB: Delete web domain wildcard alias" {
  704. run v-delete-web-domain-alias $user $domain "*.$domain"
  705. assert_success
  706. refute_output
  707. }
  708. @test "WEB: Add web domain stats" {
  709. run v-add-web-domain-stats $user $domain awstats
  710. assert_success
  711. refute_output
  712. }
  713. @test "WEB: Add web domain stats user" {
  714. skip
  715. run v-add-web-domain-stats-user $user $domain test m3g4p4ssw0rd
  716. assert_success
  717. refute_output
  718. }
  719. @test "WEB: Suspend web domain" {
  720. run v-suspend-web-domain $user $domain
  721. assert_success
  722. refute_output
  723. echo -e "<?php\necho 'Hestia Test:'.(4*3);" > $HOMEDIR/$user/web/$domain/public_html/php-test.php
  724. validate_web_domain $user $domain 'This site is currently suspended'
  725. validate_web_domain $user $domain 'This site is currently suspended' 'php-test.php'
  726. rm $HOMEDIR/$user/web/$domain/public_html/php-test.php
  727. }
  728. @test "WEB: Unsuspend web domain" {
  729. run v-unsuspend-web-domain $user $domain
  730. assert_success
  731. refute_output
  732. echo -e "<?php\necho 'Hestia Test:'.(4*3);" > $HOMEDIR/$user/web/$domain/public_html/php-test.php
  733. validate_web_domain $user $domain 'Hestia Test:12' 'php-test.php'
  734. rm $HOMEDIR/$user/web/$domain/public_html/php-test.php
  735. }
  736. @test "WEB: Add redirect to www.domain.com" {
  737. run v-add-web-domain-redirect $user $domain www.$domain 301
  738. assert_success
  739. refute_output
  740. run validate_headers_domain $user $domain "301"
  741. }
  742. @test "WEB: Delete redirect to www.domain.com" {
  743. run v-delete-web-domain-redirect $user $domain
  744. assert_success
  745. refute_output
  746. }
  747. @test "WEB: Enable Fast CGI Cache" {
  748. if [ "$WEB_SYSTEM" != "nginx" ]; then
  749. skip "FastCGI cache is not supported"
  750. fi
  751. run v-add-fastcgi-cache $user $domain '1m' yes
  752. assert_success
  753. refute_output
  754. echo -e "<?php\necho 'Hestia Test:'.(4*3);" > $HOMEDIR/$user/web/$domain/public_html/php-test.php
  755. run validate_headers_domain $user $domain "Miss"
  756. run validate_headers_domain $user $domain "Hit"
  757. rm $HOMEDIR/$user/web/$domain/public_html/php-test.php
  758. }
  759. @test "WEB: Disable Fast CGI Cache" {
  760. if [ "$WEB_SYSTEM" != "nginx" ]; then
  761. skip "FastCGI cache is not supported"
  762. fi
  763. run v-delete-fastcgi-cache $user $domain yes
  764. assert_success
  765. refute_output
  766. }
  767. @test "WEB: Generate Self signed certificate" {
  768. ssl=$(v-generate-ssl-cert "$domain" "info@$domain" US CA "Orange County" HestiaCP IT "mail.$domain" | tail -n1 | awk '{print $2}')
  769. echo $ssl;
  770. mv $ssl/$domain.crt /tmp/$domain.crt
  771. mv $ssl/$domain.key /tmp/$domain.key
  772. }
  773. @test "WEB: Add ssl" {
  774. # Use self signed certificates during last test
  775. run v-add-web-domain-ssl $user $domain /tmp
  776. assert_success
  777. refute_output
  778. }
  779. @test "WEB: Rebuild web domain" {
  780. run v-rebuild-web-domains $user
  781. assert_success
  782. refute_output
  783. }
  784. #----------------------------------------------------------#
  785. # IDN #
  786. #----------------------------------------------------------#
  787. @test "WEB: Add IDN domain UTF idn-tést.eu" {
  788. run v-add-web-domain $user idn-tést.eu 198.18.0.125
  789. assert_success
  790. refute_output
  791. assert_file_exist /home/$user/web/idn-tést.eu/public_html/index.html
  792. }
  793. @test "WEB: Add IDN domain ASCII idn-tést.eu" {
  794. # Expected to fail due to utf exists
  795. run v-add-web-domain $user "xn--idn-tst-fya.eu" 198.18.0.125
  796. assert_failure $E_EXISTS
  797. }
  798. @test "WEB: Generate Self signed certificate ASCII idn-tést.eu" {
  799. run v-generate-ssl-cert "xn--idn-tst-fya.eu" "info@xn--idn-tst-fya.eu" US CA "Orange County" HestiaCP IT "mail.xn--idn-tst-fya.eu"
  800. assert_success
  801. }
  802. @test "WEB: Delete IDN domain idn-tést.eu" {
  803. run v-delete-web-domain $user idn-tést.eu
  804. assert_success
  805. refute_output
  806. }
  807. @test "WEB: Add IDN domain UTF bløst.рф" {
  808. run v-add-web-domain $user bløst.рф 198.18.0.125
  809. assert_success
  810. refute_output
  811. }
  812. @test "WEB: Generate Self signed certificate ASCII bløst.рф" {
  813. run v-generate-ssl-cert "xn--blst-hra.xn--p1ai" "info@xn--blst-hra.xn--p1ai" US CA "Orange County" HestiaCP IT "mail.xn--blst-hra.xn--p1ai"
  814. assert_success
  815. }
  816. @test "WEB: Delete IDN domain bløst.рф" {
  817. run v-delete-web-domain $user bløst.рф
  818. assert_success
  819. refute_output
  820. }
  821. #----------------------------------------------------------#
  822. # MULTIPHP #
  823. #----------------------------------------------------------#
  824. @test "Multiphp: Default php Backend version" {
  825. def_phpver=$(multiphp_default_version)
  826. multi_domain="multiphp.${domain}"
  827. run v-add-web-domain $user $multi_domain 198.18.0.125
  828. assert_success
  829. refute_output
  830. echo -e "<?php\necho PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;" > "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  831. validate_web_domain $user $multi_domain "$def_phpver" 'php-test.php'
  832. rm "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  833. }
  834. @test "Multiphp: Change backend version - PHP v5.6" {
  835. test_phpver='5.6'
  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-5_6' '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.0" {
  853. test_phpver='7.0'
  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_0' '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.1" {
  871. test_phpver='7.1'
  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_1' '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.2" {
  889. test_phpver='7.2'
  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_2' '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.3" {
  907. test_phpver='7.3'
  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_3' '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 v7.4" {
  925. test_phpver='7.4'
  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-7_4' '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.0" {
  943. test_phpver='8.0'
  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_0' '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.1" {
  961. test_phpver='8.1'
  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_1' '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: Change backend version - PHP v8.2" {
  979. test_phpver='8.2'
  980. multi_domain="multiphp.${domain}"
  981. if [ ! -d "/etc/php/${test_phpver}/fpm/pool.d/" ]; then
  982. skip "PHP ${test_phpver} not installed"
  983. fi
  984. run v-change-web-domain-backend-tpl $user $multi_domain 'PHP-8_2' 'yes'
  985. assert_success
  986. refute_output
  987. # Changing web backend will create a php-fpm pool config in the corresponding php folder
  988. assert_file_exist "/etc/php/${test_phpver}/fpm/pool.d/${multi_domain}.conf"
  989. # A single php-fpm pool config file must be present
  990. num_fpm_config_files="$(find -L /etc/php/ -name "${multi_domain}.conf" | wc -l)"
  991. assert_equal "$num_fpm_config_files" '1'
  992. echo -e "<?php\necho 'hestia-multiphptest:'.PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;" > "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  993. validate_web_domain $user $multi_domain "hestia-multiphptest:$test_phpver" 'php-test.php'
  994. rm $HOMEDIR/$user/web/$multi_domain/public_html/php-test.php
  995. }
  996. @test "Multiphp: Cleanup" {
  997. multi_domain="multiphp.${domain}"
  998. run v-delete-web-domain $user $multi_domain 'yes'
  999. assert_success
  1000. refute_output
  1001. # No php-fpm pool config file must be present
  1002. num_fpm_config_files="$(find -L /etc/php/ -name "${multi_domain}.conf" | wc -l)"
  1003. assert_equal "$num_fpm_config_files" '0'
  1004. }
  1005. #----------------------------------------------------------#
  1006. # CUSTOM DOCROOT #
  1007. #----------------------------------------------------------#
  1008. @test "Docroot: Self Subfolder" {
  1009. docroot1_domain="docroot1.${domain}"
  1010. run v-add-web-domain $user $docroot1_domain 198.18.0.125
  1011. assert_success
  1012. refute_output
  1013. run v-add-fs-directory $user "$HOMEDIR/$user/web/$docroot1_domain/public_html/public/"
  1014. assert_success
  1015. refute_output
  1016. run v-change-web-domain-docroot $user "$docroot1_domain" "$docroot1_domain" "/public"
  1017. assert_success
  1018. refute_output
  1019. echo -e '<?php\necho "self-sub-".$_SERVER["HTTP_HOST"];' > "$HOMEDIR/$user/web/$docroot1_domain/public_html/public/php-test.php"
  1020. validate_web_domain $user $docroot1_domain "self-sub-${docroot1_domain}" 'php-test.php'
  1021. rm "$HOMEDIR/$user/web/$docroot1_domain/public_html/public/php-test.php"
  1022. }
  1023. @test "Docroot: Other domain subfolder" {
  1024. docroot1_domain="docroot1.${domain}"
  1025. docroot2_domain="docroot2.${domain}"
  1026. run v-add-web-domain $user $docroot2_domain 198.18.0.125
  1027. assert_success
  1028. refute_output
  1029. run v-add-fs-directory $user "$HOMEDIR/$user/web/$docroot2_domain/public_html/public/"
  1030. assert_success
  1031. refute_output
  1032. run v-change-web-domain-docroot $user "$docroot1_domain" "$docroot2_domain" "/public"
  1033. assert_success
  1034. refute_output
  1035. echo -e '<?php\necho "doc2-sub-".$_SERVER["HTTP_HOST"];' > "$HOMEDIR/$user/web/$docroot2_domain/public_html/public/php-test.php"
  1036. validate_web_domain $user $docroot1_domain "doc2-sub-${docroot1_domain}" 'php-test.php'
  1037. rm "$HOMEDIR/$user/web/$docroot2_domain/public_html/public/php-test.php"
  1038. }
  1039. @test "Docroot: Other domain root folder" {
  1040. docroot1_domain="docroot1.${domain}"
  1041. docroot2_domain="docroot2.${domain}"
  1042. run v-change-web-domain-docroot $user "$docroot1_domain" "$docroot2_domain"
  1043. assert_success
  1044. refute_output
  1045. echo -e '<?php\necho "doc2-root-".$_SERVER["HTTP_HOST"];' > "$HOMEDIR/$user/web/$docroot2_domain/public_html/php-test.php"
  1046. validate_web_domain $user $docroot1_domain "doc2-root-${docroot1_domain}" 'php-test.php'
  1047. rm "$HOMEDIR/$user/web/$docroot2_domain/public_html/php-test.php"
  1048. }
  1049. @test "Docroot: Reset" {
  1050. docroot1_domain="docroot1.${domain}"
  1051. run v-change-web-domain-docroot $user "$docroot1_domain" "default"
  1052. assert_success
  1053. refute_output
  1054. echo -e '<?php\necho "doc1-root-".$_SERVER["HTTP_HOST"];' > "$HOMEDIR/$user/web/$docroot1_domain/public_html/php-test.php"
  1055. validate_web_domain $user $docroot1_domain "doc1-root-${docroot1_domain}" 'php-test.php'
  1056. rm "$HOMEDIR/$user/web/$docroot1_domain/public_html/php-test.php"
  1057. }
  1058. @test "Docroot: Cleanup" {
  1059. docroot1_domain="docroot1.${domain}"
  1060. docroot2_domain="docroot2.${domain}"
  1061. run v-delete-web-domain $user $docroot1_domain
  1062. assert_success
  1063. refute_output
  1064. run v-delete-web-domain $user $docroot2_domain
  1065. assert_success
  1066. refute_output
  1067. }
  1068. #----------------------------------------------------------#
  1069. # DNS #
  1070. #----------------------------------------------------------#
  1071. @test "DNS: Add domain" {
  1072. run v-add-dns-domain $user $domain 198.18.0.125
  1073. assert_success
  1074. refute_output
  1075. }
  1076. @test "DNS: Add domain (duplicate)" {
  1077. run v-add-dns-domain $user $domain 198.18.0.125
  1078. assert_failure $E_EXISTS
  1079. }
  1080. @test "DNS: Add domain record" {
  1081. run v-add-dns-record $user $domain test A 198.18.0.125 '' 30
  1082. assert_success
  1083. refute_output
  1084. }
  1085. @test "DNS: Add domain record *.domain.com" {
  1086. run v-add-dns-record $user $domain '*' A 198.18.0.125 '' 40
  1087. assert_success
  1088. refute_output
  1089. }
  1090. @test "DNS: Add domain record *.domain.com with ID 0" {
  1091. run v-add-dns-record $user $domain '*' A 198.18.0.125 '' 0
  1092. assert_failure $E_INVALID
  1093. }
  1094. @test "DNS: Change DNS record" {
  1095. run v-change-dns-record $user $domain 30 test A 198.18.0.125 "" "" 1500
  1096. assert_success
  1097. refute_output
  1098. }
  1099. @test "DNS: Change DNS record (no update)" {
  1100. run v-change-dns-record $user $domain 30 test A 198.18.0.125 "" "" 1500
  1101. assert_failure $E_EXSIST
  1102. }
  1103. @test "DNS: Change DNS record id" {
  1104. run v-change-dns-record-id $user $domain 30 31
  1105. assert_success
  1106. refute_output
  1107. # Change back
  1108. run v-change-dns-record-id $user $domain 31 30
  1109. }
  1110. @test "DNS: Change DNS record id (no update)" {
  1111. run v-change-dns-record-id $user $domain 30 30
  1112. assert_failure $E_EXSIST
  1113. }
  1114. @test "DNS: Delete domain record" {
  1115. run v-delete-dns-record $user $domain 30
  1116. assert_success
  1117. refute_output
  1118. }
  1119. @test "DNS: Delete missing domain record" {
  1120. run v-delete-dns-record $user $domain 30
  1121. assert_failure $E_NOTEXIST
  1122. }
  1123. @test "DNS: Change domain expire date" {
  1124. run v-change-dns-domain-exp $user $domain 2020-01-01
  1125. assert_success
  1126. refute_output
  1127. }
  1128. @test "DNS: Add domain record MX" {
  1129. run v-add-dns-record $user $domain '@' MX mx.hestiacp.com '' 50
  1130. assert_success
  1131. refute_output
  1132. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "mx.hestiacp.com."
  1133. run v-change-dns-record $user $domain 50 '@' MX mx.hestia.com
  1134. assert_success
  1135. refute_output
  1136. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "mx.hestia.com."
  1137. run v-delete-dns-record $user $domain 50
  1138. assert_success
  1139. refute_output
  1140. }
  1141. @test "DNS: Add domain record NS" {
  1142. run v-delete-dns-record $user $domain 50
  1143. run v-add-dns-record $user $domain '@' NS mx.hestiacp.com '' 50
  1144. assert_success
  1145. refute_output
  1146. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "mx.hestiacp.com."
  1147. run v-change-dns-record $user $domain 50 '@' NS mx.hestia.com
  1148. assert_success
  1149. refute_output
  1150. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "mx.hestia.com."
  1151. run v-delete-dns-record $user $domain 50
  1152. assert_success
  1153. refute_output
  1154. }
  1155. @test "DNS: Add domain record SRV" {
  1156. run v-delete-dns-record $user $domain 50
  1157. run v-add-dns-record $user $domain '_test_domain' SRV mx.hestiacp.com '' 50
  1158. assert_success
  1159. refute_output
  1160. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "mx.hestiacp.com."
  1161. run v-change-dns-record $user $domain 50 '_test.domain' SRV mx.hestia.com
  1162. assert_success
  1163. refute_output
  1164. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "mx.hestia.com."
  1165. run v-delete-dns-record $user $domain 50
  1166. assert_success
  1167. refute_output
  1168. }
  1169. @test "DNS: Add domain record CNAME" {
  1170. run v-delete-dns-record $user $domain 50
  1171. run v-add-dns-record $user $domain 'mail' CNAME mx.hestiacp.com '' 50
  1172. assert_success
  1173. refute_output
  1174. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "mx.hestiacp.com."
  1175. run v-change-dns-record $user $domain 50 'mail' CNAME mx.hestia.com
  1176. assert_success
  1177. refute_output
  1178. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "mx.hestia.com."
  1179. run v-delete-dns-record $user $domain 50
  1180. assert_success
  1181. refute_output
  1182. }
  1183. @test "DNS: Check txt dns records type1" {
  1184. [ -z "$DNS_SYSTEM" ] && skip
  1185. run v-delete-dns-record $user $domain 50
  1186. record1_in='v=DMARC1; p=quarantine; pct=100'
  1187. record2_in='v=DMARC1; p=quarantine; pct=90'
  1188. record1_out='"v=DMARC1; p=quarantine; pct=100"'
  1189. record2_in='"v=DMARC1; p=quarantine; pct=90"'
  1190. # Test Create
  1191. run v-add-dns-record $user $domain 'test-long-txt' 'TXT' "$record1_in" '' 50
  1192. assert_success
  1193. refute_output
  1194. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "$record1_out"
  1195. # Test Edit
  1196. run v-change-dns-record $user $domain 50 'test-long-txt' 'TXT' "$record2_in"
  1197. assert_success
  1198. refute_output
  1199. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "$record2_out"
  1200. # Test Cleanup
  1201. run v-delete-dns-record $user $domain 50
  1202. assert_success
  1203. refute_output
  1204. }
  1205. @test "DNS: Check txt dns records type2" {
  1206. [ -z "$DNS_SYSTEM" ] && skip
  1207. run v-delete-dns-record $user $domain 50
  1208. record3_in='k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4+VEVsoTbl6tYLJlhozqAGju3IgpSVdBAS5LMyzpHP8/L0/PlyVRJnm2xECjVk3DRqCmelyIvmraw1VtFz2aH6DRlDhHsZghj1DmGhwN+7NkwIb4hEvmytMVAz1WyiLH6Rm6Iemm/ZCt1RhrAMUYLxHA9mJgky76YCcf8/cX35xC+1vd4a5U6YofAZeVP9DBvVgQ8ung4gVrOrQrXkU8QfVNAoXz5pfJo74GB7woIBFhZXsU6SKho7KnzT5inVCIOtWp7L5hyEnbySWQPHT2vAMCCAe2AY/Vv0N3HW14o8P3b4A6OU920wFB2kA7pkQNzO5OwH+HSttwG0PaIiQxYQIDAQAB'
  1209. record3_out='"k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4+VEVsoTbl6tYLJlhozqAGju3IgpSVdBAS5LMyzpHP8/L0/PlyVRJnm2xECjVk3DRqCmelyIvmraw1VtFz2aH6DRlDhHsZghj1DmGhwN+7NkwIb4hEvmytMVAz1WyiLH6Rm6Iemm/ZCt1RhrAMUYLxHA9mJgky76YCcf8/cX35xC+1vd4a5U6YofAZeVP9DBvVgQ8ung4g""VrOrQrXkU8QfVNAoXz5pfJo74GB7woIBFhZXsU6SKho7KnzT5inVCIOtWp7L5hyEnbySWQPHT2vAMCCAe2AY/Vv0N3HW14o8P3b4A6OU920wFB2kA7pkQNzO5OwH+HSttwG0PaIiQxYQIDAQAB"'
  1210. record4_in='k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4+VEVsoTbl6tYLJlhozqAGju3IgpSVdBAS5LMyzpHP8/L0/PlyVRJnm2xECjVk3DRqCmelyIvmraw1VtFz2aH6DRlDhHsZghj1DmGhwN+7NkwIb4hEvmytMVAz1WyiLH6Rm6Iemm/ZCt1RhrAMUYLxHA9mJgky76YCcf8/cX35xC+1vd4a5U6YofAZeVP9DBvVgQ8ung4gVrOrQrXkU8QfVNAoXz5pfJo74GB7woIBFhZXsU6SKho7KnzT5inVCIOtWp7L5hyEnbySWQPHT2vAMCCAe2AY/Vv0N3HW14o8P3b4A6OU920wFB2kA7pkQNzO5OwH+HSttwG0PaIiQxYQIDAQA4'
  1211. record4_out='"k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4+VEVsoTbl6tYLJlhozqAGju3IgpSVdBAS5LMyzpHP8/L0/PlyVRJnm2xECjVk3DRqCmelyIvmraw1VtFz2aH6DRlDhHsZghj1DmGhwN+7NkwIb4hEvmytMVAz1WyiLH6Rm6Iemm/ZCt1RhrAMUYLxHA9mJgky76YCcf8/cX35xC+1vd4a5U6YofAZeVP9DBvVgQ8ung4g""VrOrQrXkU8QfVNAoXz5pfJo74GB7woIBFhZXsU6SKho7KnzT5inVCIOtWp7L5hyEnbySWQPHT2vAMCCAe2AY/Vv0N3HW14o8P3b4A6OU920wFB2kA7pkQNzO5OwH+HSttwG0PaIiQxYQIDAQA4"'
  1212. # Test Create
  1213. run v-add-dns-record $user $domain 'test-long-txt' 'TXT' "$record3_in" '' 50
  1214. assert_success
  1215. refute_output
  1216. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "$record3_out"
  1217. # Test Edit
  1218. run v-change-dns-record $user $domain 50 'test-long-txt' 'TXT' "$record4_in"
  1219. assert_success
  1220. refute_output
  1221. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "$record4_out"
  1222. # Test Cleanup
  1223. run v-delete-dns-record $user $domain 50
  1224. assert_success
  1225. refute_output
  1226. }
  1227. @test "DNS: Change domain ip" {
  1228. run v-change-dns-domain-ip $user $domain 127.0.0.1
  1229. assert_success
  1230. refute_output
  1231. }
  1232. @test "DNS: Suspend domain" {
  1233. run v-suspend-dns-domain $user $domain
  1234. assert_success
  1235. refute_output
  1236. }
  1237. @test "DNS: Unsuspend domain" {
  1238. run v-unsuspend-dns-domain $user $domain
  1239. assert_success
  1240. refute_output
  1241. }
  1242. @test "DNS: Rebuild" {
  1243. run v-rebuild-dns-domains $user
  1244. assert_success
  1245. refute_output
  1246. }
  1247. #----------------------------------------------------------#
  1248. # MAIL #
  1249. #----------------------------------------------------------#
  1250. @test "MAIL: Add domain" {
  1251. run v-add-mail-domain $user $domain
  1252. assert_success
  1253. refute_output
  1254. validate_mail_domain $user $domain
  1255. }
  1256. @test "MAIL: Add mail domain webmail client (Roundcube)" {
  1257. run v-add-mail-domain-webmail $user $domain "roundcube" "yes"
  1258. assert_success
  1259. refute_output
  1260. # echo -e "<?php\necho 'Server: ' . \$_SERVER['SERVER_SOFTWARE'];" > /var/lib/roundcube/check_server.php
  1261. validate_webmail_domain $user $domain 'Welcome to Roundcube Webmail'
  1262. # rm /var/lib/roundcube/check_server.php
  1263. }
  1264. @test "Mail: Add SSL to mail domain" {
  1265. # Use generated certificates during WEB Generate Self signed certificate
  1266. run v-add-mail-domain-ssl $user $domain /tmp
  1267. assert_success
  1268. refute_output
  1269. validate_webmail_domain $user $domain 'Welcome to Roundcube Webmail'
  1270. }
  1271. @test "MAIL: Add mail domain webmail client (SnappyMail)" {
  1272. if [ -z "$(echo $WEBMAIL_SYSTEM | grep -w "snappymail")" ]; then
  1273. skip "Webmail client SnappyMail not installed"
  1274. fi
  1275. run v-add-mail-domain-webmail $user $domain "snappymail" "yes"
  1276. assert_success
  1277. refute_output
  1278. validate_mail_domain $user $domain
  1279. validate_webmail_domain $user $domain 'SnappyMail Webmail'
  1280. }
  1281. @test "MAIL: Disable webmail client" {
  1282. run v-add-mail-domain-webmail $user $domain "disabled" "yes"
  1283. assert_success
  1284. refute_output
  1285. validate_mail_domain $user $domain
  1286. validate_webmail_domain $user $domain 'Success!'
  1287. run v-add-mail-domain-webmail $user $domain "roundcube" "yes"
  1288. assert_success
  1289. refute_output
  1290. }
  1291. @test "MAIL: Add domain (duplicate)" {
  1292. run v-add-mail-domain $user $domain
  1293. assert_failure $E_EXISTS
  1294. }
  1295. @test "MAIL: Add account" {
  1296. run v-add-mail-account $user $domain test "$userpass2"
  1297. assert_success
  1298. assert_file_contains /etc/exim4/domains/$domain/limits "test@$domain"
  1299. refute_output
  1300. }
  1301. @test "MAIL: Add account (duplicate)" {
  1302. run v-add-mail-account $user $domain test "$userpass2"
  1303. assert_failure $E_EXISTS
  1304. }
  1305. @test "MAIL: Add account 2" {
  1306. run v-add-mail-account $user $domain random "$userpass2"
  1307. assert_success
  1308. assert_file_contains /etc/exim4/domains/$domain/limits "random@$domain"
  1309. refute_output
  1310. }
  1311. @test "MAIL: Add account alias" {
  1312. run v-add-mail-account-alias $user $domain test hestiacprocks
  1313. assert_success
  1314. assert_file_contains /etc/exim4/domains/$domain/aliases "hestiacprocks@$domain"
  1315. refute_output
  1316. }
  1317. @test "MAIL: Add account alias 2" {
  1318. run v-add-mail-account-alias $user $domain test hestiacprocks2
  1319. assert_success
  1320. assert_file_contains /etc/exim4/domains/$domain/aliases "hestiacprocks2@$domain"
  1321. refute_output
  1322. }
  1323. @test "MAIL: Add account alias 3" {
  1324. run v-add-mail-account-alias $user $domain test hestiacp
  1325. assert_success
  1326. assert_file_contains /etc/exim4/domains/$domain/aliases "hestiacp@$domain"
  1327. refute_output
  1328. }
  1329. @test "MAIL: Add account 3" {
  1330. run v-add-mail-account $user $domain hestia "$userpass2"
  1331. assert_success
  1332. assert_file_contains /etc/exim4/domains/$domain/limits "hestia@$domain"
  1333. refute_output
  1334. }
  1335. @test "MAIL: Add account 4" {
  1336. run v-add-mail-account $user $domain hestiarocks3 "$userpass2"
  1337. assert_success
  1338. assert_file_contains /etc/exim4/domains/$domain/limits "hestiarocks3@$domain"
  1339. refute_output
  1340. }
  1341. @test "MAIL: Add account 5" {
  1342. run v-add-mail-account $user $domain 01 "$userpass2"
  1343. assert_success
  1344. assert_file_contains /etc/exim4/domains/$domain/limits "01@$domain"
  1345. refute_output
  1346. }
  1347. @test "MAIL: Add account 6" {
  1348. run v-add-mail-account $user $domain "0aa" "$userpass2"
  1349. assert_success
  1350. assert_file_contains /etc/exim4/domains/$domain/limits "0aa@$domain"
  1351. refute_output
  1352. }
  1353. @test "MAIL: Add account alias Invalid length" {
  1354. run v-add-mail-account-alias $user $domain test 'hestiacp-really-rocks-but-i-want-to-have-feature-xyz-and-i-want-it-now'
  1355. assert_failure $E_INVALID
  1356. }
  1357. @test "MAIL: Add account alias Invalid" {
  1358. run v-add-mail-account-alias $user $domain test 'test+123'
  1359. assert_failure $E_INVALID
  1360. }
  1361. @test "MAIL: Add account alias starting with -" {
  1362. run v-add-mail-account-alias $user $domain test '-test'
  1363. assert_success
  1364. }
  1365. @test "MAIL: Add account alias ending with -" {
  1366. run v-add-mail-account-alias $user $domain test 'test-'
  1367. assert_success
  1368. }
  1369. @test "MAIL: Add account alias Invalid 2" {
  1370. run v-add-mail-account-alias $user $domain test 'hestia@test'
  1371. assert_failure $E_INVALID
  1372. }
  1373. @test "MAIL: Add account alias (duplicate)" {
  1374. run v-add-mail-account-alias $user $domain test hestiacprocks
  1375. assert_failure $E_EXISTS
  1376. }
  1377. @test "MAIL: change mail account password" {
  1378. run curl -k -X POST -d "email=test@$domain&password=$userpass2&new=123456" https://localhost:8083/reset/mail/
  1379. assert_success
  1380. assert_output --partial "==ok=="
  1381. }
  1382. @test "MAIL: change mail account password (Incorrect PW)" {
  1383. run curl -k -X POST -d "email=test@$domain&password=$userpass2&new=123456" https://localhost:8083/reset/mail/
  1384. assert_success
  1385. assert_output --partial "error"
  1386. }
  1387. @test "MAIL: Change rate limit" {
  1388. run v-change-mail-account-rate-limit $user $domain test 10
  1389. assert_file_contains /etc/exim4/domains/$domain/limits "test@$domain:10"
  1390. }
  1391. @test "MAIL: Delete account" {
  1392. run v-delete-mail-account $user $domain test
  1393. assert_success
  1394. refute_output
  1395. }
  1396. @test "MAIL: Delete missing account" {
  1397. run v-delete-mail-account $user $domain test
  1398. assert_failure $E_NOTEXIST
  1399. }
  1400. @test "MAIL: Rebuild mail domain" {
  1401. run v-rebuild-mail-domains $user
  1402. assert_success
  1403. refute_output
  1404. }
  1405. @test "MAIL: Delete DKIM" {
  1406. run v-delete-mail-domain-dkim $user $domain
  1407. assert_success
  1408. refute_output
  1409. run grep "RECORD='_domainkey'" "${HESTIA}/data/users/${user}/dns/${domain}.conf"
  1410. assert_failure
  1411. refute_output
  1412. run grep "RECORD='mail._domainkey'" "${HESTIA}/data/users/${user}/dns/${domain}.conf"
  1413. assert_failure
  1414. refute_output
  1415. }
  1416. @test "MAIL: Add DKIM" {
  1417. run v-add-mail-domain-dkim $user $domain
  1418. assert_success
  1419. refute_output
  1420. run grep "RECORD='_domainkey'" "${HESTIA}/data/users/${user}/dns/${domain}.conf"
  1421. assert_success
  1422. assert_output --partial "RECORD='_domainkey' TYPE='TXT'"
  1423. run grep "RECORD='mail._domainkey'" "${HESTIA}/data/users/${user}/dns/${domain}.conf"
  1424. assert_success
  1425. assert_output --partial "RECORD='mail._domainkey' TYPE='TXT'"
  1426. }
  1427. @test "MAIL: Delete DKIM but preserve custom dkim records" {
  1428. run v-add-dns-record $user $domain 'k2._domainkey' 'TXT' 'v=DKIM1; k=rsa; p=123456'
  1429. assert_success
  1430. refute_output
  1431. run v-delete-mail-domain-dkim $user $domain
  1432. assert_success
  1433. refute_output
  1434. run grep "RECORD='k2._domainkey'" "${HESTIA}/data/users/${user}/dns/${domain}.conf"
  1435. assert_success
  1436. assert_output --partial "RECORD='k2._domainkey' TYPE='TXT'"
  1437. }
  1438. #----------------------------------------------------------#
  1439. # Limit possibilities adding different owner domain #
  1440. #----------------------------------------------------------#
  1441. @test "Allow Users: User can't add user.user2.com " {
  1442. # Case: admin company.tld
  1443. # users should not be allowed to add user.company.tld
  1444. run v-add-user $user2 $user2 $user@hestiacp.com default "Super Test"
  1445. assert_success
  1446. refute_output
  1447. run v-add-web-domain $user2 $rootdomain
  1448. assert_success
  1449. refute_output
  1450. run v-add-web-domain $user $subdomain
  1451. assert_failure $E_EXISTS
  1452. }
  1453. @test "Allow Users: User can't add user.user2.com as alias" {
  1454. run v-add-web-domain-alias $user $domain $subdomain
  1455. assert_failure $E_EXISTS
  1456. }
  1457. @test "Allow Users: User can't add user.user2.com as mail domain" {
  1458. run v-add-mail-domain $user $subdomain
  1459. assert_failure $E_EXISTS
  1460. }
  1461. @test "Allow Users: User can't add user.user2.com as dns domain" {
  1462. run v-add-dns-domain $user $subdomain 198.18.0.125
  1463. assert_failure $E_EXISTS
  1464. }
  1465. @test "Allow Users: Set Allow users" {
  1466. # Allow user to yes allows
  1467. # Case: admin company.tld
  1468. # users are allowed to add user.company.tld
  1469. run v-add-web-domain-allow-users $user2 $rootdomain
  1470. assert_success
  1471. refute_output
  1472. }
  1473. @test "Allow Users: User can add user.user2.com" {
  1474. run v-add-web-domain $user $subdomain
  1475. assert_success
  1476. refute_output
  1477. }
  1478. @test "Allow Users: User can add user.user2.com as alias" {
  1479. run v-delete-web-domain $user $subdomain
  1480. assert_success
  1481. refute_output
  1482. run v-add-web-domain-alias $user $domain $subdomain
  1483. assert_success
  1484. refute_output
  1485. }
  1486. @test "Allow Users: User can add user.user2.com as mail domain" {
  1487. run v-add-mail-domain $user $subdomain
  1488. assert_success
  1489. refute_output
  1490. }
  1491. @test "Allow Users: User can add user.user2.com as dns domain" {
  1492. run v-add-dns-domain $user $subdomain 198.18.0.125
  1493. assert_success
  1494. refute_output
  1495. }
  1496. @test "Allow Users: Cleanup tests" {
  1497. run v-delete-dns-domain $user $subdomain
  1498. assert_success
  1499. refute_output
  1500. run v-delete-mail-domain $user $subdomain
  1501. assert_success
  1502. refute_output
  1503. }
  1504. @test "Allow Users: Set Allow users no" {
  1505. run v-delete-web-domain-alias $user $domain $subdomain
  1506. assert_success
  1507. refute_output
  1508. run v-delete-web-domain-allow-users $user2 $rootdomain
  1509. assert_success
  1510. refute_output
  1511. }
  1512. @test "Allow Users: User can't add user.user2.com again" {
  1513. run v-add-web-domain $user $subdomain
  1514. assert_failure $E_EXISTS
  1515. }
  1516. @test "Allow Users: user2 can add user.user2.com again" {
  1517. run v-add-web-domain $user2 $subdomain
  1518. assert_success
  1519. refute_output
  1520. }
  1521. #----------------------------------------------------------#
  1522. # DB #
  1523. #----------------------------------------------------------#
  1524. @test "MYSQL: Add database" {
  1525. run v-add-database $user database dbuser 1234 mysql
  1526. assert_success
  1527. refute_output
  1528. # validate_database mysql database_name database_user password
  1529. validate_database mysql $database $dbuser 1234
  1530. }
  1531. @test "MYSQL: Add Database (Duplicate)" {
  1532. run v-add-database $user database dbuser 1234 mysql
  1533. assert_failure $E_EXISTS
  1534. }
  1535. @test "MYSQL: Rebuild Database" {
  1536. run v-rebuild-database $user $database
  1537. assert_success
  1538. refute_output
  1539. }
  1540. @test "MYSQL: Change database user password" {
  1541. run v-change-database-password $user $database 123456
  1542. assert_success
  1543. refute_output
  1544. validate_database mysql $database $dbuser 123456
  1545. }
  1546. @test "MYSQL: Change database user" {
  1547. run v-change-database-user $user $database database
  1548. assert_success
  1549. refute_output
  1550. validate_database mysql $database $database 123456
  1551. }
  1552. @test "MYSQL: Suspend database" {
  1553. run v-suspend-database $user $database
  1554. assert_success
  1555. refute_output
  1556. }
  1557. @test "MYSQL: Unsuspend database" {
  1558. run v-unsuspend-database $user $database
  1559. assert_success
  1560. refute_output
  1561. }
  1562. @test "MYSQL: Delete database" {
  1563. run v-delete-database $user $database
  1564. assert_success
  1565. refute_output
  1566. }
  1567. @test "MYSQL: Delete missing database" {
  1568. run v-delete-database $user $database
  1569. assert_failure $E_NOTEXIST
  1570. }
  1571. @test "PGSQL: Add database invalid user" {
  1572. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1573. skip "PostGreSQL is not installed"
  1574. fi
  1575. run v-add-database "$user" "database" "dbuser" "1234ABCD" "pgsql"
  1576. assert_failure $E_INVALID
  1577. }
  1578. @test "PGSQL: Add database" {
  1579. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1580. skip "PostGreSQL is not installed"
  1581. fi
  1582. run v-add-user $pguser $pguser $user@hestiacp.com default "Super Test"
  1583. run v-add-database "$pguser" "database" "dbuser" "1234ABCD" "pgsql"
  1584. assert_success
  1585. refute_output
  1586. # validate_database pgsql $pgdatabase $pgdbuser "1234ABCD"
  1587. }
  1588. @test "PGSQL: Add Database (Duplicate)" {
  1589. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1590. skip "PostGreSQL is not installed"
  1591. fi
  1592. run v-add-database "$pguser" "database" "dbuser" "1234ABCD" "pgsql"
  1593. assert_failure $E_EXISTS
  1594. }
  1595. @test "PGSQL: Rebuild Database" {
  1596. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1597. skip "PostGreSQL is not installed"
  1598. fi
  1599. run v-rebuild-database $pguser $pgdatabase
  1600. assert_success
  1601. refute_output
  1602. }
  1603. @test "PGSQL: Change database user password" {
  1604. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1605. skip "PostGreSQL is not installed"
  1606. fi
  1607. run v-change-database-password $pguser $pgdatabase "123456"
  1608. assert_success
  1609. refute_output
  1610. # validate_database pgsql $pgdatabase $pgdbuser "123456"
  1611. }
  1612. @test "PGSQL: Suspend database" {
  1613. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1614. skip "PostGreSQL is not installed"
  1615. fi
  1616. run v-suspend-database $pguser $pgdatabase
  1617. assert_success
  1618. refute_output
  1619. }
  1620. @test "PGSQL: Unsuspend database" {
  1621. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1622. skip "PostGreSQL is not installed"
  1623. fi
  1624. run v-unsuspend-database $pguser $pgdatabase
  1625. assert_success
  1626. refute_output
  1627. }
  1628. @test "PGSQL: Change database user" {
  1629. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1630. skip "PostGreSQL is not installed"
  1631. fi
  1632. skip
  1633. run v-change-database-user $pguser $pgdatabase database
  1634. assert_success
  1635. refute_output
  1636. validate_database pgsql $pgdatabase $pgdatabase 123456
  1637. }
  1638. @test "PGSQL: Delete database" {
  1639. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1640. skip "PostGreSQL is not installed"
  1641. fi
  1642. run v-delete-database $pguser $pgdatabase
  1643. assert_success
  1644. refute_output
  1645. }
  1646. @test "PGSQL: Delete missing database" {
  1647. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1648. skip "PostGreSQL is not installed"
  1649. fi
  1650. run v-delete-database $pguser $pgdatabase
  1651. assert_failure $E_NOTEXIST
  1652. run v-delete-user $pguser
  1653. }
  1654. #----------------------------------------------------------#
  1655. # System #
  1656. #----------------------------------------------------------#
  1657. @test "System: Set/Enable SMTP account for internal mail" {
  1658. run v-add-sys-smtp $domain 587 STARTTLS info@$domain 1234-test noreply@$domain
  1659. assert_success
  1660. refute_output
  1661. }
  1662. @test "System: Disable SMTP account for internal mail" {
  1663. run v-delete-sys-smtp
  1664. assert_success
  1665. refute_output
  1666. }
  1667. @test "System: Set/Enable SMTP relay" {
  1668. run v-add-sys-smtp-relay $domain info@$domain 1234-test 587
  1669. assert_success
  1670. refute_output
  1671. assert_file_exist /etc/exim4/smtp_relay.conf
  1672. }
  1673. @test "System: Delete SMTP relay" {
  1674. run v-delete-sys-smtp-relay
  1675. assert_success
  1676. refute_output
  1677. assert_file_not_exist /etc/exim4/smtp_relay.conf
  1678. }
  1679. #----------------------------------------------------------#
  1680. # Firewall #
  1681. #----------------------------------------------------------#
  1682. @test "Firewall: Add ip to banlist" {
  1683. run v-add-firewall-ban '1.2.3.4' 'HESTIA'
  1684. assert_success
  1685. refute_output
  1686. check_ip_banned '1.2.3.4' 'HESTIA'
  1687. }
  1688. @test "Firewall: Delete ip to banlist" {
  1689. run v-delete-firewall-ban '1.2.3.4' 'HESTIA'
  1690. assert_success
  1691. refute_output
  1692. check_ip_not_banned '1.2.3.4' 'HESTIA'
  1693. }
  1694. @test "Firewall: Add ip to banlist for ALL" {
  1695. run v-add-firewall-ban '1.2.3.4' 'HESTIA'
  1696. assert_success
  1697. refute_output
  1698. run v-add-firewall-ban '1.2.3.4' 'MAIL'
  1699. assert_success
  1700. refute_output
  1701. check_ip_banned '1.2.3.4' 'HESTIA'
  1702. }
  1703. @test "Firewall: Delete ip to banlist CHAIN = ALL" {
  1704. run v-delete-firewall-ban '1.2.3.4' 'ALL'
  1705. assert_success
  1706. refute_output
  1707. check_ip_not_banned '1.2.3.4' 'HESTIA'
  1708. }
  1709. @test "Test Whitelist Fail2ban" {
  1710. echo "1.2.3.4" >> $HESTIA/data/firewall/excludes.conf
  1711. run v-add-firewall-ban '1.2.3.4' 'HESTIA'
  1712. rm $HESTIA/data/firewall/excludes.conf
  1713. check_ip_not_banned '1.2.3.4' 'HESTIA'
  1714. }
  1715. @test "Test create ipset" {
  1716. run v-add-firewall-ipset "country-nl" "https://raw.githubusercontent.com/ipverse/rir-ip/master/country/nl/ipv4-aggregated.txt" v4 yes
  1717. assert_success
  1718. refute_output
  1719. }
  1720. @test "Create firewall with Ipset" {
  1721. run v-add-firewall-rule 'DROP' 'ipset:country-nl' '8083,22' 'TCP' 'Test'
  1722. assert_success
  1723. refute_output
  1724. }
  1725. @test "List firewall rules" {
  1726. run v-list-firewall csv
  1727. assert_success
  1728. assert_line --partial '11,DROP,TCP,8083,22,ipset:country-nl'
  1729. }
  1730. @test "Delete firewall with Ipset" {
  1731. run v-delete-firewall-rule '11'
  1732. assert_success
  1733. refute_output
  1734. }
  1735. @test "Test delete ipset" {
  1736. run v-delete-firewall-ipset "country-nl"
  1737. assert_success
  1738. refute_output
  1739. }
  1740. #----------------------------------------------------------#
  1741. # PACKAGE #
  1742. #----------------------------------------------------------#
  1743. @test "Package: Create new Package" {
  1744. cp $HESTIA/data/packages/default.pkg /tmp/package
  1745. run v-add-user-package /tmp/package hestiatest
  1746. assert_success
  1747. refute_output
  1748. }
  1749. @test "Package: Assign user to new Package" {
  1750. run v-change-user-package $user hestiatest
  1751. assert_success
  1752. refute_output
  1753. }
  1754. @test "Package: Create new package (Duplicate)" {
  1755. sed -i "s/BANDWIDTH='unlimited'/BANDWIDTH='100'/g" /tmp/package
  1756. run v-add-user-package /tmp/package hestiatest
  1757. assert_failure $E_EXISTS
  1758. }
  1759. @test "Package: Update new Package" {
  1760. sed -i "s/BANDWIDTH='unlimited'/BANDWIDTH='100'/g" /tmp/package
  1761. run v-add-user-package /tmp/package hestiatest yes
  1762. assert_success
  1763. refute_output
  1764. }
  1765. @test "Package: Update package of user" {
  1766. run v-change-user-package $user hestiatest
  1767. assert_success
  1768. refute_output
  1769. run grep "BANDWIDTH='100'" $HESTIA/data/users/$user/user.conf
  1770. assert_success
  1771. assert_output --partial "100"
  1772. }
  1773. @test "Package: Copy package Not Exists" {
  1774. run v-copy-user-package hestiadoesnotexists hestiatest2
  1775. assert_failure $E_NOTEXIST
  1776. }
  1777. @test "Package: Copy package" {
  1778. run v-copy-user-package hestiatest hestiatest2
  1779. assert_success
  1780. refute_output
  1781. }
  1782. @test "Package: Copy package Exists" {
  1783. run v-copy-user-package hestiatest hestiatest2
  1784. assert_failure $E_EXISTS
  1785. }
  1786. @test "Package: Delete package" {
  1787. run v-delete-user-package hestiatest
  1788. run v-delete-user-package hestiatest2
  1789. rm /tmp/package
  1790. assert_success
  1791. refute_output
  1792. run grep "BANDWIDTH='unlimited'" $HESTIA/data/users/$user/user.conf
  1793. assert_success
  1794. assert_output --partial "unlimited"
  1795. }
  1796. #----------------------------------------------------------#
  1797. # Backup user #
  1798. #----------------------------------------------------------#
  1799. @test "Backup: Backup user" {
  1800. run v-backup-user $user
  1801. assert_success
  1802. }
  1803. @test "Backup: List Backups" {
  1804. run v-list-user-backups $user plain
  1805. assert_success
  1806. assert_output --partial "$user"
  1807. }
  1808. @test "Backup: Delete backups" {
  1809. run v-delete-user-backup $user $(v-list-user-backups $user plain | cut -f1)
  1810. assert_success
  1811. run rm /backup/$user.log
  1812. }
  1813. #----------------------------------------------------------#
  1814. # Change owner scripts #
  1815. #----------------------------------------------------------#
  1816. @test "Change: Change domain owner" {
  1817. run v-change-domain-owner $domain $user2
  1818. assert_success
  1819. run v-restart-web
  1820. run v-restart-proxy
  1821. }
  1822. @test "Change: Add database" {
  1823. run v-add-database $user database dbuser 1234 mysql
  1824. assert_success
  1825. refute_output
  1826. # validate_database mysql database_name database_user password
  1827. validate_database mysql $database $dbuser 1234
  1828. }
  1829. @test "Change: Change database owner" {
  1830. run v-change-database-owner $database $user2
  1831. assert_success
  1832. validate_database mysql test-5286_database test-5286_dbuser 1234
  1833. }
  1834. @test "Change: Delete database" {
  1835. run v-delete-database $user2 test-5286_database
  1836. assert_success
  1837. refute_output
  1838. }
  1839. #----------------------------------------------------------#
  1840. # CLEANUP #
  1841. #----------------------------------------------------------#
  1842. @test "Mail: Delete domain" {
  1843. run v-delete-mail-domain $user2 $domain
  1844. assert_success
  1845. refute_output
  1846. }
  1847. @test "DNS: Delete domain" {
  1848. run v-delete-dns-domain $user2 $domain
  1849. assert_success
  1850. refute_output
  1851. }
  1852. @test "WEB: Delete domain" {
  1853. run v-delete-web-domain $user2 $domain
  1854. assert_success
  1855. refute_output
  1856. }
  1857. @test "Delete user" {
  1858. run v-delete-user $user
  1859. assert_success
  1860. refute_output
  1861. }
  1862. @test "Delete user2" {
  1863. run v-delete-user $user2
  1864. assert_success
  1865. refute_output
  1866. }
  1867. @test "Ip: Delete the test IP" {
  1868. run v-delete-sys-ip 198.18.0.125
  1869. assert_success
  1870. refute_output
  1871. }
  1872. @test 'assert()' {
  1873. touch '/var/log/test.log'
  1874. assert [ -e '/var/log/test.log' ]
  1875. }