From 4e926e746fb55426b58ecb4b478350a2634d7907 Mon Sep 17 00:00:00 2001 From: Serghey Rodin Date: Tue, 10 Jan 2012 23:52:01 +0200 Subject: [PATCH] Created few test cases --- test/json.sh | 105 ++++++++++++++++++++++++++++++++++++++ test/test_actions.sh | 105 ++++++++++++++++++++++++++++++++++++++ test/test_json_listing.sh | 54 ++++++++++++++++++++ 3 files changed, 264 insertions(+) create mode 100755 test/json.sh create mode 100755 test/test_actions.sh create mode 100755 test/test_json_listing.sh diff --git a/test/json.sh b/test/json.sh new file mode 100755 index 000000000..8cc4665e4 --- /dev/null +++ b/test/json.sh @@ -0,0 +1,105 @@ +# https://github.com/dominictarr/JSON.sh +# Code is licensed under the MIT license +# Copyright (c) 2011 Dominic Tarr + +throw () { + echo "$*" >&2 + exit 1 +} + +tokenize () { + local ESCAPE='(\\[^u[:cntrl:]]|\\u[0-9a-fA-F]{4})' + local CHAR='[^[:cntrl:]"\\]' + local STRING="\"$CHAR*($ESCAPE$CHAR*)*\"" + local NUMBER='-?(0|[1-9][0-9]*)([.][0-9]*)?([eE][+-]?[0-9]*)?' + local KEYWORD='null|false|true' + local SPACE='[[:space:]]+' + egrep -ao "$STRING|$NUMBER|$KEYWORD|$SPACE|." --color=never | + egrep -v "^$SPACE$" # eat whitespace +} + +parse_array () { + local index=0 + local ary='' + read -r token + case "$token" in + ']') ;; + *) + while : + do + parse_value "$1" "$index" + let index=$index+1 + ary="$ary""$value" + read -r token + case "$token" in + ']') break ;; + ',') ary="$ary," ;; + *) throw "EXPECTED , or ] GOT ${token:-EOF}" ;; + esac + read -r token + done + ;; + esac + value=`printf '[%s]' $ary` +} + +parse_object () { + local key + local obj='' + read -r token + case "$token" in + '}') ;; + *) + while : + do + case "$token" in + '"'*'"') key=$token ;; + *) throw "EXPECTED string GOT ${token:-EOF}" ;; + esac + read -r token + case "$token" in + ':') ;; + *) throw "EXPECTED : GOT ${token:-EOF}" ;; + esac + read -r token + parse_value "$1" "$key" + obj="$obj$key:$value" + read -r token + case "$token" in + '}') break ;; + ',') obj="$obj," ;; + *) throw "EXPECTED , or } GOT ${token:-EOF}" ;; + esac + read -r token + done + ;; + esac + value=`printf '{%s}' "$obj"` +} + +parse_value () { + local jpath="${1:+$1,}$2" + case "$token" in + '{') parse_object "$jpath" ;; + '[') parse_array "$jpath" ;; + # At this point, the only valid single-character tokens are digits. + ''|[^0-9]) throw "EXPECTED value GOT ${token:-EOF}" ;; + *) value=$token ;; + esac + printf "[%s]\t%s\n" "$jpath" "$value" +} + +parse () { + read -r token + parse_value + read -r token + case "$token" in + '') ;; + *) throw "EXPECTED EOF GOT $token" ;; + esac +} + +if [ $0 = $BASH_SOURCE ]; +then + tokenize | parse +fi diff --git a/test/test_actions.sh b/test/test_actions.sh new file mode 100755 index 000000000..1e4396bdc --- /dev/null +++ b/test/test_actions.sh @@ -0,0 +1,105 @@ +#!/bin/bash + +# Define some variables +source /etc/profile.d/vesta.sh +V_BIN="$VESTA/bin" +V_TEST="$VESTA/test" + +# Define functions +tmp_user() { + MATRIX='0123456789' + LENGTH=4 + while [ ${n:=1} -le $LENGTH ]; do + rand="$rand${MATRIX:$(($RANDOM%${#MATRIX})):1}" + let n+=1 + done + echo "tmp_$rand" +} + +echo_result() { + echo -en "$1" + echo -en '\033[60G' + echo -n '[' + + if [ "$2" -ne 0 ]; then + echo -n 'FAILED' + echo -n ']' + echo -ne '\r\n' + echo "$4" + echo "RETURN VALUE $2" + cat $3 + else + echo -n ' OK ' + echo -n ']' + fi + echo -ne '\r\n' +} + +# Create random username +user=$(tmp_user) +while [ ! -z "$(grep "^$user:" /etc/passwd)" ]; do + user=$(tmp_user) +done + +# Create random tmpfile +tmpfile=$(mktemp -p /tmp ) + +# Add new user +cmd="v_add_user $user $user $user@vestacp.com default Super Test" +$cmd > $tmpfile 2>> $tmpfile +echo_result "Adding new user $user" "$?" "$tmpfile" "$cmd" + +# Change system shell +cmd="v_change_user_shell $user bash" +$cmd > $tmpfile 2>> $tmpfile +echo_result "Changing system shell to /bin/bash" "$?" "$tmpfile" "$cmd" + +# Change name servers +cmd="v_change_user_ns $user ns0.com ns1.com ns2.com ns3.com" +$cmd > $tmpfile 2>> $tmpfile +echo_result "Changing nameservers" "$?" "$tmpfile" "$cmd" + +# Add cron job +cmd="v_add_cron_job $user 1 1 1 1 1 echo" +$cmd > $tmpfile 2>> $tmpfile +echo_result "Adding cron job" "$?" "$tmpfile" "$cmd" + +# Suspend cron job +cmd="v_suspend_cron_job $user 1" +$cmd > $tmpfile 2>> $tmpfile +echo_result "Suspending cron job" "$?" "$tmpfile" "$cmd" + +# Unsuspend cron job +cmd="v_unsuspend_cron_job $user 1" +$cmd > $tmpfile 2>> $tmpfile +echo_result "Unsuspending cron job" "$?" "$tmpfile" "$cmd" + +# Delete cron job +cmd="v_delete_cron_job $user 1" +$cmd > $tmpfile 2>> $tmpfile +echo_result "Deleting cron job" "$?" "$tmpfile" "$cmd" + +# Add cron job +cmd="v_add_cron_job $user 1 1 1 1 1 echo 1" +$cmd > $tmpfile 2>> $tmpfile +echo_result "Adding cron job" "$?" "$tmpfile" "$cmd" + +# Add cron job +cmd="v_add_cron_job $user 1 1 1 1 1 echo 1" +$cmd > $tmpfile 2>> $tmpfile +if [ "$?" -eq 4 ]; then + retval=0 +else + retval=1 +fi +echo_result "Dublicate cron job check" "$retval" "$tmpfile" "$cmd" + +# Check ip +#cat /proc/net/dev|cut -f 1 -d :|tail -n1 +#v_add_sys_ip 192.168.11.11 255.255.255.255 venet0 ekho + +# Delete new user +cmd="v_delete_user $user" +$cmd > $tmpfile 2>> $tmpfile +echo_result "Deleting user $user" "$?" "$tmpfile" "$cmd" + diff --git a/test/test_json_listing.sh b/test/test_json_listing.sh new file mode 100755 index 000000000..e8a35d67b --- /dev/null +++ b/test/test_json_listing.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +source /etc/profile.d/vesta.sh + +V_BIN="$VESTA/bin" +V_TEST="$VESTA/test" + +commands='v_list_cron_jobs vesta json +v_list_db_bases vesta json +v_list_db_base vesta vesta_read json +v_list_db_host mysql localhost json +v_list_db_hosts mysql json +v_list_dns_domains vesta json +v_list_dns_templates json +v_list_sys_config json +v_list_sys_interfaces json +v_list_sys_ips json +v_list_sys_rrd json +v_list_user vesta json +v_list_user_backups vesta json +v_list_user_ips vesta json +v_list_user_ns vesta json +v_list_user_packages json +v_list_users json +v_list_web_domains vesta json +v_list_web_domain vesta default.vesta.domain json +v_list_web_templates vesta json' + +IFS=$'\n' +for cmd in $commands; do + script=$(echo $cmd |cut -f 1 -d ' ') + arg1=$(echo $cmd |cut -f 2 -d ' ') + arg2=$(echo $cmd |cut -f 3 -d ' ') + arg3=$(echo $cmd |cut -f 4 -d ' ') + $V_BIN/$script $arg1 $arg2 $arg3 | $V_TEST/json.sh >/dev/null 2>/dev/null + retval="$?" + echo -en "$cmd" + echo -en '\033[60G' + echo -n '[' + + if [ "$retval" -ne 0 ]; then + echo -n 'FAILED' + echo -n ']' + echo -ne '\r\n' + $V_BIN/$script $arg1 $arg2 $arg3 | $V_TEST/json.sh + else + echo -n ' OK ' + echo -n ']' + fi + echo -ne '\r\n' + +done + +exit