netcdf-c/ncdap_test/testauth.sh
2023-04-04 18:37:20 -06:00

224 lines
5.0 KiB
Bash
Executable File

#!/bin/sh
if test "x$srcdir" = x ; then srcdir=`pwd`; fi
. ../test_common.sh
# Since this involves a shared resource: the .rc files in current working directory,
# we need to isolate from any other test.
# Make sure execdir and srcdir absolute paths are available
WD=`pwd`
cd $srcdir ; abs_srcdir=`pwd` ; cd $WD
cd $execdir ; abs_execdir=`pwd` ; cd $WD
# Now create a special directory
# And enter it to execute tests
rm -fr rcauthdir
mkdir rcauthdir
cd rcauthdir
WD=`pwd`
#SHOW=1
#DBG=1
if test "x$NCAUTH_HOMETEST" != x ; then
RCHOME=1
fi
COOKIES="${WD}/.cookies_test"
RC=.daprc
if test "x$FPISMSVC" = x ; then
NETRC=.netrc_test
NETRCIMP=.netrc
else
NETRC=_netrc_test
NETRCIMP=_netrc
fi
LOCALRCFILES="$WD/.dodsrc $WD/.daprc $WD/.ncrc $WD/$NETRC $WD/$NETRCIMP"
HOMERCFILES="$HOME/.dodsrc $HOME/.daprc $HOME/.ncrc $HOME/$NETRC $HOME/$NETRCIMP"
NETRCFILE=$WD/$NETRC
DAPRCFILE=$WD/$RC
if test "x$FP_ISMSVC" != x ; then
LOCALRCFILES=`${NCPATHCVT} "$LOCALRCFILES"`
HOMERCFILES=`${NCPATHCVT} "$HOMERCFILES"`
NETRCFILE=`${NCPATHCVT} "$NETRCFILE"`
DAPRCFILE=`${NCPATHCVT} "$DAPRCFILE"`
fi
HOMENETRCFILE=$HOME/$NETRC
HOMEDAPRCFILE=$HOME/$RC
if test "x$DBG" = x1 ; then
SHOW=1
fi
# Major parameters
AUTHSERVER="thredds.ucar.edu"
BASICCOMBO="authtester:auth"
URLPATH="thredds/dodsC/test3/testData.nc"
PROTO=https
URLSERVER=${AUTHSERVER}
if test "x$DBG" = x1 ; then
URLPATH="${URLPATH}#log&show=fetch"
fi
# Split the combo
BASICUSER=`echon $BASICCOMBO | cut -d: -f1`
BASICPWD=`echon $BASICCOMBO | cut -d: -f2`
if test "x$TEMP" = x ; then
TEMP="/tmp"
fi
TEMP=`echon "$TEMP" | sed -e "s|/$||"`
LOCALRC=${WD}/$RC
LOCALNETRC=${WD}/$NETRC
HOMERC=${HOME}/$RC
HOMERC=`echon "$HOMERC" | sed -e "s|//|/|g"`
HOMENETRC=${HOME}/$NETRC
HOMENETRC=`echon "$HOMENETRC" | sed -e "s|//|/|g"`
createrc() {
local RCP
local NETRCFILE
RCP="$1"
if test "x$RCP" = x ; then
echo "createrc: no rc specified"
exit 1
fi
shift
NETRCPATH="$1"
echo "Creating rc file $RCP"
if test "x${DBG}" = x1 ; then
echo "HTTP.VERBOSE=1" >>$RCP
fi
if test "x$NETRCPATH" = x ; then
echo "HTTP.CREDENTIALS.USERPASSWORD=${BASICCOMBO}" >>$RCP
elif test "x$NETRCPATH" != ximplicit ; then
echo "HTTP.NETRC=${NETRCPATH}" >>$RCP
elif test "x$NETRCPATH" = ximplicit ; then
echo "HTTP.NETRC=" >>$RCP
fi
echo "HTTP.COOKIEJAR=${COOKIES}" >>$RCP
}
createnetrc() {
local NETRCPATH
NETRCPATH="$1"; # netrc file path
if test "x$NETRCPATH" = x ; then return; fi
echo "Creating netrc file $NETRCPATH"
# echon "${PROTO}://$URLSERVER/$URLPATH" >>$NETRCPATH
echon "machine $URLSERVER" >>$NETRCPATH
echon " login $BASICUSER password $BASICPWD" >>$NETRCPATH
echo "" >>$NETRCPATH
chmod go-rwx $NETRCPATH
}
# Test cases
# Case: !daprc !netrc embedded usr:pwd
rcembed() {
echo "***Testing with embedded user:pwd"
reset
URL="${PROTO}://${BASICCOMBO}@${URLSERVER}/$URLPATH"
# Invoke ncdump to extract a file the URL
${NCDUMP} -h "$URL" > testauthoutput
}
# Case: local daprc no netrc no embed
rclocal1() {
echo "***Testing rc file in local directory"
reset
# Create the rc file in ./
createrc $LOCALRC
# Invoke ncdump to extract a file using the URL
${NCDUMP} -h "$URL" > testauthoutput
}
# Case: local daprc local netrc no embed
rclocal2() {
echo "***Testing rc file + .netrc in local directory"
reset
# Create the rc file and (optional) netrc file in ./
createnetrc $LOCALNETRC
createrc $LOCALRC $LOCALNETRC
# Invoke ncdump to extract a file using the URL
${NCDUMP} -h "$URL" > testauthoutput
}
# Case: home rc no netrc no embed
rchome1() {
echo "***Testing home rc file no netrc in home directory"
reset
# Create the rc file file in ./
createrc $HOMERC
# Invoke ncdump to extract a file the URL
${NCDUMP} -h "$URL" > testauthoutput
}
# Case: home daprc implicit home netrc no embed
rchome2() {
echo "***Testing .netrc file in home directory"
reset
createnetrc $HOME/$NETRCIMP
createrc $HOMERC implicit
# Invoke ncdump to extract a file using the URL
${NCDUMP} -h "$URL" > testauthoutput
}
# Case: local rc explicit netrc no embed
rchome3() {
echo "***Testing local rc file and .netrc explicit in home directory"
reset
# Create the rc file and (optional) netrc file in ./
createnetrc $HOME/$NETRC
createrc $LOCALRC $HOME/$NETRC
# Invoke ncdump to extract a file the URL
${NCDUMP} -h "$URL" > testauthoutput
}
# Case: local rc implicit netrc no embed
rchome4() {
echo "***Testing local rc file and .netrc implicit in home directory"
reset
# Create the rc file and (optional) netrc file in ./
createnetrc $HOME/$NETRCIMP
createrc $LOCALRC implicit
# Invoke ncdump to extract a file the URL
${NCDUMP} -h "$URL" > testauthoutput
}
reset() {
if test "x$RCHOME" = x1 ; then
rm -f $HOMERCFILES
fi
rm -f $LOCALRCFILES
unset DAPRCFILE
rm -f ./testauthoutput
}
rcembed
# Next set tests assume these defaults
URL="${PROTO}://${URLSERVER}/$URLPATH"
rclocal1
rclocal2
# Do not do this unless you know what you are doing
if test "x$RCHOME" = x1 ; then
rchome1
rchome2
rchome3
rchome4
fi
reset
exit