netcdf-c/ncdap_test/testurl.sh
Dennis Heimbigner e632d02041 Re-enable DAP2 authorization tests
The thredds-test server now has some password protected datasets
that can be used to test DAP2 authorization support.
The general location is
````
https://thredds.ucar.edu/thredds/tdscapabilities/authTest.html
````
and specifically:
````
https://thredds.ucar.edu/thredds/dodsC/test3/testData.nc.html
````

This PR replaces old testcases with ncdap_test/testauth.sh.
This testcase allows us to test use of the .dodsrc file and .netrc file
and embedded user+pwd.

As part of this, I had to create a program (ncdap_test/pathcvt.c)
that is essentially the equivalent to cygpath. Given a path in
windows, unix, msys or cygwin format, it converts it to the
equivalent format in one of those four cases.  So it can be used
to convert a cygwin path to a windows path, for example. This is
needed in testpathcvt and testauth to make sure that the paths
in .daprc (e.g. the reference to .netrc) are of the proper
format.

Misc. Other Changes:
1. Fix some memory leaks in libdap2
2. Setting the env variable CURLOPT_VERBOSE allows tracking of curl
   operations.
3. Make tst_charvlenbug be conditional on NC_VLEN_NOTEST.
2021-05-29 21:30:33 -06:00

116 lines
2.4 KiB
Bash
Executable File

#!/bin/sh
NOP=1
NOS=1
NOB=1
#SHOW=1
#DBG=1
#GDB=1
# if this is part of a distcheck action, then this script
# will be executed in a different directory
# than the one containing it; so capture the path to this script
# as the location of the source directory.
# capture the build directory
# Do a hack to remove e.g. c: for CYGWIN
if test "x$srcdir" = x ; then srcdir=`pwd`; fi
. ../test_common.sh
# Figure our dst server; if none, then just stop
DTS=`${execdir}/findtestserver dap2 dts`
if test "x$DTS" = "x" ; then
echo "WARNING: Cannot locate test server for dts"
exit 0
fi
OCLOGFILE=stderr
if test "x$DBG" = x1 ; then
SHOW=1
fi
URL="$DTS/test.03"
PREFIX="[log][show=fetch]"
SUFFIX="log&show=fetch"
BOTHP="[log][show=fetch]"
BOTHS="noprefetch&fetch=disk"
STRLEN="[maxstrlen=16]"
locreset () {
rm -f ./tmp_testurl ./errtmp_testurl
}
buildurl () {
front="$1"
back="$2"
url="${front}${URL}"
if test "x$back" != x ; then
url="${url}#${back}"
fi
}
pass=1
if test "x$GDB" = x1 ; then
NCDUMP="gdb --args $NCDUMP"
fi
# Initialize
locreset
if test "x$NOP" != x1 ; then
echo "***Testing url prefix parameters"
buildurl "$PREFIX" ""
# Invoke ncdump to extract the URL
echo "command: ${NCDUMP} -h $url"
${NCDUMP} -h "$url" >./tmp_testurl 2> ./errtmp_testurl
if test "x${SHOW}" = x1 ; then cat ./tmp ; fi
# Test that maxstrlen works as alias for stringlength
echo "***Testing maxstrlen=stringlength alias"
buildurl "$STRLEN" ""
# Invoke ncdump to extract the URL
echo "command: ${NCDUMP} -h $url"
${NCDUMP} "$url" >./tmp_testurl 2> ./errtmp_testurl
if test "x${SHOW}" = x1 ; then cat ./tmp_testurl ; fi
# Look for the value of maxStrlen in output cdl
if ! fgrep -i "maxstrlen = 16" ./tmp_testurl ; then
echo "***Fail: maxStrlen not recognized"
fgrep -i "maxstrlen16 = 16" ./tmp_testurl > ./errtmp_testurl
fi
fi
locreset
if test "x$NOS" != x1 ; then
echo "***Testing url suffix parameters"
buildurl "" "$SUFFIX"
# Invoke ncdump to extract the URL
${NCDUMP} -h "$url" >./tmp_testurl 2> ./errtmp_testurl
if test "x${SHOW}" = x1 ; then cat ./tmp_testurl ; fi
fi
locreset
if test "x$NOB" != x1 ; then
echo "***Testing url prefix+suffix parameters"
buildurl "$BOTHP" "$BOTHS"
# Invoke ncdump to extract the URL
${NCDUMP} -h "$url" >./tmp_testurl 2> ./errtmp_testurl
if test "x${SHOW}" = x1 ; then cat ./tmp_testurl ; fi
fi
locreset
if test "x$pass" = x0 ; then
echo "***FAIL"
exit 1
fi
echo "***PASS"
exit 0