diff options
Diffstat (limited to 'qa/823')
-rwxr-xr-x | qa/823 | 90 |
1 files changed, 90 insertions, 0 deletions
@@ -0,0 +1,90 @@ +#!/bin/sh +# PCP QA Test No. 823 +# Exercise basic SASL functionality using a custom sasldb. +# +# Copyright (c) 2013 Red Hat. +# + +seq=`basename $0` +echo "QA output created by $seq" + +. ./common.secure + +_get_libpcp_config +$authentication || _notrun "No authentication support available" +for helper in pluginviewer saslpasswd2 sasldblistusers2; do + which $helper >/dev/null 2>&1 || _notrun "SASL $helper tool unavailable" +done +pluginviewer -a | grep 'Plugin "sasldb"' >/dev/null +test $? -eq 0 || _notrun "SASL sasldb auxprop plugin unavailable" +pluginviewer -s -m plain >/dev/null 2>&1 +test $? -eq 0 || _notrun 'No server support for plain authentication' + +cleanup() +{ + # restore any modified pmcd configuration files + for file in $PCP_SASLCONF_DIR/pmcd.conf + do + test -f $file.$seq || continue + $sudo rm -f $file + $sudo mv $file.$seq $file + done + + $sudo $PCP_RC_DIR/pcp restart 2>&1 | _filter_pcp_stop | _filter_pcp_start + _wait_for_pmcd + _wait_for_pmlogger + + $sudo rm -rf $tmp.* +} + +status=1 # failure is the default! +hostname=`hostname` +$sudo rm -rf $tmp.* $seq.full +trap "cleanup; exit \$status" 0 1 2 3 15 + +_filter_listusers2() +{ + sed \ + -e "s/^$username/USER/" \ + -e "s/@$hostname:/@HOST:/" +} + +# real QA test starts here +$sudo mv $PCP_SASLCONF_DIR/pmcd.conf $PCP_SASLCONF_DIR/pmcd.conf.$seq +echo 'mech_list: plain' > $tmp.sasl +echo "sasldb_path: $tmp.passwd.db" >> $tmp.sasl +$sudo mv $tmp.sasl $PCP_SASLCONF_DIR/pmcd.conf +id pcp >/dev/null 2>&1 && $sudo chown pcp:pcp $PCP_SASLCONF_DIR/pmcd.conf + +echo "Creating temporary sasldb, add user running QA to it" +echo y | saslpasswd2 -p -a pmcd -f $tmp.passwd.db $username + +echo "Verify saslpasswd2 has successfully added a new user" +sasldblistusers2 -f $tmp.passwd.db | _filter_listusers2 + +echo "Ensure pmcd can read the password file" +id pcp >/dev/null 2>&1 && $sudo chown pcp:pcp $tmp.passwd.db + +echo "Start pmcd with this shiny new sasldb" +$sudo $PCP_RC_DIR/pcp restart | tee -a $seq.full >$tmp.out +_wait_for_pmcd + +echo "Enabling sample PMDA tracing" +authdbg=`pmdbg -l | grep DBG_TRACE_AUTH | awk '{ print $2 }'` +pmstore sample.control $authdbg + +echo "Verifying SASL authentication for new client (FAIL)" +pmprobe -v -h "pcp://localhost?username=${username}&password=n" sample.control +filter_sample_log_credentials +echo "pmcd.log (from expected FAIL)" >> $seq.full +cat $PCP_LOG_DIR/pmcd/pmcd.log >> $seq.full + +echo "Verifying SASL authentication for new client (PASS)" +pmprobe -v -h "pcp://localhost?username=${username}&password=y" sample.control +filter_sample_log_credentials +echo "pmcd.log (from expected PASS)" >> $seq.full +cat $PCP_LOG_DIR/pmcd/pmcd.log >> $seq.full + +# success, all done +status=0 +exit |