test.bats 70 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331
  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. assert_file_exist /home/$user/web/idn-tést.eu/public_html/index.html
  787. }
  788. @test "WEB: Add IDN domain ASCII idn-tést.eu" {
  789. # Expected to fail due to utf exists
  790. run v-add-web-domain $user "xn--idn-tst-fya.eu" 198.18.0.125
  791. assert_failure $E_EXISTS
  792. }
  793. @test "WEB: Generate Self signed certificate ASCII idn-tést.eu" {
  794. 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"
  795. assert_success
  796. }
  797. @test "WEB: Delete IDN domain idn-tést.eu" {
  798. run v-delete-web-domain $user idn-tést.eu
  799. assert_success
  800. refute_output
  801. }
  802. @test "WEB: Add IDN domain UTF bløst.рф" {
  803. run v-add-web-domain $user bløst.рф 198.18.0.125
  804. assert_success
  805. refute_output
  806. }
  807. @test "WEB: Generate Self signed certificate ASCII bløst.рф" {
  808. 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"
  809. assert_success
  810. }
  811. @test "WEB: Delete IDN domain bløst.рф" {
  812. run v-delete-web-domain $user bløst.рф
  813. assert_success
  814. refute_output
  815. }
  816. #----------------------------------------------------------#
  817. # MULTIPHP #
  818. #----------------------------------------------------------#
  819. @test "Multiphp: Default php Backend version" {
  820. def_phpver=$(multiphp_default_version)
  821. multi_domain="multiphp.${domain}"
  822. run v-add-web-domain $user $multi_domain 198.18.0.125
  823. assert_success
  824. refute_output
  825. echo -e "<?php\necho PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;" > "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  826. validate_web_domain $user $multi_domain "$def_phpver" 'php-test.php'
  827. rm "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  828. }
  829. @test "Multiphp: Change backend version - PHP v5.6" {
  830. test_phpver='5.6'
  831. multi_domain="multiphp.${domain}"
  832. if [ ! -d "/etc/php/${test_phpver}/fpm/pool.d/" ]; then
  833. skip "PHP ${test_phpver} not installed"
  834. fi
  835. run v-change-web-domain-backend-tpl $user $multi_domain 'PHP-5_6' 'yes'
  836. assert_success
  837. refute_output
  838. # Changing web backend will create a php-fpm pool config in the corresponding php folder
  839. assert_file_exist "/etc/php/${test_phpver}/fpm/pool.d/${multi_domain}.conf"
  840. # A single php-fpm pool config file must be present
  841. num_fpm_config_files="$(find -L /etc/php/ -name "${multi_domain}.conf" | wc -l)"
  842. assert_equal "$num_fpm_config_files" '1'
  843. echo -e "<?php\necho 'hestia-multiphptest:'.PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;" > "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  844. validate_web_domain $user $multi_domain "hestia-multiphptest:$test_phpver" 'php-test.php'
  845. rm "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  846. }
  847. @test "Multiphp: Change backend version - PHP v7.0" {
  848. test_phpver='7.0'
  849. multi_domain="multiphp.${domain}"
  850. if [ ! -d "/etc/php/${test_phpver}/fpm/pool.d/" ]; then
  851. skip "PHP ${test_phpver} not installed"
  852. fi
  853. run v-change-web-domain-backend-tpl $user $multi_domain 'PHP-7_0' 'yes'
  854. assert_success
  855. refute_output
  856. # Changing web backend will create a php-fpm pool config in the corresponding php folder
  857. assert_file_exist "/etc/php/${test_phpver}/fpm/pool.d/${multi_domain}.conf"
  858. # A single php-fpm pool config file must be present
  859. num_fpm_config_files="$(find -L /etc/php/ -name "${multi_domain}.conf" | wc -l)"
  860. assert_equal "$num_fpm_config_files" '1'
  861. echo -e "<?php\necho 'hestia-multiphptest:'.PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;" > "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  862. validate_web_domain $user $multi_domain "hestia-multiphptest:$test_phpver" 'php-test.php'
  863. rm "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  864. }
  865. @test "Multiphp: Change backend version - PHP v7.1" {
  866. test_phpver='7.1'
  867. multi_domain="multiphp.${domain}"
  868. if [ ! -d "/etc/php/${test_phpver}/fpm/pool.d/" ]; then
  869. skip "PHP ${test_phpver} not installed"
  870. fi
  871. run v-change-web-domain-backend-tpl $user $multi_domain 'PHP-7_1' 'yes'
  872. assert_success
  873. refute_output
  874. # Changing web backend will create a php-fpm pool config in the corresponding php folder
  875. assert_file_exist "/etc/php/${test_phpver}/fpm/pool.d/${multi_domain}.conf"
  876. # A single php-fpm pool config file must be present
  877. num_fpm_config_files="$(find -L /etc/php/ -name "${multi_domain}.conf" | wc -l)"
  878. assert_equal "$num_fpm_config_files" '1'
  879. echo -e "<?php\necho 'hestia-multiphptest:'.PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;" > "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  880. validate_web_domain $user $multi_domain "hestia-multiphptest:$test_phpver" 'php-test.php'
  881. rm "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  882. }
  883. @test "Multiphp: Change backend version - PHP v7.2" {
  884. test_phpver='7.2'
  885. multi_domain="multiphp.${domain}"
  886. if [ ! -d "/etc/php/${test_phpver}/fpm/pool.d/" ]; then
  887. skip "PHP ${test_phpver} not installed"
  888. fi
  889. run v-change-web-domain-backend-tpl $user $multi_domain 'PHP-7_2' 'yes'
  890. assert_success
  891. refute_output
  892. # Changing web backend will create a php-fpm pool config in the corresponding php folder
  893. assert_file_exist "/etc/php/${test_phpver}/fpm/pool.d/${multi_domain}.conf"
  894. # A single php-fpm pool config file must be present
  895. num_fpm_config_files="$(find -L /etc/php/ -name "${multi_domain}.conf" | wc -l)"
  896. assert_equal "$num_fpm_config_files" '1'
  897. echo -e "<?php\necho 'hestia-multiphptest:'.PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;" > "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  898. validate_web_domain $user $multi_domain "hestia-multiphptest:$test_phpver" 'php-test.php'
  899. rm "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  900. }
  901. @test "Multiphp: Change backend version - PHP v7.3" {
  902. test_phpver='7.3'
  903. multi_domain="multiphp.${domain}"
  904. if [ ! -d "/etc/php/${test_phpver}/fpm/pool.d/" ]; then
  905. skip "PHP ${test_phpver} not installed"
  906. fi
  907. run v-change-web-domain-backend-tpl $user $multi_domain 'PHP-7_3' 'yes'
  908. assert_success
  909. refute_output
  910. # Changing web backend will create a php-fpm pool config in the corresponding php folder
  911. assert_file_exist "/etc/php/${test_phpver}/fpm/pool.d/${multi_domain}.conf"
  912. # A single php-fpm pool config file must be present
  913. num_fpm_config_files="$(find -L /etc/php/ -name "${multi_domain}.conf" | wc -l)"
  914. assert_equal "$num_fpm_config_files" '1'
  915. echo -e "<?php\necho 'hestia-multiphptest:'.PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;" > "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  916. validate_web_domain $user $multi_domain "hestia-multiphptest:$test_phpver" 'php-test.php'
  917. rm "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  918. }
  919. @test "Multiphp: Change backend version - PHP v7.4" {
  920. test_phpver='7.4'
  921. multi_domain="multiphp.${domain}"
  922. if [ ! -d "/etc/php/${test_phpver}/fpm/pool.d/" ]; then
  923. skip "PHP ${test_phpver} not installed"
  924. fi
  925. run v-change-web-domain-backend-tpl $user $multi_domain 'PHP-7_4' 'yes'
  926. assert_success
  927. refute_output
  928. # Changing web backend will create a php-fpm pool config in the corresponding php folder
  929. assert_file_exist "/etc/php/${test_phpver}/fpm/pool.d/${multi_domain}.conf"
  930. # A single php-fpm pool config file must be present
  931. num_fpm_config_files="$(find -L /etc/php/ -name "${multi_domain}.conf" | wc -l)"
  932. assert_equal "$num_fpm_config_files" '1'
  933. echo -e "<?php\necho 'hestia-multiphptest:'.PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;" > "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  934. validate_web_domain $user $multi_domain "hestia-multiphptest:$test_phpver" 'php-test.php'
  935. rm "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  936. }
  937. @test "Multiphp: Change backend version - PHP v8.0" {
  938. test_phpver='8.0'
  939. multi_domain="multiphp.${domain}"
  940. if [ ! -d "/etc/php/${test_phpver}/fpm/pool.d/" ]; then
  941. skip "PHP ${test_phpver} not installed"
  942. fi
  943. run v-change-web-domain-backend-tpl $user $multi_domain 'PHP-8_0' 'yes'
  944. assert_success
  945. refute_output
  946. # Changing web backend will create a php-fpm pool config in the corresponding php folder
  947. assert_file_exist "/etc/php/${test_phpver}/fpm/pool.d/${multi_domain}.conf"
  948. # A single php-fpm pool config file must be present
  949. num_fpm_config_files="$(find -L /etc/php/ -name "${multi_domain}.conf" | wc -l)"
  950. assert_equal "$num_fpm_config_files" '1'
  951. echo -e "<?php\necho 'hestia-multiphptest:'.PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;" > "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  952. validate_web_domain $user $multi_domain "hestia-multiphptest:$test_phpver" 'php-test.php'
  953. rm $HOMEDIR/$user/web/$multi_domain/public_html/php-test.php
  954. }
  955. @test "Multiphp: Change backend version - PHP v8.1" {
  956. test_phpver='8.1'
  957. multi_domain="multiphp.${domain}"
  958. if [ ! -d "/etc/php/${test_phpver}/fpm/pool.d/" ]; then
  959. skip "PHP ${test_phpver} not installed"
  960. fi
  961. run v-change-web-domain-backend-tpl $user $multi_domain 'PHP-8_1' 'yes'
  962. assert_success
  963. refute_output
  964. # Changing web backend will create a php-fpm pool config in the corresponding php folder
  965. assert_file_exist "/etc/php/${test_phpver}/fpm/pool.d/${multi_domain}.conf"
  966. # A single php-fpm pool config file must be present
  967. num_fpm_config_files="$(find -L /etc/php/ -name "${multi_domain}.conf" | wc -l)"
  968. assert_equal "$num_fpm_config_files" '1'
  969. echo -e "<?php\necho 'hestia-multiphptest:'.PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;" > "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  970. validate_web_domain $user $multi_domain "hestia-multiphptest:$test_phpver" 'php-test.php'
  971. rm $HOMEDIR/$user/web/$multi_domain/public_html/php-test.php
  972. }
  973. @test "Multiphp: Change backend version - PHP v8.2" {
  974. test_phpver='8.2'
  975. multi_domain="multiphp.${domain}"
  976. if [ ! -d "/etc/php/${test_phpver}/fpm/pool.d/" ]; then
  977. skip "PHP ${test_phpver} not installed"
  978. fi
  979. run v-change-web-domain-backend-tpl $user $multi_domain 'PHP-8_2' 'yes'
  980. assert_success
  981. refute_output
  982. # Changing web backend will create a php-fpm pool config in the corresponding php folder
  983. assert_file_exist "/etc/php/${test_phpver}/fpm/pool.d/${multi_domain}.conf"
  984. # A single php-fpm pool config file must be present
  985. num_fpm_config_files="$(find -L /etc/php/ -name "${multi_domain}.conf" | wc -l)"
  986. assert_equal "$num_fpm_config_files" '1'
  987. echo -e "<?php\necho 'hestia-multiphptest:'.PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;" > "$HOMEDIR/$user/web/$multi_domain/public_html/php-test.php"
  988. validate_web_domain $user $multi_domain "hestia-multiphptest:$test_phpver" 'php-test.php'
  989. rm $HOMEDIR/$user/web/$multi_domain/public_html/php-test.php
  990. }
  991. @test "Multiphp: Cleanup" {
  992. multi_domain="multiphp.${domain}"
  993. run v-delete-web-domain $user $multi_domain 'yes'
  994. assert_success
  995. refute_output
  996. # No php-fpm pool config file must be present
  997. num_fpm_config_files="$(find -L /etc/php/ -name "${multi_domain}.conf" | wc -l)"
  998. assert_equal "$num_fpm_config_files" '0'
  999. }
  1000. #----------------------------------------------------------#
  1001. # CUSTOM DOCROOT #
  1002. #----------------------------------------------------------#
  1003. @test "Docroot: Self Subfolder" {
  1004. docroot1_domain="docroot1.${domain}"
  1005. run v-add-web-domain $user $docroot1_domain 198.18.0.125
  1006. assert_success
  1007. refute_output
  1008. run v-add-fs-directory $user "$HOMEDIR/$user/web/$docroot1_domain/public_html/public/"
  1009. assert_success
  1010. refute_output
  1011. run v-change-web-domain-docroot $user "$docroot1_domain" "$docroot1_domain" "/public"
  1012. assert_success
  1013. refute_output
  1014. echo -e '<?php\necho "self-sub-".$_SERVER["HTTP_HOST"];' > "$HOMEDIR/$user/web/$docroot1_domain/public_html/public/php-test.php"
  1015. validate_web_domain $user $docroot1_domain "self-sub-${docroot1_domain}" 'php-test.php'
  1016. rm "$HOMEDIR/$user/web/$docroot1_domain/public_html/public/php-test.php"
  1017. }
  1018. @test "Docroot: Other domain subfolder" {
  1019. docroot1_domain="docroot1.${domain}"
  1020. docroot2_domain="docroot2.${domain}"
  1021. run v-add-web-domain $user $docroot2_domain 198.18.0.125
  1022. assert_success
  1023. refute_output
  1024. run v-add-fs-directory $user "$HOMEDIR/$user/web/$docroot2_domain/public_html/public/"
  1025. assert_success
  1026. refute_output
  1027. run v-change-web-domain-docroot $user "$docroot1_domain" "$docroot2_domain" "/public"
  1028. assert_success
  1029. refute_output
  1030. echo -e '<?php\necho "doc2-sub-".$_SERVER["HTTP_HOST"];' > "$HOMEDIR/$user/web/$docroot2_domain/public_html/public/php-test.php"
  1031. validate_web_domain $user $docroot1_domain "doc2-sub-${docroot1_domain}" 'php-test.php'
  1032. rm "$HOMEDIR/$user/web/$docroot2_domain/public_html/public/php-test.php"
  1033. }
  1034. @test "Docroot: Other domain root folder" {
  1035. docroot1_domain="docroot1.${domain}"
  1036. docroot2_domain="docroot2.${domain}"
  1037. run v-change-web-domain-docroot $user "$docroot1_domain" "$docroot2_domain"
  1038. assert_success
  1039. refute_output
  1040. echo -e '<?php\necho "doc2-root-".$_SERVER["HTTP_HOST"];' > "$HOMEDIR/$user/web/$docroot2_domain/public_html/php-test.php"
  1041. validate_web_domain $user $docroot1_domain "doc2-root-${docroot1_domain}" 'php-test.php'
  1042. rm "$HOMEDIR/$user/web/$docroot2_domain/public_html/php-test.php"
  1043. }
  1044. @test "Docroot: Reset" {
  1045. docroot1_domain="docroot1.${domain}"
  1046. run v-change-web-domain-docroot $user "$docroot1_domain" "default"
  1047. assert_success
  1048. refute_output
  1049. echo -e '<?php\necho "doc1-root-".$_SERVER["HTTP_HOST"];' > "$HOMEDIR/$user/web/$docroot1_domain/public_html/php-test.php"
  1050. validate_web_domain $user $docroot1_domain "doc1-root-${docroot1_domain}" 'php-test.php'
  1051. rm "$HOMEDIR/$user/web/$docroot1_domain/public_html/php-test.php"
  1052. }
  1053. @test "Docroot: Cleanup" {
  1054. docroot1_domain="docroot1.${domain}"
  1055. docroot2_domain="docroot2.${domain}"
  1056. run v-delete-web-domain $user $docroot1_domain
  1057. assert_success
  1058. refute_output
  1059. run v-delete-web-domain $user $docroot2_domain
  1060. assert_success
  1061. refute_output
  1062. }
  1063. #----------------------------------------------------------#
  1064. # DNS #
  1065. #----------------------------------------------------------#
  1066. @test "DNS: Add domain" {
  1067. run v-add-dns-domain $user $domain 198.18.0.125
  1068. assert_success
  1069. refute_output
  1070. }
  1071. @test "DNS: Add domain (duplicate)" {
  1072. run v-add-dns-domain $user $domain 198.18.0.125
  1073. assert_failure $E_EXISTS
  1074. }
  1075. @test "DNS: Add domain record" {
  1076. run v-add-dns-record $user $domain test A 198.18.0.125 '' 30
  1077. assert_success
  1078. refute_output
  1079. }
  1080. @test "DNS: Add domain record *.domain.com" {
  1081. run v-add-dns-record $user $domain '*' A 198.18.0.125 '' 40
  1082. assert_success
  1083. refute_output
  1084. }
  1085. @test "DNS: Add domain record *.domain.com with ID 0" {
  1086. run v-add-dns-record $user $domain '*' A 198.18.0.125 '' 0
  1087. assert_failure $E_INVALID
  1088. }
  1089. @test "DNS: Change DNS record" {
  1090. run v-change-dns-record $user $domain 30 test A 198.18.0.125 "" "" 1500
  1091. assert_success
  1092. refute_output
  1093. }
  1094. @test "DNS: Change DNS record (no update)" {
  1095. run v-change-dns-record $user $domain 30 test A 198.18.0.125 "" "" 1500
  1096. assert_failure $E_EXSIST
  1097. }
  1098. @test "DNS: Change DNS record id" {
  1099. run v-change-dns-record-id $user $domain 30 31
  1100. assert_success
  1101. refute_output
  1102. # Change back
  1103. run v-change-dns-record-id $user $domain 31 30
  1104. }
  1105. @test "DNS: Change DNS record id (no update)" {
  1106. run v-change-dns-record-id $user $domain 30 30
  1107. assert_failure $E_EXSIST
  1108. }
  1109. @test "DNS: Delete domain record" {
  1110. run v-delete-dns-record $user $domain 30
  1111. assert_success
  1112. refute_output
  1113. }
  1114. @test "DNS: Delete missing domain record" {
  1115. run v-delete-dns-record $user $domain 30
  1116. assert_failure $E_NOTEXIST
  1117. }
  1118. @test "DNS: Change domain expire date" {
  1119. run v-change-dns-domain-exp $user $domain 2020-01-01
  1120. assert_success
  1121. refute_output
  1122. }
  1123. @test "DNS: Add domain record MX" {
  1124. run v-add-dns-record $user $domain '@' MX mx.hestiacp.com '' 50
  1125. assert_success
  1126. refute_output
  1127. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "mx.hestiacp.com."
  1128. run v-change-dns-record $user $domain 50 '@' MX mx.hestia.com
  1129. assert_success
  1130. refute_output
  1131. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "mx.hestia.com."
  1132. run v-delete-dns-record $user $domain 50
  1133. assert_success
  1134. refute_output
  1135. }
  1136. @test "DNS: Add domain record NS" {
  1137. run v-delete-dns-record $user $domain 50
  1138. run v-add-dns-record $user $domain '@' NS mx.hestiacp.com '' 50
  1139. assert_success
  1140. refute_output
  1141. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "mx.hestiacp.com."
  1142. run v-change-dns-record $user $domain 50 '@' NS mx.hestia.com
  1143. assert_success
  1144. refute_output
  1145. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "mx.hestia.com."
  1146. run v-delete-dns-record $user $domain 50
  1147. assert_success
  1148. refute_output
  1149. }
  1150. @test "DNS: Add domain record SRV" {
  1151. run v-delete-dns-record $user $domain 50
  1152. run v-add-dns-record $user $domain '_test_domain' SRV mx.hestiacp.com '' 50
  1153. assert_success
  1154. refute_output
  1155. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "mx.hestiacp.com."
  1156. run v-change-dns-record $user $domain 50 '_test.domain' SRV mx.hestia.com
  1157. assert_success
  1158. refute_output
  1159. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "mx.hestia.com."
  1160. run v-delete-dns-record $user $domain 50
  1161. assert_success
  1162. refute_output
  1163. }
  1164. @test "DNS: Add domain record CNAME" {
  1165. run v-delete-dns-record $user $domain 50
  1166. run v-add-dns-record $user $domain 'mail' CNAME mx.hestiacp.com '' 50
  1167. assert_success
  1168. refute_output
  1169. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "mx.hestiacp.com."
  1170. run v-change-dns-record $user $domain 50 'mail' CNAME mx.hestia.com
  1171. assert_success
  1172. refute_output
  1173. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "mx.hestia.com."
  1174. run v-delete-dns-record $user $domain 50
  1175. assert_success
  1176. refute_output
  1177. }
  1178. @test "DNS: Check txt dns records type1" {
  1179. [ -z "$DNS_SYSTEM" ] && skip
  1180. run v-delete-dns-record $user $domain 50
  1181. record1_in='v=DMARC1; p=quarantine; pct=100'
  1182. record2_in='v=DMARC1; p=quarantine; pct=90'
  1183. record1_out='"v=DMARC1; p=quarantine; pct=100"'
  1184. record2_in='"v=DMARC1; p=quarantine; pct=90"'
  1185. # Test Create
  1186. run v-add-dns-record $user $domain 'test-long-txt' 'TXT' "$record1_in" '' 50
  1187. assert_success
  1188. refute_output
  1189. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "$record1_out"
  1190. # Test Edit
  1191. run v-change-dns-record $user $domain 50 'test-long-txt' 'TXT' "$record2_in"
  1192. assert_success
  1193. refute_output
  1194. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "$record2_out"
  1195. # Test Cleanup
  1196. run v-delete-dns-record $user $domain 50
  1197. assert_success
  1198. refute_output
  1199. }
  1200. @test "DNS: Check txt dns records type2" {
  1201. [ -z "$DNS_SYSTEM" ] && skip
  1202. run v-delete-dns-record $user $domain 50
  1203. record3_in='k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4+VEVsoTbl6tYLJlhozqAGju3IgpSVdBAS5LMyzpHP8/L0/PlyVRJnm2xECjVk3DRqCmelyIvmraw1VtFz2aH6DRlDhHsZghj1DmGhwN+7NkwIb4hEvmytMVAz1WyiLH6Rm6Iemm/ZCt1RhrAMUYLxHA9mJgky76YCcf8/cX35xC+1vd4a5U6YofAZeVP9DBvVgQ8ung4gVrOrQrXkU8QfVNAoXz5pfJo74GB7woIBFhZXsU6SKho7KnzT5inVCIOtWp7L5hyEnbySWQPHT2vAMCCAe2AY/Vv0N3HW14o8P3b4A6OU920wFB2kA7pkQNzO5OwH+HSttwG0PaIiQxYQIDAQAB'
  1204. record3_out='"k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4+VEVsoTbl6tYLJlhozqAGju3IgpSVdBAS5LMyzpHP8/L0/PlyVRJnm2xECjVk3DRqCmelyIvmraw1VtFz2aH6DRlDhHsZghj1DmGhwN+7NkwIb4hEvmytMVAz1WyiLH6Rm6Iemm/ZCt1RhrAMUYLxHA9mJgky76YCcf8/cX35xC+1vd4a5U6YofAZeVP9DBvVgQ8ung4g""VrOrQrXkU8QfVNAoXz5pfJo74GB7woIBFhZXsU6SKho7KnzT5inVCIOtWp7L5hyEnbySWQPHT2vAMCCAe2AY/Vv0N3HW14o8P3b4A6OU920wFB2kA7pkQNzO5OwH+HSttwG0PaIiQxYQIDAQAB"'
  1205. record4_in='k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4+VEVsoTbl6tYLJlhozqAGju3IgpSVdBAS5LMyzpHP8/L0/PlyVRJnm2xECjVk3DRqCmelyIvmraw1VtFz2aH6DRlDhHsZghj1DmGhwN+7NkwIb4hEvmytMVAz1WyiLH6Rm6Iemm/ZCt1RhrAMUYLxHA9mJgky76YCcf8/cX35xC+1vd4a5U6YofAZeVP9DBvVgQ8ung4gVrOrQrXkU8QfVNAoXz5pfJo74GB7woIBFhZXsU6SKho7KnzT5inVCIOtWp7L5hyEnbySWQPHT2vAMCCAe2AY/Vv0N3HW14o8P3b4A6OU920wFB2kA7pkQNzO5OwH+HSttwG0PaIiQxYQIDAQA4'
  1206. record4_out='"k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4+VEVsoTbl6tYLJlhozqAGju3IgpSVdBAS5LMyzpHP8/L0/PlyVRJnm2xECjVk3DRqCmelyIvmraw1VtFz2aH6DRlDhHsZghj1DmGhwN+7NkwIb4hEvmytMVAz1WyiLH6Rm6Iemm/ZCt1RhrAMUYLxHA9mJgky76YCcf8/cX35xC+1vd4a5U6YofAZeVP9DBvVgQ8ung4g""VrOrQrXkU8QfVNAoXz5pfJo74GB7woIBFhZXsU6SKho7KnzT5inVCIOtWp7L5hyEnbySWQPHT2vAMCCAe2AY/Vv0N3HW14o8P3b4A6OU920wFB2kA7pkQNzO5OwH+HSttwG0PaIiQxYQIDAQA4"'
  1207. # Test Create
  1208. run v-add-dns-record $user $domain 'test-long-txt' 'TXT' "$record3_in" '' 50
  1209. assert_success
  1210. refute_output
  1211. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "$record3_out"
  1212. # Test Edit
  1213. run v-change-dns-record $user $domain 50 'test-long-txt' 'TXT' "$record4_in"
  1214. assert_success
  1215. refute_output
  1216. assert_file_contains "$HOMEDIR/$user/conf/dns/${domain}.db" "$record4_out"
  1217. # Test Cleanup
  1218. run v-delete-dns-record $user $domain 50
  1219. assert_success
  1220. refute_output
  1221. }
  1222. @test "DNS: Change domain ip" {
  1223. run v-change-dns-domain-ip $user $domain 127.0.0.1
  1224. assert_success
  1225. refute_output
  1226. }
  1227. @test "DNS: Suspend domain" {
  1228. run v-suspend-dns-domain $user $domain
  1229. assert_success
  1230. refute_output
  1231. }
  1232. @test "DNS: Unsuspend domain" {
  1233. run v-unsuspend-dns-domain $user $domain
  1234. assert_success
  1235. refute_output
  1236. }
  1237. @test "DNS: Rebuild" {
  1238. run v-rebuild-dns-domains $user
  1239. assert_success
  1240. refute_output
  1241. }
  1242. #----------------------------------------------------------#
  1243. # MAIL #
  1244. #----------------------------------------------------------#
  1245. @test "MAIL: Add domain" {
  1246. run v-add-mail-domain $user $domain
  1247. assert_success
  1248. refute_output
  1249. validate_mail_domain $user $domain
  1250. }
  1251. @test "MAIL: Add mail domain webmail client (Roundcube)" {
  1252. run v-add-mail-domain-webmail $user $domain "roundcube" "yes"
  1253. assert_success
  1254. refute_output
  1255. # echo -e "<?php\necho 'Server: ' . \$_SERVER['SERVER_SOFTWARE'];" > /var/lib/roundcube/check_server.php
  1256. validate_webmail_domain $user $domain 'Welcome to Roundcube Webmail'
  1257. # rm /var/lib/roundcube/check_server.php
  1258. }
  1259. @test "Mail: Add SSL to mail domain" {
  1260. # Use generated certificates during WEB Generate Self signed certificate
  1261. run v-add-mail-domain-ssl $user $domain /tmp
  1262. assert_success
  1263. refute_output
  1264. validate_webmail_domain $user $domain 'Welcome to Roundcube Webmail'
  1265. }
  1266. @test "MAIL: Add mail domain webmail client (SnappyMail)" {
  1267. if [ -z "$(echo $WEBMAIL_SYSTEM | grep -w "snappymail")" ]; then
  1268. skip "Webmail client SnappyMail not installed"
  1269. fi
  1270. run v-add-mail-domain-webmail $user $domain "snappymail" "yes"
  1271. assert_success
  1272. refute_output
  1273. validate_mail_domain $user $domain
  1274. validate_webmail_domain $user $domain 'SnappyMail Webmail'
  1275. }
  1276. @test "MAIL: Disable webmail client" {
  1277. run v-add-mail-domain-webmail $user $domain "disabled" "yes"
  1278. assert_success
  1279. refute_output
  1280. validate_mail_domain $user $domain
  1281. validate_webmail_domain $user $domain 'Success!'
  1282. run v-add-mail-domain-webmail $user $domain "roundcube" "yes"
  1283. assert_success
  1284. refute_output
  1285. }
  1286. @test "MAIL: Add domain (duplicate)" {
  1287. run v-add-mail-domain $user $domain
  1288. assert_failure $E_EXISTS
  1289. }
  1290. @test "MAIL: Add account" {
  1291. run v-add-mail-account $user $domain test "$userpass2"
  1292. assert_success
  1293. assert_file_contains /etc/exim4/domains/$domain/limits "test@$domain"
  1294. refute_output
  1295. }
  1296. @test "MAIL: Add account (duplicate)" {
  1297. run v-add-mail-account $user $domain test "$userpass2"
  1298. assert_failure $E_EXISTS
  1299. }
  1300. @test "MAIL: Add account 2" {
  1301. run v-add-mail-account $user $domain random "$userpass2"
  1302. assert_success
  1303. assert_file_contains /etc/exim4/domains/$domain/limits "random@$domain"
  1304. refute_output
  1305. }
  1306. @test "MAIL: Add account alias" {
  1307. run v-add-mail-account-alias $user $domain test hestiacprocks
  1308. assert_success
  1309. assert_file_contains /etc/exim4/domains/$domain/aliases "hestiacprocks@$domain"
  1310. refute_output
  1311. }
  1312. @test "MAIL: Add account alias 2" {
  1313. run v-add-mail-account-alias $user $domain test hestiacprocks2
  1314. assert_success
  1315. assert_file_contains /etc/exim4/domains/$domain/aliases "hestiacprocks2@$domain"
  1316. refute_output
  1317. }
  1318. @test "MAIL: Add account alias 3" {
  1319. run v-add-mail-account-alias $user $domain test hestiacp
  1320. assert_success
  1321. assert_file_contains /etc/exim4/domains/$domain/aliases "hestiacp@$domain"
  1322. refute_output
  1323. }
  1324. @test "MAIL: Add account 3" {
  1325. run v-add-mail-account $user $domain hestia "$userpass2"
  1326. assert_success
  1327. assert_file_contains /etc/exim4/domains/$domain/limits "hestia@$domain"
  1328. refute_output
  1329. }
  1330. @test "MAIL: Add account 4" {
  1331. run v-add-mail-account $user $domain hestiarocks3 "$userpass2"
  1332. assert_success
  1333. assert_file_contains /etc/exim4/domains/$domain/limits "hestiarocks3@$domain"
  1334. refute_output
  1335. }
  1336. @test "MAIL: Add account 5" {
  1337. run v-add-mail-account $user $domain 01 "$userpass2"
  1338. assert_success
  1339. assert_file_contains /etc/exim4/domains/$domain/limits "01@$domain"
  1340. refute_output
  1341. }
  1342. @test "MAIL: Add account 6" {
  1343. run v-add-mail-account $user $domain "0aa" "$userpass2"
  1344. assert_success
  1345. assert_file_contains /etc/exim4/domains/$domain/limits "0aa@$domain"
  1346. refute_output
  1347. }
  1348. @test "MAIL: Add account alias Invalid length" {
  1349. run v-add-mail-account-alias $user $domain test 'hestiacp-really-rocks-but-i-want-to-have-feature-xyz-and-i-want-it-now'
  1350. assert_failure $E_INVALID
  1351. }
  1352. @test "MAIL: Add account alias Invalid" {
  1353. run v-add-mail-account-alias $user $domain test 'test+123'
  1354. assert_failure $E_INVALID
  1355. }
  1356. @test "MAIL: Add account alias starting with -" {
  1357. run v-add-mail-account-alias $user $domain test '-test'
  1358. assert_success
  1359. }
  1360. @test "MAIL: Add account alias ending with -" {
  1361. run v-add-mail-account-alias $user $domain test 'test-'
  1362. assert_success
  1363. }
  1364. @test "MAIL: Add account alias Invalid 2" {
  1365. run v-add-mail-account-alias $user $domain test 'hestia@test'
  1366. assert_failure $E_INVALID
  1367. }
  1368. @test "MAIL: Add account alias (duplicate)" {
  1369. run v-add-mail-account-alias $user $domain test hestiacprocks
  1370. assert_failure $E_EXISTS
  1371. }
  1372. @test "MAIL: change mail account password" {
  1373. run curl -k -X POST -d "email=test@$domain&password=$userpass2&new=123456" https://localhost:8083/reset/mail/
  1374. assert_success
  1375. assert_output --partial "==ok=="
  1376. }
  1377. @test "MAIL: change mail account password (Incorrect PW)" {
  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 "error"
  1381. }
  1382. @test "MAIL: Change rate limit" {
  1383. run v-change-mail-account-rate-limit $user $domain test 10
  1384. assert_file_contains /etc/exim4/domains/$domain/limits "test@$domain:10"
  1385. }
  1386. @test "MAIL: Delete account" {
  1387. run v-delete-mail-account $user $domain test
  1388. assert_success
  1389. refute_output
  1390. }
  1391. @test "MAIL: Delete missing account" {
  1392. run v-delete-mail-account $user $domain test
  1393. assert_failure $E_NOTEXIST
  1394. }
  1395. @test "MAIL: Rebuild mail domain" {
  1396. run v-rebuild-mail-domains $user
  1397. assert_success
  1398. refute_output
  1399. }
  1400. @test "MAIL: Delete DKIM" {
  1401. run v-delete-mail-domain-dkim $user $domain
  1402. assert_success
  1403. refute_output
  1404. run grep "RECORD='_domainkey'" "${HESTIA}/data/users/${user}/dns/${domain}.conf"
  1405. assert_failure
  1406. refute_output
  1407. run grep "RECORD='mail._domainkey'" "${HESTIA}/data/users/${user}/dns/${domain}.conf"
  1408. assert_failure
  1409. refute_output
  1410. }
  1411. @test "MAIL: Add DKIM" {
  1412. run v-add-mail-domain-dkim $user $domain
  1413. assert_success
  1414. refute_output
  1415. run grep "RECORD='_domainkey'" "${HESTIA}/data/users/${user}/dns/${domain}.conf"
  1416. assert_success
  1417. assert_output --partial "RECORD='_domainkey' TYPE='TXT'"
  1418. run grep "RECORD='mail._domainkey'" "${HESTIA}/data/users/${user}/dns/${domain}.conf"
  1419. assert_success
  1420. assert_output --partial "RECORD='mail._domainkey' TYPE='TXT'"
  1421. }
  1422. @test "MAIL: Delete DKIM but preserve custom dkim records" {
  1423. run v-add-dns-record $user $domain 'k2._domainkey' 'TXT' 'v=DKIM1; k=rsa; p=123456'
  1424. assert_success
  1425. refute_output
  1426. run v-delete-mail-domain-dkim $user $domain
  1427. assert_success
  1428. refute_output
  1429. run grep "RECORD='k2._domainkey'" "${HESTIA}/data/users/${user}/dns/${domain}.conf"
  1430. assert_success
  1431. assert_output --partial "RECORD='k2._domainkey' TYPE='TXT'"
  1432. }
  1433. #----------------------------------------------------------#
  1434. # Limit possibilities adding different owner domain #
  1435. #----------------------------------------------------------#
  1436. @test "Allow Users: User can't add user.user2.com " {
  1437. # Case: admin company.tld
  1438. # users should not be allowed to add user.company.tld
  1439. run v-add-user $user2 $user2 $user@hestiacp.com default "Super Test"
  1440. assert_success
  1441. refute_output
  1442. run v-add-web-domain $user2 $rootdomain
  1443. assert_success
  1444. refute_output
  1445. run v-add-web-domain $user $subdomain
  1446. assert_failure $E_EXISTS
  1447. }
  1448. @test "Allow Users: User can't add user.user2.com as alias" {
  1449. run v-add-web-domain-alias $user $domain $subdomain
  1450. assert_failure $E_EXISTS
  1451. }
  1452. @test "Allow Users: User can't add user.user2.com as mail domain" {
  1453. run v-add-mail-domain $user $subdomain
  1454. assert_failure $E_EXISTS
  1455. }
  1456. @test "Allow Users: User can't add user.user2.com as dns domain" {
  1457. run v-add-dns-domain $user $subdomain 198.18.0.125
  1458. assert_failure $E_EXISTS
  1459. }
  1460. @test "Allow Users: Set Allow users" {
  1461. # Allow user to yes allows
  1462. # Case: admin company.tld
  1463. # users are allowed to add user.company.tld
  1464. run v-add-web-domain-allow-users $user2 $rootdomain
  1465. assert_success
  1466. refute_output
  1467. }
  1468. @test "Allow Users: User can add user.user2.com" {
  1469. run v-add-web-domain $user $subdomain
  1470. assert_success
  1471. refute_output
  1472. }
  1473. @test "Allow Users: User can add user.user2.com as alias" {
  1474. run v-delete-web-domain $user $subdomain
  1475. assert_success
  1476. refute_output
  1477. run v-add-web-domain-alias $user $domain $subdomain
  1478. assert_success
  1479. refute_output
  1480. }
  1481. @test "Allow Users: User can add user.user2.com as mail domain" {
  1482. run v-add-mail-domain $user $subdomain
  1483. assert_success
  1484. refute_output
  1485. }
  1486. @test "Allow Users: User can add user.user2.com as dns domain" {
  1487. run v-add-dns-domain $user $subdomain 198.18.0.125
  1488. assert_success
  1489. refute_output
  1490. }
  1491. @test "Allow Users: Cleanup tests" {
  1492. run v-delete-dns-domain $user $subdomain
  1493. assert_success
  1494. refute_output
  1495. run v-delete-mail-domain $user $subdomain
  1496. assert_success
  1497. refute_output
  1498. }
  1499. @test "Allow Users: Set Allow users no" {
  1500. run v-delete-web-domain-alias $user $domain $subdomain
  1501. assert_success
  1502. refute_output
  1503. run v-delete-web-domain-allow-users $user2 $rootdomain
  1504. assert_success
  1505. refute_output
  1506. }
  1507. @test "Allow Users: User can't add user.user2.com again" {
  1508. run v-add-web-domain $user $subdomain
  1509. assert_failure $E_EXISTS
  1510. }
  1511. @test "Allow Users: user2 can add user.user2.com again" {
  1512. run v-add-web-domain $user2 $subdomain
  1513. assert_success
  1514. refute_output
  1515. }
  1516. #----------------------------------------------------------#
  1517. # DB #
  1518. #----------------------------------------------------------#
  1519. @test "MYSQL: Add database" {
  1520. run v-add-database $user database dbuser 1234 mysql
  1521. assert_success
  1522. refute_output
  1523. # validate_database mysql database_name database_user password
  1524. validate_database mysql $database $dbuser 1234
  1525. }
  1526. @test "MYSQL: Add Database (Duplicate)" {
  1527. run v-add-database $user database dbuser 1234 mysql
  1528. assert_failure $E_EXISTS
  1529. }
  1530. @test "MYSQL: Rebuild Database" {
  1531. run v-rebuild-database $user $database
  1532. assert_success
  1533. refute_output
  1534. }
  1535. @test "MYSQL: Change database user password" {
  1536. run v-change-database-password $user $database 123456
  1537. assert_success
  1538. refute_output
  1539. validate_database mysql $database $dbuser 123456
  1540. }
  1541. @test "MYSQL: Change database user" {
  1542. run v-change-database-user $user $database database
  1543. assert_success
  1544. refute_output
  1545. validate_database mysql $database $database 123456
  1546. }
  1547. @test "MYSQL: Suspend database" {
  1548. run v-suspend-database $user $database
  1549. assert_success
  1550. refute_output
  1551. }
  1552. @test "MYSQL: Unsuspend database" {
  1553. run v-unsuspend-database $user $database
  1554. assert_success
  1555. refute_output
  1556. }
  1557. @test "MYSQL: Delete database" {
  1558. run v-delete-database $user $database
  1559. assert_success
  1560. refute_output
  1561. }
  1562. @test "MYSQL: Delete missing database" {
  1563. run v-delete-database $user $database
  1564. assert_failure $E_NOTEXIST
  1565. }
  1566. @test "PGSQL: Add database invalid user" {
  1567. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1568. skip "PostGreSQL is not installed"
  1569. fi
  1570. run v-add-database "$user" "database" "dbuser" "1234ABCD" "pgsql"
  1571. assert_failure $E_INVALID
  1572. }
  1573. @test "PGSQL: Add database" {
  1574. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1575. skip "PostGreSQL is not installed"
  1576. fi
  1577. run v-add-user $pguser $pguser $user@hestiacp.com default "Super Test"
  1578. run v-add-database "$pguser" "database" "dbuser" "1234ABCD" "pgsql"
  1579. assert_success
  1580. refute_output
  1581. # validate_database pgsql $pgdatabase $pgdbuser "1234ABCD"
  1582. }
  1583. @test "PGSQL: Add Database (Duplicate)" {
  1584. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1585. skip "PostGreSQL is not installed"
  1586. fi
  1587. run v-add-database "$pguser" "database" "dbuser" "1234ABCD" "pgsql"
  1588. assert_failure $E_EXISTS
  1589. }
  1590. @test "PGSQL: Rebuild Database" {
  1591. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1592. skip "PostGreSQL is not installed"
  1593. fi
  1594. run v-rebuild-database $pguser $pgdatabase
  1595. assert_success
  1596. refute_output
  1597. }
  1598. @test "PGSQL: Change database user password" {
  1599. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1600. skip "PostGreSQL is not installed"
  1601. fi
  1602. run v-change-database-password $pguser $pgdatabase "123456"
  1603. assert_success
  1604. refute_output
  1605. # validate_database pgsql $pgdatabase $pgdbuser "123456"
  1606. }
  1607. @test "PGSQL: Suspend database" {
  1608. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1609. skip "PostGreSQL is not installed"
  1610. fi
  1611. run v-suspend-database $pguser $pgdatabase
  1612. assert_success
  1613. refute_output
  1614. }
  1615. @test "PGSQL: Unsuspend database" {
  1616. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1617. skip "PostGreSQL is not installed"
  1618. fi
  1619. run v-unsuspend-database $pguser $pgdatabase
  1620. assert_success
  1621. refute_output
  1622. }
  1623. @test "PGSQL: Change database user" {
  1624. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1625. skip "PostGreSQL is not installed"
  1626. fi
  1627. skip
  1628. run v-change-database-user $pguser $pgdatabase database
  1629. assert_success
  1630. refute_output
  1631. validate_database pgsql $pgdatabase $pgdatabase 123456
  1632. }
  1633. @test "PGSQL: Delete database" {
  1634. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1635. skip "PostGreSQL is not installed"
  1636. fi
  1637. run v-delete-database $pguser $pgdatabase
  1638. assert_success
  1639. refute_output
  1640. }
  1641. @test "PGSQL: Delete missing database" {
  1642. if [ -z "$(echo $DB_SYSTEM | grep -w "pgsql")" ]; then
  1643. skip "PostGreSQL is not installed"
  1644. fi
  1645. run v-delete-database $pguser $pgdatabase
  1646. assert_failure $E_NOTEXIST
  1647. run v-delete-user $pguser
  1648. }
  1649. #----------------------------------------------------------#
  1650. # System #
  1651. #----------------------------------------------------------#
  1652. @test "System: Set/Enable SMTP account for internal mail" {
  1653. run v-add-sys-smtp $domain 587 STARTTLS info@$domain 1234-test noreply@$domain
  1654. assert_success
  1655. refute_output
  1656. }
  1657. @test "System: Disable SMTP account for internal mail" {
  1658. run v-delete-sys-smtp
  1659. assert_success
  1660. refute_output
  1661. }
  1662. @test "System: Set/Enable SMTP relay" {
  1663. run v-add-sys-smtp-relay $domain info@$domain 1234-test 587
  1664. assert_success
  1665. refute_output
  1666. assert_file_exist /etc/exim4/smtp_relay.conf
  1667. }
  1668. @test "System: Delete SMTP relay" {
  1669. run v-delete-sys-smtp-relay
  1670. assert_success
  1671. refute_output
  1672. assert_file_not_exist /etc/exim4/smtp_relay.conf
  1673. }
  1674. #----------------------------------------------------------#
  1675. # Firewall #
  1676. #----------------------------------------------------------#
  1677. @test "Firewall: Add ip to banlist" {
  1678. run v-add-firewall-ban '1.2.3.4' 'HESTIA'
  1679. assert_success
  1680. refute_output
  1681. check_ip_banned '1.2.3.4' 'HESTIA'
  1682. }
  1683. @test "Firewall: Delete ip to banlist" {
  1684. run v-delete-firewall-ban '1.2.3.4' 'HESTIA'
  1685. assert_success
  1686. refute_output
  1687. check_ip_not_banned '1.2.3.4' 'HESTIA'
  1688. }
  1689. @test "Firewall: Add ip to banlist for ALL" {
  1690. run v-add-firewall-ban '1.2.3.4' 'HESTIA'
  1691. assert_success
  1692. refute_output
  1693. run v-add-firewall-ban '1.2.3.4' 'MAIL'
  1694. assert_success
  1695. refute_output
  1696. check_ip_banned '1.2.3.4' 'HESTIA'
  1697. }
  1698. @test "Firewall: Delete ip to banlist CHAIN = ALL" {
  1699. run v-delete-firewall-ban '1.2.3.4' 'ALL'
  1700. assert_success
  1701. refute_output
  1702. check_ip_not_banned '1.2.3.4' 'HESTIA'
  1703. }
  1704. @test "Test Whitelist Fail2ban" {
  1705. echo "1.2.3.4" >> $HESTIA/data/firewall/excludes.conf
  1706. run v-add-firewall-ban '1.2.3.4' 'HESTIA'
  1707. rm $HESTIA/data/firewall/excludes.conf
  1708. check_ip_not_banned '1.2.3.4' 'HESTIA'
  1709. }
  1710. @test "Test create ipset" {
  1711. run v-add-firewall-ipset "country-nl" "https://raw.githubusercontent.com/ipverse/rir-ip/master/country/nl/ipv4-aggregated.txt" v4 yes
  1712. assert_success
  1713. refute_output
  1714. }
  1715. @test "Create firewall with Ipset" {
  1716. run v-add-firewall-rule 'DROP' 'ipset:country-nl' '8083,22' 'TCP' 'Test'
  1717. assert_success
  1718. refute_output
  1719. }
  1720. @test "List firewall rules" {
  1721. run v-list-firewall csv
  1722. assert_success
  1723. assert_line --partial '11,DROP,TCP,8083,22,ipset:country-nl'
  1724. }
  1725. @test "Delete firewall with Ipset" {
  1726. run v-delete-firewall-rule '11'
  1727. assert_success
  1728. refute_output
  1729. }
  1730. @test "Test delete ipset" {
  1731. run v-delete-firewall-ipset "country-nl"
  1732. assert_success
  1733. refute_output
  1734. }
  1735. #----------------------------------------------------------#
  1736. # PACKAGE #
  1737. #----------------------------------------------------------#
  1738. @test "Package: Create new Package" {
  1739. cp $HESTIA/data/packages/default.pkg /tmp/package
  1740. run v-add-user-package /tmp/package hestiatest
  1741. assert_success
  1742. refute_output
  1743. }
  1744. @test "Package: Assign user to new Package" {
  1745. run v-change-user-package $user hestiatest
  1746. assert_success
  1747. refute_output
  1748. }
  1749. @test "Package: Create new package (Duplicate)" {
  1750. sed -i "s/BANDWIDTH='unlimited'/BANDWIDTH='100'/g" /tmp/package
  1751. run v-add-user-package /tmp/package hestiatest
  1752. assert_failure $E_EXISTS
  1753. }
  1754. @test "Package: Update new Package" {
  1755. sed -i "s/BANDWIDTH='unlimited'/BANDWIDTH='100'/g" /tmp/package
  1756. run v-add-user-package /tmp/package hestiatest yes
  1757. assert_success
  1758. refute_output
  1759. }
  1760. @test "Package: Update package of user" {
  1761. run v-change-user-package $user hestiatest
  1762. assert_success
  1763. refute_output
  1764. run grep "BANDWIDTH='100'" $HESTIA/data/users/$user/user.conf
  1765. assert_success
  1766. assert_output --partial "100"
  1767. }
  1768. @test "Package: Copy package Not Exists" {
  1769. run v-copy-user-package hestiadoesnotexists hestiatest2
  1770. assert_failure $E_NOTEXIST
  1771. }
  1772. @test "Package: Copy package" {
  1773. run v-copy-user-package hestiatest hestiatest2
  1774. assert_success
  1775. refute_output
  1776. }
  1777. @test "Package: Copy package Exists" {
  1778. run v-copy-user-package hestiatest hestiatest2
  1779. assert_failure $E_EXISTS
  1780. }
  1781. @test "Package: Delete package" {
  1782. run v-delete-user-package hestiatest
  1783. run v-delete-user-package hestiatest2
  1784. rm /tmp/package
  1785. assert_success
  1786. refute_output
  1787. run grep "BANDWIDTH='unlimited'" $HESTIA/data/users/$user/user.conf
  1788. assert_success
  1789. assert_output --partial "unlimited"
  1790. }
  1791. #----------------------------------------------------------#
  1792. # Backup user #
  1793. #----------------------------------------------------------#
  1794. @test "Backup: Backup user" {
  1795. run v-backup-user $user
  1796. assert_success
  1797. }
  1798. @test "Backup: List Backups" {
  1799. run v-list-user-backups $user plain
  1800. assert_success
  1801. assert_output --partial "$user"
  1802. }
  1803. @test "Backup: Delete backups" {
  1804. run v-delete-user-backup $user $(v-list-user-backups $user plain | cut -f1)
  1805. assert_success
  1806. run rm /backup/$user.log
  1807. }
  1808. #----------------------------------------------------------#
  1809. # Change owner scripts #
  1810. #----------------------------------------------------------#
  1811. @test "Change: Change domain owner" {
  1812. run v-change-domain-owner $domain $user2
  1813. assert_success
  1814. run v-restart-web
  1815. run v-restart-proxy
  1816. }
  1817. @test "Change: Add database" {
  1818. run v-add-database $user database dbuser 1234 mysql
  1819. assert_success
  1820. refute_output
  1821. # validate_database mysql database_name database_user password
  1822. validate_database mysql $database $dbuser 1234
  1823. }
  1824. @test "Change: Change database owner" {
  1825. run v-change-database-owner $database $user2
  1826. assert_success
  1827. validate_database mysql test-5286_database test-5286_dbuser 1234
  1828. }
  1829. @test "Change: Delete database" {
  1830. run v-delete-database $user2 test-5286_database
  1831. assert_success
  1832. refute_output
  1833. }
  1834. #----------------------------------------------------------#
  1835. # CLEANUP #
  1836. #----------------------------------------------------------#
  1837. @test "Mail: Delete domain" {
  1838. run v-delete-mail-domain $user2 $domain
  1839. assert_success
  1840. refute_output
  1841. }
  1842. @test "DNS: Delete domain" {
  1843. run v-delete-dns-domain $user2 $domain
  1844. assert_success
  1845. refute_output
  1846. }
  1847. @test "WEB: Delete domain" {
  1848. run v-delete-web-domain $user2 $domain
  1849. assert_success
  1850. refute_output
  1851. }
  1852. @test "Delete user" {
  1853. run v-delete-user $user
  1854. assert_success
  1855. refute_output
  1856. }
  1857. @test "Delete user2" {
  1858. run v-delete-user $user2
  1859. assert_success
  1860. refute_output
  1861. }
  1862. @test "Ip: Delete the test IP" {
  1863. run v-delete-sys-ip 198.18.0.125
  1864. assert_success
  1865. refute_output
  1866. }
  1867. @test 'assert()' {
  1868. touch '/var/log/test.log'
  1869. assert [ -e '/var/log/test.log' ]
  1870. }