test.bats 70 KB

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