summaryrefslogtreecommitdiffstats
path: root/security/nss/tests/multinit/multinit.sh
diff options
context:
space:
mode:
Diffstat (limited to 'security/nss/tests/multinit/multinit.sh')
-rwxr-xr-xsecurity/nss/tests/multinit/multinit.sh158
1 files changed, 158 insertions, 0 deletions
diff --git a/security/nss/tests/multinit/multinit.sh b/security/nss/tests/multinit/multinit.sh
new file mode 100755
index 000000000..6ec605f0e
--- /dev/null
+++ b/security/nss/tests/multinit/multinit.sh
@@ -0,0 +1,158 @@
+#! /bin/sh
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+########################################################################
+#
+# mozilla/security/nss/tests/multinit/multinit.sh
+#
+# Script to test NSS multinit
+#
+# needs to work on all Unix and Windows platforms
+#
+# special strings
+# ---------------
+# FIXME ... known problems, search for this string
+# NOTE .... unexpected behavior
+#
+########################################################################
+
+############################## multinit_init ##############################
+# local shell function to initialize this script
+########################################################################
+multinit_init()
+{
+ SCRIPTNAME=multinit.sh # sourced - $0 would point to all.sh
+
+ if [ -z "${CLEANUP}" ] ; then # if nobody else is responsible for
+ CLEANUP="${SCRIPTNAME}" # cleaning this script will do it
+ fi
+
+ if [ -z "${INIT_SOURCED}" -o "${INIT_SOURCED}" != "TRUE" ]; then
+ cd ../common
+ . ./init.sh
+ fi
+ if [ ! -r $CERT_LOG_FILE ]; then # we need certificates here
+ cd ../cert
+ . ./cert.sh
+ fi
+ SCRIPTNAME=multinit.sh
+
+ html_head "MULTI Tests"
+
+ grep "SUCCESS: SMIME passed" $CERT_LOG_FILE >/dev/null || {
+ Exit 11 "Fatal - S/MIME of cert.sh needs to pass first"
+ }
+
+ # set up our directories
+ MULTINITDIR=${HOSTDIR}/multinit
+ MULTINITDIR_1=${MULTINITDIR}/dir1
+ MULTINITDIR_2=${MULTINITDIR}/dir2
+ MULTINITDIR_3=${MULTINITDIR}/dir3
+ R_MULINITDIR=../multinit
+ R_MULTINITDIR_1=${R_MULTINITDIR}/dir1
+ R_MULTINITDIR_2=${R_MULTINITDIR}/dir2
+ R_MULTINITDIR_3=${R_MULTINITDIR}/dir3
+ # first create them all
+ mkdir -p ${MULTINITDIR}
+ mkdir -p ${MULTINITDIR_1}
+ mkdir -p ${MULTINITDIR_2}
+ mkdir -p ${MULTINITDIR_3}
+ # now copy them fro alice, bob, and dave
+ cd ${MULTINITDIR}
+ cp ${P_R_ALICEDIR}/* ${MULTINITDIR_1}/
+ cp ${P_R_BOBDIR}/* ${MULTINITDIR_2}/
+ cp ${P_R_DAVEDIR}/* ${MULTINITDIR_3}/
+ # finally delete the RootCerts module to keep the certificate noice in the
+ # summary lines down
+ echo | modutil -delete RootCerts -dbdir ${MULTINITDIR_1}
+ echo | modutil -delete RootCerts -dbdir ${MULTINITDIR_2}
+ echo | modutil -delete RootCerts -dbdir ${MULTINITDIR_3}
+ MULTINIT_TESTS=${QADIR}/multinit/multinit.txt
+}
+
+
+############################## multinit_main ##############################
+# local shell function to test basic signed and enveloped messages
+# from 1 --> 2"
+########################################################################
+multinit_main()
+{
+ html_head "Multi init interface testing"
+ exec < ${MULTINIT_TESTS}
+ while read order commands shutdown_type dirs readonly testname
+ do
+ if [ "$order" != "#" ]; then
+ read tag expected_result
+
+ # handle the case where we expect different results based on
+ # the database type.
+ if [ "$tag" != "all" ]; then
+ read tag2 expected_result2
+ if [ "$NSS_DEFAULT_DB_TYPE" == "$tag2" ]; then
+ expected_result=$expected_result2
+ fi
+ fi
+
+ # convert shutdown type to option flags
+ shutdown_command="";
+ if [ "$shutdown_type" == "old" ]; then
+ shutdown_command="--oldStype"
+ fi
+
+ # convert read only to option flags
+ ro_command="";
+ case $readonly in
+ all) ro_command="--main_readonly --lib1_readonly --lib2_readonly";;
+ libs) ro_command="--lib1_readonly --lib2_readonly";;
+ main) ro_command="--main_readonly";;
+ lib1) ro_command="--lib1_readonly";;
+ lib2) ro_command="--lib2_readonly";;
+ none) ;;
+ *) ;;
+ esac
+
+ # convert commands to option flags
+ main_command=`echo $commands | sed -e 's;,.*$;;'`
+ lib1_command=`echo $commands | sed -e 's;,.*,;+&+;' -e 's;^.*+,;;' -e 's;,+.*$;;'`
+ lib2_command=`echo $commands | sed -e 's;^.*,;;'`
+
+ # convert db's to option flags
+ main_db=`echo $dirs | sed -e 's;,.*$;;'`
+ lib1_db=`echo $dirs | sed -e 's;,.*,;+&+;' -e 's;^.*+,;;' -e 's;,+.*$;;'`
+ lib2_db=`echo $dirs | sed -e 's;^.*,;;'`
+
+ # show us the command we are executing
+ echo ${PROFILETOOL} ${BINDIR}/multinit --order $order --main_command $main_command --lib1_command $lib1_command --lib2_command $lib2_command $shutdown_command --main_db $main_db --lib1_db $lib1_db --lib2_db $lib2_db $ro_command --main_token_name "Main" --lib1_token_name "Lib1" --lib2_token_name "Lib2" --verbose --summary
+
+ # execute the command an collect the result. Most of the user
+ # visible output goes to stderr, so it's not captured by the pipe
+ actual_result=`${PROFILETOOL} ${BINDIR}/multinit --order $order --main_command $main_command --lib1_command $lib1_command --lib2_command $lib2_command $shutdown_command --main_db $main_db --lib1_db $lib1_db --lib2_db $lib2_db $ro_command --main_token_name "Main" --lib1_token_name "Lib1" --lib2_token_name "Lib2" --verbose --summary | grep "^result=" | sed -e 's;^result=;;'`
+
+ # show what we got and what we expected for diagnostic purposes
+ echo "actual = |$actual_result|"
+ echo "expected = |$expected_result|"
+ test "$actual_result" == "$expected_result"
+ html_msg $? 0 "$testname"
+ fi
+ done
+}
+
+############################## multinit_cleanup ###########################
+# local shell function to finish this script (no exit since it might be
+# sourced)
+########################################################################
+multinit_cleanup()
+{
+ html "</TABLE><BR>"
+ cd ${QADIR}
+ . common/cleanup.sh
+}
+
+################## main #################################################
+
+multinit_init
+multinit_main
+multinit_cleanup