test.bats 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398
  1. #!/usr/bin/env bats
  2. load 'test_helper/bats-support/load'
  3. load 'test_helper/bats-assert/load'
  4. load 'test_helper/bats-file/load'
  5. function random() {
  6. MATRIX='0123456789'
  7. LENGTH=$1
  8. while [ ${n:=1} -le $LENGTH ]; do
  9. rand="$rand${MATRIX:$(($RANDOM%${#MATRIX})):1}"
  10. let n+=1
  11. done
  12. echo "$rand"
  13. }
  14. function setup() {
  15. # echo "# Setup_file" > &3
  16. if [ $BATS_TEST_NUMBER = 1 ]; then
  17. echo 'user=test-5285' > /tmp/hestia-test-env.sh
  18. echo 'userpass1=test-5285' >> /tmp/hestia-test-env.sh
  19. echo 'userpass2=t3st-p4ssw0rd' >> /tmp/hestia-test-env.sh
  20. echo 'HESTIA=/usr/local/hestia' >> /tmp/hestia-test-env.sh
  21. echo 'domain=test-5285.hestiacp.com' >> /tmp/hestia-test-env.sh
  22. fi
  23. source /tmp/hestia-test-env.sh
  24. source $HESTIA/func/main.sh
  25. }
  26. #----------------------------------------------------------#
  27. # MAIN #
  28. #----------------------------------------------------------#
  29. @test "Add new userXXX" {
  30. skip
  31. run v-add-user $user $user $user@hestiacp.com default Super Test
  32. assert_success
  33. refute_output
  34. }
  35. #----------------------------------------------------------#
  36. # User #
  37. #----------------------------------------------------------#
  38. @test "Add new user" {
  39. run v-add-user $user $user $user@hestiacp.com default Super Test
  40. assert_success
  41. refute_output
  42. }
  43. @test "Change user password" {
  44. run v-change-user-password "$user" t3st-p4ssw0rd
  45. assert_success
  46. refute_output
  47. }
  48. @test "Change user email" {
  49. run v-change-user-contact "$user" tester@hestiacp.com
  50. assert_success
  51. refute_output
  52. }
  53. @test "Change user contact invalid email " {
  54. run v-change-user-contact "$user" testerhestiacp.com
  55. assert_failure $E_INVALID
  56. assert_output --partial 'Error: invalid email format'
  57. }
  58. @test "Change user shell" {
  59. run v-change-user-shell $user bash
  60. assert_success
  61. refute_output
  62. }
  63. @test "Change user invalid shell" {
  64. run v-change-user-shell $user bashinvalid
  65. assert_failure $E_INVALID
  66. assert_output --partial 'shell bashinvalid is not valid'
  67. }
  68. @test "Change user default ns" {
  69. run v-change-user-ns $user ns0.com ns1.com ns2.com ns3.com
  70. assert_success
  71. refute_output
  72. run v-list-user-ns "$user" plain
  73. assert_success
  74. assert_output --partial 'ns0.com'
  75. }
  76. #----------------------------------------------------------#
  77. # Cron #
  78. #----------------------------------------------------------#
  79. @test "Cron: Add cron job" {
  80. run v-add-cron-job $user 1 1 1 1 1 echo
  81. assert_success
  82. refute_output
  83. }
  84. @test "Cron: Suspend cron job" {
  85. run v-suspend-cron-job $user 1
  86. assert_success
  87. refute_output
  88. }
  89. @test "Cron: Unsuspend cron job" {
  90. run v-unsuspend-cron-job $user 1
  91. assert_success
  92. refute_output
  93. }
  94. @test "Cron: Delete cron job" {
  95. run v-delete-cron-job $user 1
  96. assert_success
  97. refute_output
  98. }
  99. @test "Cron: Add cron job (duplicate)" {
  100. run v-add-cron-job $user 1 1 1 1 1 echo 1
  101. assert_success
  102. refute_output
  103. run v-add-cron-job $user 1 1 1 1 1 echo 1
  104. assert_failure $E_EXISTS
  105. assert_output --partial 'JOB=1 is already exists'
  106. }
  107. @test "Cron: Second cron job" {
  108. run v-add-cron-job $user 2 2 2 2 2 echo 2
  109. assert_success
  110. refute_output
  111. }
  112. @test "Cron: Two cron jobs must be listed" {
  113. run v-list-cron-jobs $user csv
  114. assert_success
  115. assert_line --partial '1,1,1,1,1,"echo",no'
  116. assert_line --partial '2,2,2,2,2,"echo",no'
  117. }
  118. @test "Cron: rebuild" {
  119. run v-rebuild-cron-jobs $user
  120. assert_success
  121. refute_output
  122. }
  123. #----------------------------------------------------------#
  124. # IP #
  125. #----------------------------------------------------------#
  126. @test "Ip: Add new ip on first interface" {
  127. interface=$(v-list-sys-interfaces plain | head -n 1)
  128. run ip link show dev $interface
  129. assert_success
  130. echo "interface=${interface}" >> /tmp/hestia-test-env.sh
  131. run v-add-sys-ip 198.18.0.123 255.255.255.255 $interface $user
  132. assert_success
  133. refute_output
  134. }
  135. @test "Ip: Add duplicate (duplicat)" {
  136. run v-add-sys-ip 198.18.0.123 255.255.255.255 $interface $user
  137. assert_failure $E_EXISTS
  138. }
  139. @test "Ip: Delete ip" {
  140. run v-delete-sys-ip 198.18.0.123
  141. assert_success
  142. refute_output
  143. }
  144. @test "Ip: Add IP for rest of the test" {
  145. run v-add-sys-ip 198.18.0.125 255.255.255.255 $interface $user
  146. assert_success
  147. refute_output
  148. }
  149. #----------------------------------------------------------#
  150. # WEB #
  151. #----------------------------------------------------------#
  152. @test "WEB: Add web domain" {
  153. run v-add-web-domain $user $domain 198.18.0.125
  154. assert_success
  155. refute_output
  156. }
  157. @test "WEB: Add web domain (duplicate)" {
  158. run v-add-web-domain $user $domain 198.18.0.125
  159. assert_failure $E_EXISTS
  160. }
  161. @test "WEB: Add web domain alias" {
  162. run v-add-web-domain-alias $user $domain v3.$domain
  163. assert_success
  164. refute_output
  165. }
  166. @test "WEB: Add web domain alias (duplicate)" {
  167. run v-add-web-domain-alias $user $domain v3.$domain
  168. assert_failure $E_EXISTS
  169. }
  170. @test "WEB: Add web domain stats" {
  171. run v-add-web-domain-stats $user $domain awstats
  172. assert_success
  173. refute_output
  174. }
  175. @test "WEB: Add web domain stats user" {
  176. skip
  177. run v-add-web-domain-stats-user $user $domain test m3g4p4ssw0rd
  178. assert_success
  179. refute_output
  180. }
  181. @test "WEB: Suspend web domain" {
  182. run v-suspend-web-domain $user $domain
  183. assert_success
  184. refute_output
  185. }
  186. @test "WEB: Unsuspend web domain" {
  187. run v-unsuspend-web-domain $user $domain
  188. assert_success
  189. refute_output
  190. }
  191. @test "WEB: Add ssl" {
  192. cp -f $HESTIA/ssl/certificate.crt /tmp/$domain.crt
  193. cp -f $HESTIA/ssl/certificate.key /tmp/$domain.key
  194. run v-add-web-domain-ssl $user $domain /tmp
  195. assert_success
  196. refute_output
  197. }
  198. @test "WEB: Rebuild web domain" {
  199. run v-rebuild-web-domains $user
  200. assert_success
  201. refute_output
  202. }
  203. #----------------------------------------------------------#
  204. # DNS #
  205. #----------------------------------------------------------#
  206. @test "DNS: Add domain" {
  207. run v-add-dns-domain $user $domain 198.18.0.125
  208. assert_success
  209. refute_output
  210. }
  211. @test "DNS: Add domain (duplicate)" {
  212. run v-add-dns-domain $user $domain 198.18.0.125
  213. assert_failure $E_EXISTS
  214. }
  215. @test "DNS: Add domain record" {
  216. run v-add-dns-record $user $domain test A 198.18.0.125 20
  217. assert_success
  218. refute_output
  219. }
  220. @test "DNS: Delete domain record" {
  221. run v-delete-dns-record $user $domain 20
  222. assert_success
  223. refute_output
  224. }
  225. @test "DNS: Delete missing domain record" {
  226. run v-delete-dns-record $user $domain 20
  227. assert_failure $E_NOTEXIST
  228. }
  229. @test "DNS: Change domain expire date" {
  230. run v-change-dns-domain-exp $user $domain 2020-01-01
  231. assert_success
  232. refute_output
  233. }
  234. @test "DNS: Change domain ip" {
  235. run v-change-dns-domain-ip $user $domain 127.0.0.1
  236. assert_success
  237. refute_output
  238. }
  239. @test "DNS: Suspend domain" {
  240. run v-suspend-dns-domain $user $domain
  241. assert_success
  242. refute_output
  243. }
  244. @test "DNS: Unsuspend domain" {
  245. run v-unsuspend-dns-domain $user $domain
  246. assert_success
  247. refute_output
  248. }
  249. @test "DNS: Rebuild" {
  250. run v-rebuild-dns-domains $user
  251. assert_success
  252. refute_output
  253. }
  254. #----------------------------------------------------------#
  255. # MAIL #
  256. #----------------------------------------------------------#
  257. @test "MAIL: Add domain" {
  258. run v-add-mail-domain $user $domain
  259. assert_success
  260. refute_output
  261. }
  262. @test "MAIL: Add domain (duplicate)" {
  263. run v-add-mail-domain $user $domain
  264. assert_failure $E_EXISTS
  265. }
  266. @test "MAIL: Add account" {
  267. run v-add-mail-account $user $domain test t3st-p4ssw0rd
  268. assert_success
  269. refute_output
  270. }
  271. @test "MAIL: Add account (duplicate)" {
  272. run v-add-mail-account $user $domain test t3st-p4ssw0rd
  273. assert_failure $E_EXISTS
  274. }
  275. @test "MAIL: Delete account" {
  276. run v-delete-mail-account $user $domain test
  277. assert_success
  278. refute_output
  279. }
  280. @test "MAIL: Delete missing account" {
  281. run v-delete-mail-account $user $domain test
  282. assert_failure $E_NOTEXIST
  283. }
  284. #----------------------------------------------------------#
  285. # DB #
  286. #----------------------------------------------------------#
  287. #----------------------------------------------------------#
  288. # CLEANUP #
  289. #----------------------------------------------------------#
  290. @test "Mail: Delete domain" {
  291. # skip
  292. run v-delete-mail-domain $user $domain
  293. assert_success
  294. refute_output
  295. }
  296. @test "DNS: Delete domain" {
  297. # skip
  298. run v-delete-dns-domain $user $domain
  299. assert_success
  300. refute_output
  301. }
  302. @test "WEB: Delete domain" {
  303. # skip
  304. run v-delete-web-domain $user $domain
  305. assert_success
  306. refute_output
  307. }
  308. @test "Delete user" {
  309. # skip
  310. run v-delete-user $user
  311. assert_success
  312. refute_output
  313. }
  314. @test "Ip: Delete the test IP" {
  315. # skip
  316. run v-delete-sys-ip 198.18.0.125
  317. assert_success
  318. refute_output
  319. }
  320. @test 'assert()' {
  321. touch '/var/log/test.log'
  322. assert [ -e '/var/log/test.log' ]
  323. }