Imported libcurl source code.

This commit is contained in:
David Anderson
2009-01-08 18:31:00 -05:00
parent ccc59ecdaf
commit 489d6c5a65
1186 changed files with 336917 additions and 0 deletions
@@ -0,0 +1,5 @@
# $Id: DISABLED,v 1.36 2008-10-21 07:10:25 danf Exp $
# This file can be used to specify test cases that should not run when all
# test cases are run by runtests.pl. Just add the plain test case numbers, one
# per line.
# Lines starting with '#' letters are treated as comments.
@@ -0,0 +1,81 @@
iall:
install:
test:
EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \
test10 test109 test118 test13 test200 test28 test36 test47 test100 test11 \
test119 test14 test201 test29 test37 test5 test101 test110 test12 test15 \
test202 test3 test4 test6 test102 test111 test120 test16 test21 test30 \
test7 test103 test112 test121 test17 test22 test300 test8 test104 test113 \
test122 test18 test23 test301 test9 test105 test114 test123 test19 test24 \
test302 test43 test31 test106 test115 test124 test190 test25 test303 \
test44 test38 test107 test116 test125 test2 test26 test33 test45 test126 \
test304 test39 test32 test128 test48 test306 test130 test131 test132 \
test133 test134 test135 test305 test49 test50 test51 test52 test53 test54 \
test55 test56 test500 test501 test502 test503 test504 test136 test57 \
test137 test138 test58 test139 test140 test141 test59 test60 test61 \
test142 test143 test62 test63 test64 test65 test66 test144 test145 test67 \
test68 test41 test40 test42 test69 test70 test71 test72 test73 test146 \
test505 test74 test75 test76 test77 test78 test147 test148 test506 test79 \
test80 test81 test82 test83 test84 test85 test86 test87 test507 test149 \
test88 test89 test90 test508 test91 test92 test203 test93 test94 test95 \
test510 test97 test98 test99 test150 test151 test152 test153 \
test154 test155 test156 test157 test158 test159 test511 test160 test161 \
test162 test163 test164 test512 test165 test166 test167 test168 test169 \
test170 test171 test172 test204 test205 test173 test174 test175 test176 \
test177 test513 test514 test178 test179 test180 test181 test182 test183 \
test184 test185 test186 test187 test188 test189 test191 test192 test193 \
test194 test195 test196 test197 test198 test515 test516 test517 test518 \
test210 test211 test212 test220 test221 test222 test223 test224 test206 \
test207 test208 test209 test213 test240 test241 test242 test519 test214 \
test215 test216 test217 test218 test199 test225 test226 test227 test228 \
test229 test233 test234 test235 test236 test520 test237 test238 test239 \
test243 test245 test246 test247 test248 test249 test250 test251 test252 \
test253 test254 test255 test521 test522 test523 test256 test257 test258 \
test259 test260 test261 test262 test263 test264 test265 test266 test267 \
test268 test269 test270 test271 test272 test273 test274 test275 test524 \
test525 test276 test277 test526 test527 test528 test530 DISABLED test278 \
test279 test531 test280 test529 test532 test533 test534 test535 test281 \
test537 test282 test283 test284 test538 test285 test286 test307 test308 \
test287 test400 test288 test600 test601 test602 test603 test401 test402 \
test290 test291 test292 test293 test403 test404 test405 test604 test605 \
test606 test607 test608 test609 test294 test295 test296 test297 test298 \
test610 test611 test612 test406 test407 test408 test409 test613 test614 \
test700 test701 test702 test704 test705 test703 test706 test707 test350 \
test351 test352 test353 test289 test540 test354 test231 test1000 test1001 \
test1002 test1003 test1004 test1005 test1006 test615 test1007 test541 \
test1010 test1011 test1012 test542 test543 test536 test1008 test1009 \
test2000 test2001 test2002 test2003 test35 test544 test545 test2004 \
test546 test1013 test1014 test1015 test547 test548 test549 test550 \
test551 test552 test1016 test1017 test1018 test1019 test1020 test553 \
test1021 test1022 test1023 test309 test616 test617 test618 test619 \
test620 test621 test622 test623 test624 test625 test626 test627 test554 \
test1024 test1025 test555 test1026 test1027 test1028 test1029 test1030 \
test556 test557 test1031 test628 test629 test630 test631 test632 test1032 \
test1033 test539 test1034 test1035 test1036 test1037 test1038 test1039 \
test1040 test1041 test1042 test1043 test1044 test1045 test1046 test1047 \
test1048 test1049 test1050 test1051 test1052 test1053 test1054 test1055 \
test1056 test1057 test1058 test1059 test1060 test1061 test1062 test1063 \
test1064 test1065 test1066 test1067 test1068 test1069 test1070 test1071 \
test1072 test1073 test1074 test1075 test1076 test1077 test1078 test1079 \
test1080 test1081 test1082 test1083 test1084 test1085 test633 test634 \
test635 test636 test637 test558 test559 test1086
filecheck:
@mkdir test-place; \
cp "$(top_srcdir)"/tests/data/test[0-9]* test-place/; \
rm test-place/*~; \
for f in $(EXTRA_DIST); do \
if test -f "$(top_srcdir)/tests/data/$$f"; then \
rm -f "test-place/$$f"; \
else \
echo "$$f is listed but missing!"; \
fi \
done; \
echo "Local files not present in EXTRA_DIST:" ; \
ls test-place; \
! ls test-place | grep . >/dev/null ; \
RC=$$? ; \
rm -rf test-place ; \
exit $$RC
@@ -0,0 +1,450 @@
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ../..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = tests/data
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
$(top_srcdir)/m4/curl-confopts.m4 \
$(top_srcdir)/m4/curl-functions.m4 \
$(top_srcdir)/m4/curl-reentrant.m4 $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/lib/config.h \
$(top_builddir)/src/config.h \
$(top_builddir)/include/curl/curlbuild.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AR = @AR@
AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CROSSCOMPILING_FALSE = @CROSSCOMPILING_FALSE@
CROSSCOMPILING_TRUE = @CROSSCOMPILING_TRUE@
CURL_CA_BUNDLE = @CURL_CA_BUNDLE@
CURL_DISABLE_DICT = @CURL_DISABLE_DICT@
CURL_DISABLE_FILE = @CURL_DISABLE_FILE@
CURL_DISABLE_FTP = @CURL_DISABLE_FTP@
CURL_DISABLE_HTTP = @CURL_DISABLE_HTTP@
CURL_DISABLE_LDAP = @CURL_DISABLE_LDAP@
CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
CURL_LIBS = @CURL_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
GREP = @GREP@
HAVE_ARES = @HAVE_ARES@
HAVE_LIBZ = @HAVE_LIBZ@
HAVE_LIBZ_FALSE = @HAVE_LIBZ_FALSE@
HAVE_LIBZ_TRUE = @HAVE_LIBZ_TRUE@
HAVE_PK11_CREATEGENERICOBJECT = @HAVE_PK11_CREATEGENERICOBJECT@
IDN_ENABLED = @IDN_ENABLED@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
IPV6_ENABLED = @IPV6_ENABLED@
KRB4_ENABLED = @KRB4_ENABLED@
LDFLAGS = @LDFLAGS@
LIBCURL_LIBS = @LIBCURL_LIBS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
MANOPT = @MANOPT@
MIMPURE_FALSE = @MIMPURE_FALSE@
MIMPURE_TRUE = @MIMPURE_TRUE@
NMEDIT = @NMEDIT@
NO_UNDEFINED_FALSE = @NO_UNDEFINED_FALSE@
NO_UNDEFINED_TRUE = @NO_UNDEFINED_TRUE@
NROFF = @NROFF@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
PKGADD_NAME = @PKGADD_NAME@
PKGADD_PKG = @PKGADD_PKG@
PKGADD_VENDOR = @PKGADD_VENDOR@
PKGCONFIG = @PKGCONFIG@
RANDOM_FILE = @RANDOM_FILE@
RANLIB = @RANLIB@
REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SONAME_BUMP_FALSE = @SONAME_BUMP_FALSE@
SONAME_BUMP_TRUE = @SONAME_BUMP_TRUE@
SSL_ENABLED = @SSL_ENABLED@
STATICLIB_FALSE = @STATICLIB_FALSE@
STATICLIB_TRUE = @STATICLIB_TRUE@
STRIP = @STRIP@
SUPPORT_FEATURES = @SUPPORT_FEATURES@
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
TEST_SERVER_LIBS = @TEST_SERVER_LIBS@
USE_GNUTLS = @USE_GNUTLS@
USE_LIBSSH2 = @USE_LIBSSH2@
USE_MANUAL_FALSE = @USE_MANUAL_FALSE@
USE_MANUAL_TRUE = @USE_MANUAL_TRUE@
USE_NSS = @USE_NSS@
USE_SSLEAY = @USE_SSLEAY@
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
VERSION = @VERSION@
VERSIONNUM = @VERSIONNUM@
ac_ct_CC = @ac_ct_CC@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
libext = @libext@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
subdirs = @subdirs@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \
test10 test109 test118 test13 test200 test28 test36 test47 test100 test11 \
test119 test14 test201 test29 test37 test5 test101 test110 test12 test15 \
test202 test3 test4 test6 test102 test111 test120 test16 test21 test30 \
test7 test103 test112 test121 test17 test22 test300 test8 test104 test113 \
test122 test18 test23 test301 test9 test105 test114 test123 test19 test24 \
test302 test43 test31 test106 test115 test124 test190 test25 test303 \
test44 test38 test107 test116 test125 test2 test26 test33 test45 test126 \
test304 test39 test32 test128 test48 test306 test130 test131 test132 \
test133 test134 test135 test305 test49 test50 test51 test52 test53 test54 \
test55 test56 test500 test501 test502 test503 test504 test136 test57 \
test137 test138 test58 test139 test140 test141 test59 test60 test61 \
test142 test143 test62 test63 test64 test65 test66 test144 test145 test67 \
test68 test41 test40 test42 test69 test70 test71 test72 test73 test146 \
test505 test74 test75 test76 test77 test78 test147 test148 test506 test79 \
test80 test81 test82 test83 test84 test85 test86 test87 test507 test149 \
test88 test89 test90 test508 test91 test92 test203 test93 test94 test95 \
test510 test97 test98 test99 test150 test151 test152 test153 \
test154 test155 test156 test157 test158 test159 test511 test160 test161 \
test162 test163 test164 test512 test165 test166 test167 test168 test169 \
test170 test171 test172 test204 test205 test173 test174 test175 test176 \
test177 test513 test514 test178 test179 test180 test181 test182 test183 \
test184 test185 test186 test187 test188 test189 test191 test192 test193 \
test194 test195 test196 test197 test198 test515 test516 test517 test518 \
test210 test211 test212 test220 test221 test222 test223 test224 test206 \
test207 test208 test209 test213 test240 test241 test242 test519 test214 \
test215 test216 test217 test218 test199 test225 test226 test227 test228 \
test229 test233 test234 test235 test236 test520 test237 test238 test239 \
test243 test245 test246 test247 test248 test249 test250 test251 test252 \
test253 test254 test255 test521 test522 test523 test256 test257 test258 \
test259 test260 test261 test262 test263 test264 test265 test266 test267 \
test268 test269 test270 test271 test272 test273 test274 test275 test524 \
test525 test276 test277 test526 test527 test528 test530 DISABLED test278 \
test279 test531 test280 test529 test532 test533 test534 test535 test281 \
test537 test282 test283 test284 test538 test285 test286 test307 test308 \
test287 test400 test288 test600 test601 test602 test603 test401 test402 \
test290 test291 test292 test293 test403 test404 test405 test604 test605 \
test606 test607 test608 test609 test294 test295 test296 test297 test298 \
test610 test611 test612 test406 test407 test408 test409 test613 test614 \
test700 test701 test702 test704 test705 test703 test706 test707 test350 \
test351 test352 test353 test289 test540 test354 test231 test1000 test1001 \
test1002 test1003 test1004 test1005 test1006 test615 test1007 test541 \
test1010 test1011 test1012 test542 test543 test536 test1008 test1009 \
test2000 test2001 test2002 test2003 test35 test544 test545 test2004 \
test546 test1013 test1014 test1015 test547 test548 test549 test550 \
test551 test552 test1016 test1017 test1018 test1019 test1020 test553 \
test1021 test1022 test1023 test309 test616 test617 test618 test619 \
test620 test621 test622 test623 test624 test625 test626 test627 test554 \
test1024 test1025 test555 test1026 test1027 test1028 test1029 test1030 \
test556 test557 test1031 test628 test629 test630 test631 test632 test1032 \
test1033 test539 test1034 test1035 test1036 test1037 test1038 test1039 \
test1040 test1041 test1042 test1043 test1044 test1045 test1046 test1047 \
test1048 test1049 test1050 test1051 test1052 test1053 test1054 test1055 \
test1056 test1057 test1058 test1059 test1060 test1061 test1062 test1063 \
test1064 test1065 test1066 test1067 test1068 test1069 test1070 test1071 \
test1072 test1073 test1074 test1075 test1076 test1077 test1078 test1079 \
test1080 test1081 test1082 test1083 test1084 test1085 test633 test634 \
test635 test636 test637 test558 test559 test1086
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/data/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign tests/data/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
uninstall-info-am:
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile
installdirs:
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-libtool
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am:
install-exec-am:
install-info: install-info-am
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-info-am
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
distclean distclean-generic distclean-libtool distdir dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-exec install-exec-am \
install-info install-info-am install-man install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic \
mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
uninstall-info-am
iall:
install:
test:
filecheck:
@mkdir test-place; \
cp "$(top_srcdir)"/tests/data/test[0-9]* test-place/; \
rm test-place/*~; \
for f in $(EXTRA_DIST); do \
if test -f "$(top_srcdir)/tests/data/$$f"; then \
rm -f "test-place/$$f"; \
else \
echo "$$f is listed but missing!"; \
fi \
done; \
echo "Local files not present in EXTRA_DIST:" ; \
ls test-place; \
! ls test-place | grep . >/dev/null ; \
RC=$$? ; \
rm -rf test-place ; \
exit $$RC
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
+55
View File
@@ -0,0 +1,55 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>
#
# Server-side
<reply name="1">
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes
-foo-
</data>
</reply>
#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET
</name>
<command>
http://%HOSTIP:%HTTPPORT/1
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /1 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
</verify>
</testcase>
@@ -0,0 +1,67 @@
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
blablabla
</data>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
simple HTTP PUT from file
</name>
<command>
http://%HOSTIP:%HTTPPORT/we/want/10 -T log/test10.txt
</command>
<file name="log/test10.txt">
Weird
file
to
upload
for
testing
the
PUT
feature
</file>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
PUT /we/want/10 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 78
Expect: 100-continue
Weird
file
to
upload
for
testing
the
PUT
feature
</protocol>
</verify>
</testcase>
@@ -0,0 +1,56 @@
<testcase>
<info>
<keywords>
FTP
PASV
LIST
</keywords>
</info>
#
# Server-side
<reply>
# When doing LIST, we get the default list output hard-coded in the test
# FTP server
<datacheck>
total 20
drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
-r--r--r-- 1 0 1 35 Jul 16 1996 README
lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
</datacheck>
</reply>
#
# Client-side
<client>
<server>
ftp
</server>
<name>
FTP dir list PASV
</name>
<command>
ftp://%HOSTIP:%FTPPORT/
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS [email protected]
PWD
EPSV
TYPE A
LIST
QUIT
</protocol>
</verify>
</testcase>
@@ -0,0 +1,42 @@
<testcase>
<info>
<keywords>
FTP
PASV
LIST
NOBODY
</keywords>
</info>
#
# Server-side
<reply>
<datacheck>
</datacheck>
</reply>
#
# Client-side
<client>
<server>
ftp
</server>
<name>
FTP dir list PASV with -I
</name>
<command>
ftp://%HOSTIP:%FTPPORT/1000/ -I
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS [email protected]
PWD
CWD 1000
QUIT
</protocol>
</verify>
</testcase>
@@ -0,0 +1,106 @@
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
HTTP proxy
HTTP Digest auth
Resume
Content-Range
CUSTOMREQUEST
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 100 Continue
Server: Microsoft-IIS/5.0
Date: Sun, 03 Apr 2005 14:57:45 GMT
X-Powered-By: ASP.NET
HTTP/1.1 401 authentication please swsbounce
Server: Microsoft-IIS/6.0
WWW-Authenticate: Digest realm="testrealm", nonce="1053604144"
Content-Type: text/html; charset=iso-8859-1
Content-Length: 0
</data>
<data1000>
HTTP/1.1 200 A OK
Server: Microsoft-IIS/6.0
Content-Type: text/html; charset=iso-8859-1
Content-Length: 3
ok
</data1000>
<datacheck>
HTTP/1.1 100 Continue
Server: Microsoft-IIS/5.0
Date: Sun, 03 Apr 2005 14:57:45 GMT
X-Powered-By: ASP.NET
HTTP/1.1 401 authentication please swsbounce
Server: Microsoft-IIS/6.0
WWW-Authenticate: Digest realm="testrealm", nonce="1053604144"
Content-Type: text/html; charset=iso-8859-1
Content-Length: 0
HTTP/1.1 200 A OK
Server: Microsoft-IIS/6.0
Content-Type: text/html; charset=iso-8859-1
Content-Length: 3
ok
</datacheck>
</reply>
# Client-side
<client>
#
<server>
http
</server>
<name>
HTTP POST --digest with PUT and resumed upload and modified method
</name>
<command>
http://%HOSTIP:%HTTPPORT/1001 -u auser:apasswd --digest -T log/1001 -x http://%HOSTIP:%HTTPPORT -C 2 -X GET
</command>
<file name="log/1001">
test
</file>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET http://%HOSTIP:%HTTPPORT/1001 HTTP/1.1
Content-Range: bytes 2-4/5
User-Agent: curl/7.12.1-CVS (i686-pc-linux-gnu) libcurl/7.12.1-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.6
Host: %HOSTIP:%HTTPPORT
Pragma: no-cache
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0
Expect: 100-continue
GET http://%HOSTIP:%HTTPPORT/1001 HTTP/1.1
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/1001", response="6af4d89c952f4dd4cc215a6878dc499d"
Content-Range: bytes 2-4/5
Host: %HOSTIP:%HTTPPORT
Pragma: no-cache
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 3
Expect: 100-continue
st
</protocol>
</verify>
</testcase>
@@ -0,0 +1,117 @@
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
HTTP proxy
HTTP Digest auth
Resume
Content-Range
CUSTOMREQUEST
</keywords>
</info>
<reply>
<data>
HTTP/1.1 100 Continue
Server: Microsoft-IIS/5.0
Date: Sun, 03 Apr 2005 14:57:45 GMT
X-Powered-By: ASP.NET
HTTP/1.1 401 authentication please swsbounce
Server: Microsoft-IIS/6.0
WWW-Authenticate: Digest realm="testrealm", nonce="1053604144"
Content-Type: text/html; charset=iso-8859-1
Content-Length: 0
</data>
<data1000>
HTTP/1.1 200 A OK
Server: Microsoft-IIS/6.0
Content-Type: text/html; charset=iso-8859-1
Content-Length: 3
ok
</data1000>
<datacheck>
HTTP/1.1 100 Continue
Server: Microsoft-IIS/5.0
Date: Sun, 03 Apr 2005 14:57:45 GMT
X-Powered-By: ASP.NET
HTTP/1.1 401 authentication please swsbounce
Server: Microsoft-IIS/6.0
WWW-Authenticate: Digest realm="testrealm", nonce="1053604144"
Content-Type: text/html; charset=iso-8859-1
Content-Length: 0
HTTP/1.1 200 A OK
Server: Microsoft-IIS/6.0
Content-Type: text/html; charset=iso-8859-1
Content-Length: 3
ok
</datacheck>
</reply>
# Client-side
<client>
#
<server>
http
</server>
<name>
HTTP POST --digest with PUT and resumed upload and modified method, twice
</name>
<command>
http://%HOSTIP:%HTTPPORT/1002.upload1 -T log/1002 http://%HOSTIP:%HTTPPORT/1002.upload2 -T log/1002 -u auser:apasswd --digest -x http://%HOSTIP:%HTTPPORT -C 2 -X GET
</command>
<file name="log/1002">
test
</file>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET http://%HOSTIP:%HTTPPORT/1002.upload1 HTTP/1.1
Content-Range: bytes 2-4/5
User-Agent: curl/7.12.1-CVS (i686-pc-linux-gnu) libcurl/7.12.1-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.6
Host: %HOSTIP:%HTTPPORT
Pragma: no-cache
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 0
Expect: 100-continue
GET http://%HOSTIP:%HTTPPORT/1002.upload1 HTTP/1.1
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/1002.upload1", response="198aa9b6acb4b0c71d02a197a5e41f54"
Content-Range: bytes 2-4/5
Host: %HOSTIP:%HTTPPORT
Pragma: no-cache
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 3
Expect: 100-continue
st
GET http://%HOSTIP:%HTTPPORT/1002.upload2 HTTP/1.1
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/1002.upload2", response="d711f0d2042786d930de635ba0d1a1d0"
Content-Range: bytes 2-4/5
User-Agent: curl/7.16.1
Host: %HOSTIP:%HTTPPORT
Pragma: no-cache
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 3
Expect: 100-continue
st
</protocol>
</verify>
</testcase>
File diff suppressed because one or more lines are too long
@@ -0,0 +1,59 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP proxy
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes
-foo-
</data>
</reply>
#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET with empty proxy
</name>
<command>
http://%HOSTIP:%HTTPPORT/1004 --proxy ""
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /1004 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
<valgrind>
disable
</valgrind>
</verify>
</testcase>
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,39 @@
<testcase>
<info>
<keywords>
TFTP
TFTP WRQ
FAILURE
</keywords>
</info>
#
# Client-side
<client>
<server>
tftp
</server>
<name>
TFTP send with invalid permission on server
</name>
<command>
-T log/test1007.txt tftp://%HOSTIP:%TFTPPORT//invalid-file --trace-ascii log/traceit
</command>
<file name="log/test1007.txt">
This data will not be sent
</file>
</client>
#
# Verify pseudo protocol after the test has been "shot"
<verify>
<errorcode>
69
</errorcode>
<protocol>
opcode: 2
filename: /invalid-file
mode: octet
</protocol>
</verify>
</testcase>
@@ -0,0 +1,122 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP CONNECT
HTTP proxy
HTTP proxy NTLM auth
</keywords>
</info>
# Server-side
<reply>
# this is returned first since we get no proxy-auth
<data1001>
HTTP/1.1 407 Authorization Required to proxy me my dear
Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAAAGgoEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==
Transfer-Encoding: chunked
20
And you should ignore this data.
FA0
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0
</data1001>
# This is supposed to be returned when the server gets the second
# Authorization: NTLM line passed-in from the client
<data1002>
HTTP/1.1 200 Things are fine in proxy land
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1
</data1002>
# this is returned when we get a GET!
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes
daniel
</data2>
# then this is returned when we get proxy-auth
<data1000>
HTTP/1.1 200 OK swsbounce
Server: no
Nice proxy auth sir!
</data1000>
<datacheck>
HTTP/1.1 407 Authorization Required to proxy me my dear
Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAAAGgoEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==
Transfer-Encoding: chunked
HTTP/1.1 200 Things are fine in proxy land
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes
daniel
</datacheck>
</reply>
# Client-side
<client>
<server>
http
</server>
<features>
NTLM
</features>
<name>
HTTP proxy CONNECT auth NTLM with chunked-encoded 407 response
</name>
<command>
http://test.remote.server.com:1008/path/10080002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user silly:person --proxy-ntlm --proxytunnel
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent: curl/.*
</strip>
# We strip off a large chunk of the type-2 NTLM message since it depends on
# the local host name and thus differs on different machines!
<strippart>
s/^(Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAABQAFAHAAAAA).*/$1/
</strippart>
<protocol>
CONNECT test.remote.server.com:1008 HTTP/1.0
Host: test.remote.server.com:1008
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Proxy-Connection: Keep-Alive
CONNECT test.remote.server.com:1008 HTTP/1.0
Host: test.remote.server.com:1008
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAABQAFAHAAAAA
Proxy-Connection: Keep-Alive
GET /path/10080002 HTTP/1.1
User-Agent: curl/7.12.3-CVS (i686-pc-linux-gnu) libcurl/7.12.3-CVS OpenSSL/0.9.6b zlib/1.1.4
Host: test.remote.server.com:1008
Accept: */*
</protocol>
</verify>
</testcase>
@@ -0,0 +1,44 @@
<testcase>
<info>
<keywords>
TFTP
TFTP RRQ
--local-port
</keywords>
</info>
#
# Server-side
<reply>
<data>
a chunk of
data
returned
to client
</data>
</reply>
#
# Client-side
<client>
<server>
tftp
</server>
<name>
TFTP retrieve with --local-port
</name>
<command>
tftp://%HOSTIP:%TFTPPORT//1009 --local-port 44444-45444
</command>
</client>
#
# Verify pseudo protocol after the test has been "shot"
<verify>
<protocol>
opcode: 1
filename: /1009
mode: octet
</protocol>
</verify>
</testcase>
@@ -0,0 +1,58 @@
<testcase>
<info>
<keywords>
FTP
PORT
LIST
</keywords>
</info>
# Server-side
<reply>
# When doing LIST, we get the default list output hard-coded in the test
# FTP server
<datacheck>
total 20
drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
-r--r--r-- 1 0 1 35 Jul 16 1996 README
lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
</datacheck>
</reply>
# Client-side
<client>
<server>
ftp
</server>
<name>
FTP dir list, PORT with specified IP
</name>
<command>
ftp://%HOSTIP:%FTPPORT/ -P %CLIENTIP
</command>
</client>
# Verify data after the test has been "shot"
<verify>
# Strip all valid kinds of PORT and EPRT that curl can send
<strip>
^PORT \d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3}
^EPRT \|1\|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\|\d{1,5}\|
</strip>
<protocol>
USER anonymous
PASS [email protected]
PWD
PORT 127,0,0,1,243,212
TYPE A
LIST
QUIT
</protocol>
</verify>
</testcase>
@@ -0,0 +1,56 @@
<testcase>
<info>
<keywords>
FTP
PASV
LIST
</keywords>
</info>
#
# Server-side
<reply>
# When doing LIST, we get the default list output hard-coded in the test
# FTP server
<datacheck>
total 20
drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
-r--r--r-- 1 0 1 35 Jul 16 1996 README
lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
</datacheck>
</reply>
#
# Client-side
<client>
<server>
ftp
</server>
<name>
FTP dir list nocwd
</name>
<command>
ftp://%HOSTIP:%FTPPORT//list/this/path/1010/ --ftp-method nocwd
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS [email protected]
PWD
EPSV
TYPE A
LIST /list/this/path/1010/
QUIT
</protocol>
</verify>
</testcase>
@@ -0,0 +1,76 @@
<testcase>
<info>
<keywords>
HTTP
HTTP POST
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 301 OK swsclose
Location: moo.html&testcase=/10110002
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close
</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close
body
</data2>
<datacheck>
HTTP/1.1 301 OK swsclose
Location: moo.html&testcase=/10110002
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close
body
</datacheck>
</reply>
#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP POST with 301 redirect
</name>
<command>
http://%HOSTIP:%HTTPPORT/blah/1011 -L -d "moo"
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
POST /blah/1011 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded
mooGET /blah/moo.html&testcase=/10110002 HTTP/1.1
User-Agent: curl/7.10 (i686-pc-linux-gnu) libcurl/7.10 OpenSSL/0.9.6c ipv6 zlib/1.1.3
Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
</verify>
</testcase>
@@ -0,0 +1,79 @@
<testcase>
<info>
<keywords>
HTTP
HTTP POST
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 301 OK swsclose
Location: moo.html&testcase=/10120002
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close
</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close
body
</data2>
<datacheck>
HTTP/1.1 301 OK swsclose
Location: moo.html&testcase=/10120002
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close
body
</datacheck>
</reply>
#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP POST with 301 redirect and --post301
</name>
<command>
http://%HOSTIP:%HTTPPORT/blah/1012 -L -d "moo" --post301
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol nonewline="yes">
POST /blah/1012 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded
mooPOST /blah/moo.html&testcase=/10120002 HTTP/1.1
User-Agent: curl/7.10 (i686-pc-linux-gnu) libcurl/7.10 OpenSSL/0.9.6c ipv6 zlib/1.1.3
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded
moo
</protocol>
</verify>
</testcase>
@@ -0,0 +1,37 @@
<testcase>
<info>
<keywords>
curl-config
</keywords>
</info>
#
# Server-side
<reply>
</reply>
#
# Client-side
<client>
<server>
none
</server>
<name>
Compare curl --version with curl-config --protocols
</name>
<command>
--version
</command>
<postcheck>
%SRCDIR/libtest/test1013.pl ../curl-config log/stdout1013 protocols
</postcheck>
</client>
#
# Verify data after the test has been "shot"
<verify>
<errorcode>
0
</errorcode>
</verify>
</testcase>
@@ -0,0 +1,37 @@
<testcase>
<info>
<keywords>
curl-config
</keywords>
</info>
#
# Server-side
<reply>
</reply>
#
# Client-side
<client>
<server>
none
</server>
<name>
Compare curl --version with curl-config --features
</name>
<command>
--version
</command>
<postcheck>
%SRCDIR/libtest/test1013.pl ../curl-config log/stdout1014 features
</postcheck>
</client>
#
# Verify data after the test has been "shot"
<verify>
<errorcode>
0
</errorcode>
</verify>
</testcase>
@@ -0,0 +1,53 @@
<testcase>
<info>
<keywords>
--data-urlencode
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 I am cool swsclose
Server: Cool server/10.0
Content-Length: 0
</data>
</reply>
#
# Client-side
<client>
<server>
http
</server>
<name>
--data-urlencode
</name>
<command>
http://%HOSTIP:%HTTPPORT/1015 --data-urlencode "my name is moo[]" --data-urlencode "y e s=s_i_r" --data-urlencode "v_alue@log/1015.txt" --data-urlencode @log/1015.txt
</command>
<file name="log/1015.txt">
content to _?!#$'|<>
</file>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol nonewline="yes">
POST /1015 HTTP/1.1
User-Agent: curl/7.17.2-CVS (i686-pc-linux-gnu) libcurl/7.17.2-CVS OpenSSL/0.9.8g zlib/1.2.3.3 c-ares/1.5.2-CVS libidn/1.1 libssh2/0.19.0-C
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 141
Content-Type: application/x-www-form-urlencoded
my%20name%20is%20moo%5B%5D&y e s=s%5Fi%5Fr&v_alue=content%20to%20%5F%3F%21%23%24%27%7C%3C%3E%0A&content%20to%20%5F%3F%21%23%24%27%7C%3C%3E%0A
</protocol>
</verify>
</testcase>
@@ -0,0 +1,39 @@
<testcase>
<info>
<keywords>
FILE
Range
</keywords>
</info>
<reply>
<data>
</data>
</reply>
# Client-side
<client>
<server>
none
</server>
<features>
file
</features>
<name>
X-Y range on a file:// URL to stdout
</name>
<command>
-r 1-4 file://localhost/%PWD/log/test1016.txt
</command>
<file name="log/test1016.txt">
1234567890
</file>
</client>
# Verify data after the test has been "shot"
<verify>
<stdout nonewline="yes">
2345
</stdout>
</verify>
</testcase>
@@ -0,0 +1,40 @@
<testcase>
<info>
<keywords>
FILE
Range
</keywords>
</info>
# Server-side
<reply>
<data>
</data>
</reply>
# Client-side
<client>
<server>
none
</server>
<features>
file
</features>
<name>
0-Y range on a file:// URL to stdout
</name>
<command>
-r 0-3 file://localhost/%PWD/log/test1017.txt
</command>
<file name="log/test1017.txt">
1234567890
</file>
</client>
# Verify data after the test has been "shot"
<verify>
<stdout nonewline="yes">
1234
</stdout>
</verify>
</testcase>
@@ -0,0 +1,39 @@
<testcase>
<info>
<keywords>
FILE
Range
</keywords>
</info>
<reply>
<data>
</data>
</reply>
# Client-side
<client>
<server>
none
</server>
<features>
file
</features>
<name>
X-X range on a file:// URL to stdout
</name>
<command>
-r 4-4 file://localhost/%PWD/log/test1018.txt
</command>
<file name="log/test1018.txt">
1234567890
</file>
</client>
# Verify data after the test has been "shot"
<verify>
<stdout nonewline="yes">
5
</stdout>
</verify>
</testcase>
@@ -0,0 +1,42 @@
<testcase>
<info>
<keywords>
FILE
Range
</keywords>
</info>
# Server-side
<reply>
<data>
</data>
</reply>
# Client-side
<client>
<server>
none
</server>
<features>
file
</features>
<name>
X- range on a file:// URL to stdout
</name>
<command>
-r 7- file://localhost/%PWD/log/test1019.txt
</command>
<file name="log/test1019.txt">
1234567890
1234567890
</file>
</client>
# Verify data after the test has been "shot"
<verify>
<stdout>
890
1234567890
</stdout>
</verify>
</testcase>
@@ -0,0 +1,52 @@
<testcase>
<info>
<keywords>
FTP
PASV
RETR
</keywords>
</info>
# Server-side
<reply>
<data>
data
to
see
that FTP
works
so does it?
</data>
<servercmd>
REPLY EPSV 500 no such command
</servercmd>
</reply>
# Client-side
<client>
<server>
ftp
</server>
<name>
FTP RETR PASV
</name>
<command>
ftp://%HOSTIP:%FTPPORT/102
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS [email protected]
PWD
EPSV
PASV
TYPE I
SIZE 102
RETR 102
QUIT
</protocol>
</verify>
</testcase>
@@ -0,0 +1,42 @@
<testcase>
<info>
<keywords>
FILE
Range
</keywords>
</info>
# Server-side
<reply>
<data>
</data>
</reply>
# Client-side
<client>
<server>
none
</server>
<features>
file
</features>
<name>
-Y range on a file:// URL to stdout
</name>
<command>
-r -9 file://localhost/%PWD/log/test1020.txt
</command>
<file name="log/test1020.txt">
1234567890
1234567890
</file>
</client>
# Verify data after the test has been "shot"
<verify>
<stdout>
34567890
</stdout>
</verify>
</testcase>
@@ -0,0 +1,135 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP CONNECT
HTTP proxy
HTTP proxy NTLM auth
--proxy-anyauth
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 407 Authorization Required to proxy me my dear swsclose
Proxy-Authenticate: NTLM
Content-Length: 21
Connection: close
data to discard
</data>
# this is returned first since we get no proxy-auth
<data1001>
HTTP/1.1 407 Authorization Required to proxy me my dear
Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAAAGgoEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==
Content-Length: 28
And you should ignore this data.
</data1001>
# This is supposed to be returned when the server gets the second
# Authorization: NTLM line passed-in from the client
<data1002>
HTTP/1.1 200 Things are fine in proxy land
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1
</data1002>
# this is returned when we get a GET!
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes
daniel
</data2>
# then this is returned when we get proxy-auth
<data1000>
HTTP/1.1 200 OK swsbounce
Server: no
Nice proxy auth sir!
</data1000>
<datacheck>
HTTP/1.1 407 Authorization Required to proxy me my dear swsclose
Proxy-Authenticate: NTLM
Content-Length: 21
Connection: close
HTTP/1.1 407 Authorization Required to proxy me my dear
Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAAAGgoEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==
Content-Length: 28
HTTP/1.1 200 Things are fine in proxy land
Server: Microsoft-IIS/5.0
Content-Type: text/html; charset=iso-8859-1
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 7
Connection: close
Content-Type: text/html
Funny-head: yesyes
daniel
</datacheck>
</reply>
# Client-side
<client>
<server>
http
</server>
<features>
NTLM
</features>
<name>
HTTP proxy CONNECT with any proxyauth and proxy offers NTLM and close
</name>
<command>
http://test.remote.server.com:1021/path/10210002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user silly:person --proxy-anyauth --proxytunnel
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent: curl/.*
</strip>
# We strip off a large chunk of the type-2 NTLM message since it depends on
# the local host name and thus differs on different machines!
<strippart>
s/^(Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAABQAFAHAAAAA).*/$1/
</strippart>
<protocol>
CONNECT test.remote.server.com:1021 HTTP/1.0
Host: test.remote.server.com:1021
Proxy-Connection: Keep-Alive
CONNECT test.remote.server.com:1021 HTTP/1.0
Host: test.remote.server.com:1021
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
Proxy-Connection: Keep-Alive
CONNECT test.remote.server.com:1021 HTTP/1.0
Host: test.remote.server.com:1021
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAABQAFAHAAAAA
Proxy-Connection: Keep-Alive
GET /path/10210002 HTTP/1.1
User-Agent: curl/7.12.3-CVS (i686-pc-linux-gnu) libcurl/7.12.3-CVS OpenSSL/0.9.6b zlib/1.1.4
Host: test.remote.server.com:1021
Accept: */*
</protocol>
</verify>
</testcase>
@@ -0,0 +1,37 @@
<testcase>
<info>
<keywords>
curl-config
</keywords>
</info>
#
# Server-side
<reply>
</reply>
#
# Client-side
<client>
<server>
none
</server>
<name>
Compare curl --version with curl-config --version
</name>
<command>
--version
</command>
<postcheck>
%SRCDIR/libtest/test1022.pl ../curl-config log/stdout1022 version
</postcheck>
</client>
#
# Verify data after the test has been "shot"
<verify>
<errorcode>
0
</errorcode>
</verify>
</testcase>
@@ -0,0 +1,37 @@
<testcase>
<info>
<keywords>
curl-config
</keywords>
</info>
#
# Server-side
<reply>
</reply>
#
# Client-side
<client>
<server>
none
</server>
<name>
Compare curl --version with curl-config --vernum
</name>
<command>
--version
</command>
<postcheck>
%SRCDIR/libtest/test1022.pl ../curl-config log/stdout1023 vernum
</postcheck>
</client>
#
# Verify data after the test has been "shot"
<verify>
<errorcode>
0
</errorcode>
</verify>
</testcase>
@@ -0,0 +1,103 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
cookies
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ../data/10240002.txt
Set-Cookie: firstcookie=want; path=/want/
Content-Length: 69
This server reply is for testing a Location: following with cookies
</data>
<data2>
HTTP/1.1 301 This is a weirdo text message
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ../want/10240003.txt
Set-Cookie: nextcookie=data; path=/data/
Content-Length: 69
This server reply is for testing a Location: following with cookies
</data2>
<data3>
HTTP/1.1 200 Followed here fine
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52
If this is received, the location following worked
</data3>
<datacheck>
HTTP/1.1 301 This is a weirdo text message
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ../data/10240002.txt
Set-Cookie: firstcookie=want; path=/want/
Content-Length: 69
HTTP/1.1 301 This is a weirdo text message
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ../want/10240003.txt
Set-Cookie: nextcookie=data; path=/data/
Content-Length: 69
HTTP/1.1 200 Followed here fine
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52
If this is received, the location following worked
</datacheck>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
HTTP Location: following with cookies
</name>
<command>
http://%HOSTIP:%HTTPPORT/want/1024 -L -c log/jar1024
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /want/1024 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /data/10240002.txt HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /want/10240003.txt HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Cookie: firstcookie=want
</protocol>
</verify>
</testcase>
@@ -0,0 +1,105 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
cookies
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ../data/10250002.txt
Set-Cookie: firstcookie=want; path=/want/
Content-Length: 69
This server reply is for testing a Location: following with cookies
</data>
<data2>
HTTP/1.1 301 This is a weirdo text message
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ../want/10250003.txt
Set-Cookie: nextcookie=data; path=/data/
Content-Length: 69
This server reply is for testing a Location: following with cookies
</data2>
<data3>
HTTP/1.1 200 Followed here fine
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52
If this is received, the location following worked
</data3>
<datacheck>
HTTP/1.1 301 This is a weirdo text message
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ../data/10250002.txt
Set-Cookie: firstcookie=want; path=/want/
Content-Length: 69
HTTP/1.1 301 This is a weirdo text message
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ../want/10250003.txt
Set-Cookie: nextcookie=data; path=/data/
Content-Length: 69
HTTP/1.1 200 Followed here fine
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52
If this is received, the location following worked
</datacheck>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
HTTP Location: following with command-line and server cookies
</name>
<command>
http://%HOSTIP:%HTTPPORT/want/1025 -L -c log/jar1025 -b forcedcookie=yes
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /want/1025 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Cookie: forcedcookie=yes
GET /data/10250002.txt HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Cookie: forcedcookie=yes
GET /want/10250003.txt HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Cookie: firstcookie=want; forcedcookie=yes
</protocol>
</verify>
</testcase>
@@ -0,0 +1,39 @@
<testcase>
<info>
<keywords>
--manual
</keywords>
</info>
#
# Server-side
<reply>
</reply>
#
# Client-side
<client>
<server>
none
</server>
<name>
curl --manual
</name>
<command>
--manual
</command>
# Search for these two sentinel lines in the manual output; if they are found,
# then chances are good the entire manual is there.
<postcheck>
perl -e 'open(IN,$ARGV[0]); my $lines=grep(/(a\s*tool\s*to\s*transfer\s*data)|(mailing\s*lists\s*to\s*discuss\s*curl)/, <IN>); exit ($lines != 2); # Let this file pass an XML syntax check: </IN>' log/stdout1026
</postcheck>
</client>
#
# Verify data after the test has been "shot"
<verify>
<errorcode>
0
</errorcode>
</verify>
</testcase>
@@ -0,0 +1,39 @@
<testcase>
<info>
<keywords>
--help
</keywords>
</info>
#
# Server-side
<reply>
</reply>
#
# Client-side
<client>
<server>
none
</server>
<name>
curl --help
</name>
<command>
--help
</command>
# Search for these two sentinel lines in the help output; if they are found,
# then chances are good the entire help is there.
<postcheck>
perl -e 'open(IN,$ARGV[0]); my $lines=grep(/(Usage: curl )|(--version\s*Show version)/, <IN>); exit ($lines != 2); # Let this file pass an XML syntax check: </IN>' log/stdout1027
</postcheck>
</client>
#
# Verify data after the test has been "shot"
<verify>
<errorcode>
0
</errorcode>
</verify>
</testcase>
@@ -0,0 +1,94 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
FTP
PASV
FILE
</keywords>
</info>
#
# Server-side
<reply>
<data1>
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: ftp://127.0.0.1:8992/10280002
Content-Length: 0
Connection: close
</data1>
<data2>
data
to
see
that FTP
works
so does it?
</data2>
</reply>
#
# Client-side
<client>
<server>
http
ftp
</server>
<name>
HTTP Location: redirect to FTP URL
</name>
<command>
http://%HOSTIP:%HTTPPORT/10280001 -L
</command>
# The data section doesn't do variable substitution, so we must assert this
<precheck>
perl -e "print 'Test requires default test server host and port' if ( '%HOSTIP' ne '127.0.0.1' || '%FTPPORT' ne '8992' );"
</precheck>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /10280001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
USER anonymous
PASS [email protected]
PWD
EPSV
TYPE I
SIZE 10280002
RETR 10280002
QUIT
</protocol>
<stdout>
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
Location: ftp://%HOSTIP:%FTPPORT/10280002
Content-Length: 0
Connection: close
data
to
see
that FTP
works
so does it?
</stdout>
</verify>
</testcase>
@@ -0,0 +1,58 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
redirect_url
followlocation
--write-out
</keywords>
</info>
# Server-side
<reply>
<data nocheck="1">
HTTP/1.1 301 This is a weirdo text message swsclose
Location: data/10290002.txt?coolsite=yes
Content-Length: 62
Connection: close
This server reply is for testing a simple Location: following
</data>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
HTTP Location: and 'redirect_url' check
</name>
<command>
http://%HOSTIP:%HTTPPORT/we/want/our/1029 -w '%{redirect_url}\n'
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /we/want/our/1029 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
<stdout mode="text">
HTTP/1.1 301 This is a weirdo text message swsclose
Location: data/10290002.txt?coolsite=yes
Content-Length: 62
Connection: close
This server reply is for testing a simple Location: following
http://%HOSTIP:%HTTPPORT/we/want/our/data/10290002.txt?coolsite=yes
</stdout>
</verify>
</testcase>
@@ -0,0 +1,54 @@
<testcase>
<info>
<keywords>
FTP
PORT
RETR
</keywords>
</info>
# Server-side
<reply>
<data>
data
to
see
that FTP
works
so does it?
</data>
</reply>
# Client-side
<client>
<server>
ftp
</server>
<name>
FTP RETR PORT with CWD
</name>
<command>
ftp://%HOSTIP:%FTPPORT/a/path/103 -P -
</command>
</client>
# Verify data after the test has been "shot"
<verify>
# Strip all valid kinds of PORT and EPRT that curl can send
<strip>
^PORT \d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3}
^EPRT \|1\|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\|\d{1,5}\|
</strip>
<protocol>
USER anonymous
PASS [email protected]
PWD
CWD a
CWD path
PORT 127,0,0,1,0,0
TYPE I
SIZE 103
RETR 103
QUIT
</protocol>
</verify>
</testcase>
@@ -0,0 +1,109 @@
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
HTTP Digest auth
--anyauth
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 401 Authorization Required
Server: Apache/1.3.27 (Darwin) PHP/4.1.2
WWW-Authenticate: Blackmagic realm="gimme all yer s3cr3ts"
WWW-Authenticate: Basic realm="gimme all yer s3cr3ts"
WWW-Authenticate: Digest realm="gimme all yer s3cr3ts", nonce="11223344"
Content-Length: 26
Content-Type: text/html; charset=iso-8859-1
This is not the real page
</data>
# This is supposed to be returned when the server gets a
# Authorization: Digest line passed-in from the client
<data1000>
HTTP/1.1 200 OK
Server: Apache/1.3.27 (Darwin) PHP/4.1.2
Content-Type: text/html; charset=iso-8859-1
Content-Length: 23
Connection: close
This IS the real page!
</data1000>
<datacheck>
HTTP/1.1 401 Authorization Required
Server: Apache/1.3.27 (Darwin) PHP/4.1.2
WWW-Authenticate: Blackmagic realm="gimme all yer s3cr3ts"
WWW-Authenticate: Basic realm="gimme all yer s3cr3ts"
WWW-Authenticate: Digest realm="gimme all yer s3cr3ts", nonce="11223344"
Content-Length: 26
Content-Type: text/html; charset=iso-8859-1
HTTP/1.1 200 OK
Server: Apache/1.3.27 (Darwin) PHP/4.1.2
Content-Type: text/html; charset=iso-8859-1
Content-Length: 23
Connection: close
This IS the real page!
</datacheck>
</reply>
# Client-side
<client>
<server>
http
</server>
<features>
crypto
</features>
<name>
HTTP PUT with --anyauth authorization (picking Digest)
</name>
<command>
http://%HOSTIP:%HTTPPORT/1030 -T log/put1030 -u testuser:testpass --anyauth
</command>
<file name="log/put1030">
This is data we upload with PUT
a second line
line three
four is the number of lines
</file>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
PUT /1030 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 85
Expect: 100-continue
This is data we upload with PUT
a second line
line three
four is the number of lines
PUT /1030 HTTP/1.1
Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/1030", response="01cb59db1ddaac246b072d5f5f0716d9"
User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 85
Expect: 100-continue
This is data we upload with PUT
a second line
line three
four is the number of lines
</protocol>
</verify>
</testcase>
@@ -0,0 +1,76 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ?coolsite=yes/10310002.txt
Connection: close
This server reply is for testing a simple Location: following
</data>
<data2>
HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52
If this is received, the location following worked
</data2>
<datacheck>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: ?coolsite=yes/10310002.txt
Connection: close
HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52
If this is received, the location following worked
</datacheck>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
HTTP Location: following to a query string
</name>
<command>
http://%HOSTIP:%HTTPPORT/want/this/1031 -L
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /want/this/1031 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /want/this/1031?coolsite=yes/10310002.txt HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
</verify>
</testcase>
@@ -0,0 +1,56 @@
<testcase>
<info>
<keywords>
HTTP
HTTP HEAD
range
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes
</data>
</reply>
#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP HEAD with --range
</name>
<command>
--range 1-3 --head http://%HOSTIP:%HTTPPORT/1032
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
HEAD /1032 HTTP/1.1
Range: bytes=1-3
Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
</verify>
</testcase>
@@ -0,0 +1,60 @@
<testcase>
#
# This case with an unexpected 1xx response used to cause a "hang" before the fix
# got 7.19.0
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 102 unexpected huh?!
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes
-foo-
</data>
</reply>
#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET with 102 response!
</name>
<command>
http://%HOSTIP:%HTTPPORT/1033
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /1033 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
</verify>
</testcase>
@@ -0,0 +1,63 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP proxy
IDN
FAILURE
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.0 503 Service Unavailable
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
</data>
</reply>
#
# Client-side
<client>
<server>
http
</server>
<features>
idn
</features>
<setenv>
CHARSET=UTF-8
</setenv>
<name>
HTTP over proxy with malformatted IDN host name
</name>
# This host name contains an invalid UTF-8 byte sequence that can't be
# converted into an IDN name
<command>
http://invalid-utf8-â.local/page/1034 -x %HOSTIP:%HTTPPORT
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET http://invalid-utf8-â.local/page/1034 HTTP/1.1
Host: invalid-utf8-â.local
Pragma: no-cache
Accept: */*
Proxy-Connection: Keep-Alive
</protocol>
</verify>
</testcase>
@@ -0,0 +1,60 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP proxy
IDN
FAILURE
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.0 503 Service Unavailable
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Funny-head: yesyes
</data>
</reply>
#
# Client-side
<client>
<server>
http
</server>
<features>
idn
</features>
<setenv>
CHARSET=ISO8859-1
</setenv>
<name>
HTTP over proxy with too long IDN host name
</name>
<command>
http://too-long-IDN-name-cürl-rüles-la-la-la-dee-da-flooby-nooby.local/page/1035 -x %HOSTIP:%HTTPPORT
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET http://too-long-IDN-name-cürl-rüles-la-la-la-dee-da-flooby-nooby.local/page/1035 HTTP/1.1
Host: too-long-IDN-name-cürl-rüles-la-la-la-dee-da-flooby-nooby.local
Pragma: no-cache
Accept: */*
Proxy-Connection: Keep-Alive
</protocol>
</verify>
</testcase>
@@ -0,0 +1,61 @@
<testcase>
<info>
<keywords>
FTP
PASV
RETR
Resume
</keywords>
</info>
# Server-side
<reply>
<data nocheck="1">
expected to be a file without the first part
but we emulate that
</data>
<size>
85
</size>
<servercmd>
REPLY EPSV 500 no such command
</servercmd>
</reply>
# Client-side
<client>
<server>
ftp
</server>
<name>
FTP download resume from end of file
</name>
<command>
ftp://%HOSTIP:%FTPPORT/1036 -C -
</command>
<file name="log/curl1036.out">
This is the start!!
</file>
</client>
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS [email protected]
PWD
EPSV
PASV
TYPE I
SIZE 1036
REST 20
RETR 1036
QUIT
</protocol>
<file name="log/curl1036.out">
This is the start!!
expected to be a file without the first part
but we emulate that
</file>
</verify>
</testcase>
@@ -0,0 +1,54 @@
<testcase>
<info>
<keywords>
FTP
PASV
RETR
Resume
</keywords>
</info>
# Server-side
<reply>
<data nocheck="1">
expected to be a file without the first part
but we emulate that
</data>
<size>
65
</size>
<servercmd>
REPLY EPSV 500 no such command
</servercmd>
</reply>
# Client-side
<client>
<server>
ftp
</server>
<name>
FTP download resume from end of empty file
</name>
<command>
ftp://%HOSTIP:%FTPPORT/1037 -C -
</command>
<file name="log/curl1037.out">
</file>
</client>
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS [email protected]
PWD
EPSV
PASV
TYPE I
SIZE 1037
RETR 1037
QUIT
</protocol>
</verify>
</testcase>
@@ -0,0 +1,53 @@
<testcase>
<info>
<keywords>
FTP
EPSV
APPE
Resume
</keywords>
</info>
# Server-side
<reply>
<size>
17
</size>
</reply>
# Client-side
<client>
<server>
ftp
</server>
<name>
FTP PASV upload resume from end of file
</name>
<command>
ftp://%HOSTIP:%FTPPORT/1038 -T log/upload1038 -C -
</command>
<file name="log/upload1038">
this is the *****cr@p******** that we're gonna upload
worx?
</file>
</client>
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS [email protected]
PWD
EPSV
TYPE I
SIZE 1038
APPE 1038
QUIT
</protocol>
<upload>
cr@p******** that we're gonna upload
worx?
</upload>
</verify>
</testcase>
@@ -0,0 +1,53 @@
<testcase>
<info>
<keywords>
FTP
EPSV
APPE
Resume
</keywords>
</info>
# Server-side
<reply>
<size>
0
</size>
</reply>
# Client-side
<client>
<server>
ftp
</server>
<name>
FTP PASV upload resume from end of empty file
</name>
<command>
ftp://%HOSTIP:%FTPPORT/1039 -T log/upload1039 -C -
</command>
<file name="log/upload1039">
this is the *****cr@p******** that we're gonna upload
worx?
</file>
</client>
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS [email protected]
PWD
EPSV
TYPE I
SIZE 1039
STOR 1039
QUIT
</protocol>
<upload>
this is the *****cr@p******** that we're gonna upload
worx?
</upload>
</verify>
</testcase>
@@ -0,0 +1,43 @@
<testcase>
<info>
<keywords>
FTP
NOBODY
</keywords>
</info>
# Server-side
<reply>
<size>
51
</size>
</reply>
# Client-side
<client>
<server>
ftp
</server>
<name>
FTP --head to get file size only
</name>
<command>
ftp://%HOSTIP:%FTPPORT/a/path/103 --head
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS [email protected]
PWD
CWD a
CWD path
MDTM 103
TYPE I
SIZE 103
REST 0
QUIT
</protocol>
</verify>
</testcase>
@@ -0,0 +1,79 @@
<testcase>
# Similar to test92
<info>
<keywords>
HTTP
HTTP GET
Resume
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 416 Invalid range
Connection: close
Content-Length: 0
</data>
# The file data that exists at the start of the test must be included in
# the verification.
<datacheck>
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
HTTP/1.1 416 Invalid range
Connection: close
Content-Length: 0
</datacheck>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET with resume from end of entirely-downloaded file
</name>
<command>
http://%HOSTIP:%HTTPPORT/1040 -C -
</command>
<file name="log/curl1040.out">
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
</file>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /1040 HTTP/1.1
Range: bytes=100-
Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
</verify>
</testcase>
@@ -0,0 +1,78 @@
<testcase>
# Similar to test33
<info>
<keywords>
HTTP
HTTP PUT
Resume
Content-Range
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Content-Type: text/html
</data>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
HTTP PUT with resume from end of already-uploaded file
</name>
<file name="log/test1041.txt">
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
</file>
<command>
http://%HOSTIP:%HTTPPORT/1041 -Tlog/test1041.txt -C -
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
# curl doesn't do a HEAD request on the remote file so it has no idea whether
# it can skip part of the file or not. Instead, it sends the entire file.
<protocol>
PUT /1041 HTTP/1.1
Content-Range: bytes 0-99/100
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 100
Expect: 100-continue
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
</protocol>
</verify>
</testcase>
@@ -0,0 +1,94 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
Resume
FAILURE
</keywords>
</info>
# Server-side
<reply>
# Some servers (e.g. Apache 1.2) respond this way to an invalid byte range
<data>
HTTP/1.1 200 OK
Connection: close
Content-Length: 100
Content-Type: text/plain
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
</data>
# The file data that exists at the start of the test must be included in
# the verification.
<datacheck>
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
HTTP/1.1 200 OK
Connection: close
Content-Length: 100
Content-Type: text/plain
</datacheck>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET from end of entirely-downloaded file, no server resume
</name>
<command>
http://%HOSTIP:%HTTPPORT/1042 -C -
</command>
<file name="log/curl1042.out">
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
012345678
</file>
</client>
# Verify data after the test has been "shot"
<verify>
<errorcode>
33
</errorcode>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /1042 HTTP/1.1
Range: bytes=100-
Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
</verify>
</testcase>
@@ -0,0 +1,84 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
Resume
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 206 Partial Content
Date: Mon, 13 Nov 2007 13:41:09 GMT
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
Accept-Ranges: bytes
Content-Length: 60
Content-Range: bytes 40-99/100
012345678
012345678
012345678
012345678
012345678
012345678
</data>
# The file data that exists at the start of the test must be included in
# the verification.
<datacheck>
012345678
012345678
012345678
012345678
HTTP/1.1 206 Partial Content
Date: Mon, 13 Nov 2007 13:41:09 GMT
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
Accept-Ranges: bytes
Content-Length: 60
Content-Range: bytes 40-99/100
012345678
012345678
012345678
012345678
012345678
012345678
</datacheck>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET with resume from end of file
</name>
<command>
http://%HOSTIP:%HTTPPORT/1043 -C -
</command>
<file name="log/curl1043.out">
012345678
012345678
012345678
012345678
</file>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /1043 HTTP/1.1
Range: bytes=40-
Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
</verify>
</testcase>
@@ -0,0 +1,58 @@
<testcase>
# Similar to test141
<info>
<keywords>
FTP
NOBODY
Largefile
</keywords>
</info>
# Server-side
<reply>
<data>
</data>
<size>
9999999999
</size>
<mdtm>
213 20080726102659
</mdtm>
</reply>
# Client-side
<client>
<features>
large_file
</features>
<server>
ftp
</server>
<name>
FTP download large file info with -I
</name>
<command>
ftp://%HOSTIP:%FTPPORT/blalbla/1044 -I
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS [email protected]
PWD
CWD blalbla
MDTM 1044
TYPE I
SIZE 1044
REST 0
QUIT
</protocol>
<stdout>
Last-Modified: Sat, 26 Jul 2008 10:26:59 GMT
Content-Length: 9999999999
Accept-ranges: bytes
</stdout>
</verify>
</testcase>
@@ -0,0 +1,52 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
--interface
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Mon, 28 Jul 2008 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/plain
-foo-
</data>
</reply>
#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET with numeric localhost --interface
</name>
<command>
http://%HOSTIP:%HTTPPORT/1045 --interface %CLIENTIP
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /1045 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
</verify>
</testcase>
@@ -0,0 +1,60 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
--interface
IPv6
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Mon, 28 Jul 2008 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/plain
-foo-
</data>
</reply>
#
# Client-side
<client>
<features>
ipv6
</features>
<server>
http-ipv6
</server>
<name>
HTTP-IPv6 GET with numeric localhost --interface
</name>
<command>
-g "http://%HOST6IP:%HTTP6PORT/1046" --interface ::1
</command>
# --interface doesn't accept an address surrounded by [] so %CLIENT6IP is out
<precheck>
perl -e "print 'Test requires default test server host address' if ( '%CLIENT6IP' ne '[::1]' );"
</precheck>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /1046 HTTP/1.1
Host: %HOST6IP:%HTTP6PORT
Accept: */*
</protocol>
</verify>
</testcase>
@@ -0,0 +1,58 @@
<testcase>
<info>
<keywords>
FTP
PASV
LIST
--interface
</keywords>
</info>
#
# Server-side
<reply>
# When doing LIST, we get the default list output hard-coded in the test
# FTP server
<datacheck>
total 20
drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
-r--r--r-- 1 0 1 35 Jul 16 1996 README
lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
</datacheck>
</reply>
#
# Client-side
<client>
<server>
ftp
</server>
<name>
FTP dir list PASV with localhost --interface
</name>
<command>
ftp://%HOSTIP:%FTPPORT/ --interface %CLIENTIP
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS [email protected]
PWD
EPSV
TYPE A
LIST
QUIT
</protocol>
</verify>
</testcase>
@@ -0,0 +1,66 @@
<testcase>
<info>
<keywords>
FTP
PASV
LIST
--interface
IPv6
</keywords>
</info>
#
# Server-side
<reply>
# When doing LIST, we get the default list output hard-coded in the test
# FTP server
<datacheck>
total 20
drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
-r--r--r-- 1 0 1 35 Jul 16 1996 README
lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
</datacheck>
</reply>
#
# Client-side
<client>
<features>
ipv6
</features>
<server>
ftp-ipv6
</server>
<name>
FTP-IPv6 dir list PASV with localhost --interface
</name>
<command>
-g "ftp://%HOST6IP:%FTP6PORT/" --interface ::1
</command>
# --interface doesn't accept an address surrounded by [] so %CLIENT6IP is out
<precheck>
perl -e "print 'Test requires default test server host address' if ( '%CLIENT6IP' ne '[::1]' );"
</precheck>
</client>
#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS [email protected]
PWD
EPSV
TYPE A
LIST
QUIT
</protocol>
</verify>
</testcase>
@@ -0,0 +1,44 @@
<testcase>
<info>
<keywords>
TFTP
TFTP RRQ
--interface
</keywords>
</info>
#
# Server-side
<reply>
<data>
a chunk of
data
returned
to client
</data>
</reply>
#
# Client-side
<client>
<server>
tftp
</server>
<name>
TFTP retrieve with localhost --interface
</name>
<command>
tftp://%HOSTIP:%TFTPPORT//1049 --trace-ascii log/traceit --interface %CLIENTIP
</command>
</client>
#
# Verify pseudo protocol after the test has been "shot"
<verify>
<protocol>
opcode: 1
filename: /1049
mode: octet
</protocol>
</verify>
</testcase>
@@ -0,0 +1,53 @@
<testcase>
<info>
<keywords>
FTP
PASV
TYPE A
RETR
</keywords>
</info>
# Server-side
<reply>
<data>
data
to
see
that FTP
works
so does it?
</data>
<servercmd>
REPLY EPSV 500 no such command
REPLY SIZE 500 no such command
</servercmd>
</reply>
# Client-side
<client>
<server>
ftp
</server>
<name>
FTP user+password in URL and ASCII transfer
</name>
<command>
ftp://userdude:passfellow@%HOSTIP:%FTPPORT/103 --use-ascii
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<protocol>
USER userdude
PASS passfellow
PWD
EPSV
PASV
TYPE A
SIZE 103
RETR 103
QUIT
</protocol>
</verify>
</testcase>
@@ -0,0 +1,66 @@
<testcase>
# Similar to test 253
<info>
<keywords>
FTP-ipv6
IPv6
EPRT
</keywords>
</info>
# Server-side
<reply>
# When doing LIST, we get the default list output hard-coded in the test
# FTP server
<datacheck>
total 20
drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
-r--r--r-- 1 0 1 35 Jul 16 1996 README
lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
</datacheck>
</reply>
# Client-side
<client>
<features>
ipv6
</features>
<server>
ftp-ipv6
</server>
<name>
FTP-IPv6 dir list, EPRT with specified IP
</name>
<command>
-g "ftp://%HOST6IP:%FTP6PORT/" -P ::1
</command>
# --interface doesn't accept an address surrounded by [] so %CLIENT6IP is out
<precheck>
perl -e "print 'Test requires default test server host address' if ( '%CLIENT6IP' ne '[::1]' );"
</precheck>
</client>
# Verify data after the test has been "shot"
<verify>
# Strip all valid kinds of EPRT that curl can send
<strippart>
s/^(EPRT \|2\|::1\|)(.*)/$1/
</strippart>
<protocol>
USER anonymous
PASS [email protected]
PWD
EPRT |2|::1|
TYPE A
LIST
QUIT
</protocol>
</verify>
</testcase>
@@ -0,0 +1,118 @@
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
followlocation
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 301 Redirect swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Location: data/10510002.txt?coolsite=yes
Content-Length: 0
Connection: close
</data>
<data2>
HTTP/1.1 100 Continue
HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Content-Length: 51
If this is received, the location following worked
</data2>
<datacheck>
HTTP/1.1 301 Redirect swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Location: data/10510002.txt?coolsite=yes
Content-Length: 0
Connection: close
HTTP/1.1 100 Continue
HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Content-Length: 51
If this is received, the location following worked
</datacheck>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
HTTP PUT with Location: following
</name>
<command>
http://%HOSTIP:%HTTPPORT/want/1051 -L -T log/test1051.txt
</command>
<file name="log/test1051.txt">
Weird
file
to
upload
for
testing
the
PUT
feature
</file>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
# The primary reason libcurl sends the data part twice in this test is that
# the test HTTP server is blocking until it has read the entire request,
# including the full request-body before it responds. So in this test the
# server says 301 and 100 _after_ the entire PUT body has been sent.
<protocol>
PUT /want/1051 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 78
Expect: 100-continue
Weird
file
to
upload
for
testing
the
PUT
feature
PUT /want/data/10510002.txt?coolsite=yes HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 78
Expect: 100-continue
Weird
file
to
upload
for
testing
the
PUT
feature
</protocol>
</verify>
</testcase>
@@ -0,0 +1,111 @@
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
followlocation
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.0 301 Redirect swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Location: data/10520002.txt?coolsite=yes
Content-Length: 0
Connection: close
</data>
<data2>
HTTP/1.0 200 Followed here fine swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Content-Length: 51
If this is received, the location following worked
</data2>
<datacheck>
HTTP/1.0 301 Redirect swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Location: data/10520002.txt?coolsite=yes
Content-Length: 0
Connection: close
HTTP/1.0 200 Followed here fine swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Content-Length: 51
If this is received, the location following worked
</datacheck>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
HTTP 1.0 PUT with Location: following
</name>
<command>
http://%HOSTIP:%HTTPPORT/want/1052 -0 -L -T log/test1052.txt
</command>
<file name="log/test1052.txt">
Weird
file
to
upload
for
testing
the
PUT
feature
</file>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
# The primary reason libcurl sends the data part twice in this test is that
# the test HTTP server is blocking until it has read the entire request,
# including the full request-body before it responds. So in this test the
# server says 301 and 200 _after_ the entire PUT body has been sent.
<protocol>
PUT /want/1052 HTTP/1.0
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 78
Weird
file
to
upload
for
testing
the
PUT
feature
PUT /want/data/10520002.txt?coolsite=yes HTTP/1.0
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 78
Weird
file
to
upload
for
testing
the
PUT
feature
</protocol>
</verify>
</testcase>
@@ -0,0 +1,129 @@
<testcase>
# Based on test 9
<info>
<keywords>
HTTP
HTTP FORMPOST
HTTP file upload
followlocation
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 307 Redirect swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Location: data/10530002.txt?coolsite=yes
Content-Length: 0
Connection: close
</data>
<data2>
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 11
Connection: close
blablabla
</data2>
<datacheck>
HTTP/1.1 307 Redirect swsclose
Date: Thu, 29 Jul 2008 14:49:00 GMT
Server: test-server/fake
Location: data/10530002.txt?coolsite=yes
Content-Length: 0
Connection: close
HTTP/1.1 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 11
Connection: close
blablabla
</datacheck>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
HTTP RFC1867-type formposting from file with Location: following
</name>
<command>
http://%HOSTIP:%HTTPPORT/we/want/1053 -L -F name=daniel -F tool=curl -F file=@log/test1053.txt
</command>
# We create this file before the command is invoked!
<file name="log/test1053.txt">
foo-
This is a moo-
bar
</file>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^(User-Agent:|Content-Type: multipart/form-data;|------------).*
</strip>
<protocol>
POST /we/want/1053 HTTP/1.1
User-Agent: curl/7.18.2 (i686-pc-linux-gnu) libcurl/7.18.2 OpenSSL/0.9.7a ipv6 zlib/1.1.4
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 410
Expect: 100-continue
Content-Type: multipart/form-data; boundary=----------------------------9ef8d6205763
------------------------------9ef8d6205763
Content-Disposition: form-data; name="name"
daniel
------------------------------9ef8d6205763
Content-Disposition: form-data; name="tool"
curl
------------------------------9ef8d6205763
Content-Disposition: form-data; name="file"; filename="test1053.txt"
Content-Type: text/plain
foo-
This is a moo-
bar
------------------------------9ef8d6205763--
POST /we/want/data/10530002.txt?coolsite=yes HTTP/1.1
User-Agent: curl/7.18.2 (i686-pc-linux-gnu) libcurl/7.18.2 OpenSSL/0.9.7a ipv6 zlib/1.1.4
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 410
Expect: 100-continue
Content-Type: multipart/form-data; boundary=----------------------------9ef8d6205763
------------------------------9ef8d6205763
Content-Disposition: form-data; name="name"
daniel
------------------------------9ef8d6205763
Content-Disposition: form-data; name="tool"
curl
------------------------------9ef8d6205763
Content-Disposition: form-data; name="file"; filename="test1053.txt"
Content-Type: text/plain
foo-
This is a moo-
bar
------------------------------9ef8d6205763--
</protocol>
</verify>
</testcase>
@@ -0,0 +1,80 @@
<testcase>
<info>
<keywords>
HTTP
HTTP POST
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 301 OK swsclose
Location: moo/testcase/10540002
Date: Thu, 31 Jul 2008 14:49:00 GMT
Connection: close
</data>
<data2>
HTTP/1.1 200 OK swsclose
Date: Thu, 31 Jul 2008 14:49:00 GMT
Connection: close
body
</data2>
<datacheck>
HTTP/1.1 301 OK swsclose
Location: moo/testcase/10540002
Date: Thu, 31 Jul 2008 14:49:00 GMT
Connection: close
HTTP/1.1 200 OK swsclose
Date: Thu, 31 Jul 2008 14:49:00 GMT
Connection: close
body
</datacheck>
</reply>
#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP POST from file with 301 redirect and --post301
</name>
<file name="log/test1054.txt">
field=data
</file>
<command>
http://%HOSTIP:%HTTPPORT/blah/1054 -L -d @log/test1054.txt --post301
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol nonewline="yes">
POST /blah/1054 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 10
Content-Type: application/x-www-form-urlencoded
field=dataPOST /blah/moo/testcase/10540002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 10
Content-Type: application/x-www-form-urlencoded
field=data
</protocol>
</verify>
</testcase>
@@ -0,0 +1,100 @@
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
followlocation
FTP
EPSV
STOR
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 307 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Content-Type: text/html
Location: ftp://127.0.0.1:8992/1055
Content-Length: 0
Connection: close
</data>
</reply>
#
# Client-side
<client>
<server>
http
ftp
</server>
<name>
HTTP PUT Location: redirect to FTP URL
</name>
<command>
http://%HOSTIP:%HTTPPORT/1055 -L -T log/test1055.txt
</command>
# The data section doesn't do variable substitution, so we must assert this
<precheck>
perl -e "print 'Test requires default test server host and port' if ( '%HOSTIP' ne '127.0.0.1' || '%FTPPORT' ne '8992' );"
</precheck>
<file name="log/test1055.txt">
Weird
file
to
upload
for
testing
the
PUT
feature
</file>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
PUT /1055 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 78
Expect: 100-continue
Weird
file
to
upload
for
testing
the
PUT
feature
USER anonymous
PASS [email protected]
PWD
EPSV
TYPE I
STOR 1055
QUIT
</protocol>
<upload>
Weird
file
to
upload
for
testing
the
PUT
feature
</upload>
</verify>
</testcase>
@@ -0,0 +1,81 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
IPv6
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK swsclose
Location: http://[::1%259999]:8994/moo/10560002
Date: Thu, 31 Jul 2008 14:49:00 GMT
Connection: close
</data>
<data2>
HTTP/1.1 200 OK swsclose
Date: Thu, 31 Jul 2008 14:49:00 GMT
Connection: close
body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
Location: http://[::1%259999]:8994/moo/10560002
Date: Thu, 31 Jul 2008 14:49:00 GMT
Connection: close
HTTP/1.1 200 OK swsclose
Date: Thu, 31 Jul 2008 14:49:00 GMT
Connection: close
body
</datacheck>
</reply>
#
# Client-side
<client>
<features>
ipv6
</features>
<server>
http
http-ipv6
</server>
<name>
HTTP follow redirect from IPv4 to IPv6 with scope
</name>
<command>
http://%HOSTIP:%HTTPPORT/we/are/all/twits/1056 -L
</command>
# The data section doesn't do variable substitution, so we must assert this
<precheck>
perl -e "print 'Test requires default test server host and port' if ( '%HOST6IP' ne '[::1]' || '%HTTP6PORT' ne '8994' );"
</precheck>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /we/are/all/twits/1056 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /moo/10560002 HTTP/1.1
Host: %HOST6IP:%HTTP6PORT
Accept: */*
</protocol>
</verify>
</testcase>
@@ -0,0 +1,51 @@
<testcase>
<info>
<keywords>
FTP
EPSV
RETR
Range
</keywords>
</info>
# Server-side
<reply>
<data>
456789abcdef
</data>
<datacheck nonewline="yes">
456789abcdef
</datacheck>
<size>
64
</size>
</reply>
# Client-side
<client>
<server>
ftp
</server>
<name>
FTP retrieve a byte-range relative to end of file
</name>
<command>
-r -12 ftp://%HOSTIP:%FTPPORT/1057
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS [email protected]
PWD
EPSV
TYPE I
SIZE 1057
REST 52
RETR 1057
QUIT
</protocol>
</verify>
</testcase>
@@ -0,0 +1,53 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
Content-Range
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 206 Partial Content
Date: Thu, 31 Jul 2008 13:41:09 GMT
Accept-Ranges: bytes
Content-Length: 101
Content-Range: bytes 100-200/201
Connection: close
Content-Type: text/html
..partial data returned from the
server as a result of setting an explicit byte range
in the request
</data>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
HTTP range relative to end of file
</name>
<command>
http://%HOSTIP:%HTTPPORT/want/1058 -r -101
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /want/1058 HTTP/1.1
Range: bytes=-101
Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
</verify>
</testcase>
@@ -0,0 +1,58 @@
<testcase>
<info>
<keywords>
HTTP
HTTP CONNECT
proxytunnel
FTP
FAILURE
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 501 Method not implemented swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close
Content-Length: 0
</data>
</reply>
#
# Client-side
<client>
<features>
ftp
</features>
<server>
http
</server>
<name>
HTTP CONNECT with proxytunnel to unsupported FTP URL
</name>
<command>
ftp://test-number:1059/wanted/page -p -x %HOSTIP:%HTTPPORT
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
# The server doesn't implement CONNECT for ftp, so this must be a failure test
<errorcode>
56
</errorcode>
<strip>
^User-Agent:.*
</strip>
<protocol>
CONNECT test-number:1059 HTTP/1.0
Host: test-number:1059
Proxy-Connection: Keep-Alive
</protocol>
</verify>
</testcase>
@@ -0,0 +1,51 @@
<testcase>
<info>
<keywords>
FTP
EPSV
TYPE A
RETR
type=
</keywords>
</info>
# Server-side
<reply>
<data>
data
to
see
that FTP
works
so does it?
</data>
</reply>
# Client-side
<client>
<server>
ftp
</server>
<name>
FTP GET with type=A style ASCII URL using %20 codes
</name>
<command>
"ftp://%HOSTIP:%FTPPORT//path%20with%20%20spaces//and%20things2/106;type=A"
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS [email protected]
PWD
CWD /path with spaces
CWD and things2
EPSV
TYPE A
SIZE 106
RETR 106
QUIT
</protocol>
</verify>
</testcase>
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,47 @@
<testcase>
<info>
<keywords>
FILE
Range
FAILURE
</keywords>
</info>
# Server-side
<reply>
<data>
</data>
</reply>
# Client-side
<client>
<server>
none
</server>
<features>
file
large_file
</features>
<name>
Invalid large X- range on a file://
</name>
# This range value is 2**32+7, which will be truncated to the valid value 7
# if the large file support is not working correctly
<command>
-r 4294967303- file://localhost/%PWD/log/test1063.txt
</command>
<file name="log/test1063.txt">
1234567890
1234567890
</file>
</client>
# Verify data after the test has been "shot"
<verify>
<errorcode>
36
</errorcode>
<stdout>
</stdout>
</verify>
</testcase>
@@ -0,0 +1,79 @@
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
</keywords>
</info>
<reply>
<data nocheck="1">
HTTP/1.1 200 A OK
Server: curl test
Content-Type: text/html; charset=iso-8859-1
Content-Length: 3
ok
</data>
<data2 nocheck="1">
HTTP/1.1 200 A OK
Server: curl test
Content-Type: text/html; charset=iso-8859-1
Content-Length: 9
still ok
</data2>
</reply>
# Client-side
<client>
#
<server>
http
</server>
<name>
HTTP PUT twice
</name>
<command>
-H "Expect:" -T log/1064 http://%HOSTIP:%HTTPPORT/1064.upload1 -T log/1064 http://%HOSTIP:%HTTPPORT/10640002.upload2
</command>
<file name="log/1064">
test
</file>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
PUT /1064.upload1 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 5
test
PUT /10640002.upload2 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 5
test
</protocol>
<stdout>
HTTP/1.1 200 A OK
Server: curl test
Content-Type: text/html; charset=iso-8859-1
Content-Length: 3
ok
HTTP/1.1 200 A OK
Server: curl test
Content-Type: text/html; charset=iso-8859-1
Content-Length: 9
still ok
</stdout>
</verify>
</testcase>
@@ -0,0 +1,78 @@
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
HTTP GET
</keywords>
</info>
<reply>
<data nocheck="1">
HTTP/1.1 200 A OK
Server: curl test
Content-Type: text/html; charset=iso-8859-1
Content-Length: 3
ok
</data>
<data2 nocheck="1">
HTTP/1.1 200 A OK
Server: curl test
Content-Type: text/html; charset=iso-8859-1
Content-Length: 9
still ok
</data2>
</reply>
# Client-side
<client>
#
<server>
http
</server>
<name>
HTTP PUT with one file but two URLs
</name>
<command>
-H "Expect:" -T log/1065 http://%HOSTIP:%HTTPPORT/1065.upload1 http://%HOSTIP:%HTTPPORT/10650002.url2
</command>
<file name="log/1065">
test
</file>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
PUT /1065.upload1 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 5
test
GET /10650002.url2 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
<stdout>
HTTP/1.1 200 A OK
Server: curl test
Content-Type: text/html; charset=iso-8859-1
Content-Length: 3
ok
HTTP/1.1 200 A OK
Server: curl test
Content-Type: text/html; charset=iso-8859-1
Content-Length: 9
still ok
</stdout>
</verify>
</testcase>
@@ -0,0 +1,82 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>
# Server-side
<reply>
<data nocheck="1">
HTTP/1.1 200 OK
Server: thebest/1.0
Content-Type: text/plain
Content-Length: 6
first
</data>
<data1 nocheck="1">
HTTP/1.1 200 OK
Server: thebest/1.0
Content-Type: text/plain
Content-Length: 7
second
</data1>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
HTTP --dump-header - with two URLs
</name>
<command>
http://%HOSTIP:%HTTPPORT/want/1066 http://%HOSTIP:%HTTPPORT/want/10660001 --dump-header -
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /want/1066 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /want/10660001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
<stdout>
HTTP/1.1 200 OK
HTTP/1.1 200 OK
Server: thebest/1.0
Server: thebest/1.0
Content-Type: text/plain
Content-Type: text/plain
Content-Length: 6
Content-Length: 6
first
HTTP/1.1 200 OK
HTTP/1.1 200 OK
Server: thebest/1.0
Server: thebest/1.0
Content-Type: text/plain
Content-Type: text/plain
Content-Length: 7
Content-Length: 7
second
</stdout>
</verify>
</testcase>
@@ -0,0 +1,78 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: data/10670002.txt?coolsite=yes
Connection: close
This server reply is for testing a simple Location: following
</data>
<data2>
HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52
If this is received, the location following worked
</data2>
<datacheck>
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Location: data/10670002.txt?coolsite=yes
Connection: close
HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 52
If this is received, the location following worked
</datacheck>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
HTTP Location: following with auto-referer
</name>
<command>
http://%HOSTIP:%HTTPPORT/want/1067 -L --referer "firstone.html;auto"
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /want/1067 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Referer: firstone.html
GET /want/data/10670002.txt?coolsite=yes HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Referer: http://%HOSTIP:%HTTPPORT/want/1067
</protocol>
</verify>
</testcase>
@@ -0,0 +1,57 @@
<testcase>
# Similar to test 60
<info>
<keywords>
HTTP
HTTP PUT
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.0 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
blablabla
</data>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
HTTP PUT from stdin
</name>
<command>
http://%HOSTIP:%HTTPPORT/bzz/1068 -T -
</command>
<stdin>
more than one byte
</stdin>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
PUT /bzz/1068 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Transfer-Encoding: chunked
Expect: 100-continue
13
more than one byte
0
</protocol>
</verify>
</testcase>
@@ -0,0 +1,36 @@
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
HTTP/1.0
</keywords>
</info>
# Server-side
<reply>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
HTTP 1.0 PUT from stdin with no content length
</name>
<command>
http://%HOSTIP:%HTTPPORT/bzz/1069 -T - -0
</command>
<stdin>
this data can't be sent
</stdin>
</client>
# Verify data after the test has been "shot"
<verify>
<errorcode>
25
</errorcode>
</verify>
</testcase>
@@ -0,0 +1,51 @@
<testcase>
<info>
<keywords>
FTP
EPSV
STOR
</keywords>
</info>
# Client-side
<client>
<server>
ftp
</server>
<name>
FTP PASV upload file
</name>
<file name="log/test107.txt">
data
to
see
that FTP
works
so does it?
</file>
<command>
ftp://%HOSTIP:%FTPPORT/107 -T log/test107.txt
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<upload>
data
to
see
that FTP
works
so does it?
</upload>
<protocol>
USER anonymous
PASS [email protected]
PWD
EPSV
TYPE I
STOR 107
QUIT
</protocol>
</verify>
</testcase>
@@ -0,0 +1,65 @@
<testcase>
<info>
<keywords>
HTTP
HTTP POST
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 403 Go away and swsclose
Server: test-server/fake
Content-Type: text/html
Content-Length: 55
Connection: close
you are not supposed to be allowed to send things here
</data>
<servercmd>
skip: 2300
</servercmd>
</reply>
#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP POST with server closing connection before (all) data is received
</name>
<command>
-d @log/input1070 http://%HOSTIP:%HTTPPORT/1070
</command>
<file name="log/input1070">
This creates the named file with this content before the test case is run,
which is useful if the test case needs a file to act on. We create this file
rather large (larger than your typical TCP packet) so that not all of it can nor
will be sent in one go as that is kind of the point of this test!
Here's 2000 x 'O':
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
</file>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol nonewline="yes">
POST /1070 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 2313
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue
This creates
</protocol>
</verify>
</testcase>
@@ -0,0 +1,113 @@
<testcase>
# Authorization is used to force curl to realize that the server is
# speaking HTTP 1.0. The request must be resent with the correct
# authorization header, but using HTTP 1.0, not 1.1.
<info>
<keywords>
HTTP
HTTP PUT
HTTP Digest auth
--anyauth
HTTP/1.0
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.0 401 Authorization Required swsclose
Server: testcurl
WWW-Authenticate: Blackmagic realm="gimme all yer s3cr3ts"
WWW-Authenticate: Basic realm="gimme all yer s3cr3ts"
WWW-Authenticate: Digest realm="gimme all yer s3cr3ts", nonce="11223344"
Content-Type: text/plain
Content-Length: 35
Connection: close
Try again on this HTTP 1.0 server!
</data>
# This is supposed to be returned when the server gets a
# Authorization: Digest line passed-in from the client
<data1000>
HTTP/1.0 200 OK swsclose
Server: testcurl
Content-Type: text/plain
Content-Length: 23
Connection: close
This IS the real page!
</data1000>
<datacheck>
HTTP/1.0 401 Authorization Required swsclose
Server: testcurl
WWW-Authenticate: Blackmagic realm="gimme all yer s3cr3ts"
WWW-Authenticate: Basic realm="gimme all yer s3cr3ts"
WWW-Authenticate: Digest realm="gimme all yer s3cr3ts", nonce="11223344"
Content-Type: text/plain
Content-Length: 35
Connection: close
HTTP/1.0 200 OK swsclose
Server: testcurl
Content-Type: text/plain
Content-Length: 23
Connection: close
This IS the real page!
</datacheck>
</reply>
# Client-side
<client>
<server>
http
</server>
<features>
crypto
</features>
<name>
Downgraded HTTP PUT to HTTP 1.0 with authorization
</name>
<command>
http://%HOSTIP:%HTTPPORT/1071 -T log/put1071 -u testuser:testpass --anyauth
</command>
<file name="log/put1071">
This is data we upload with PUT
a second line
line three
four is the number of lines
</file>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
PUT /1071 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 85
Expect: 100-continue
This is data we upload with PUT
a second line
line three
four is the number of lines
PUT /1071 HTTP/1.0
Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/1071", response="df4cef6b52a30e65d472dd848d2055a1"
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 85
This is data we upload with PUT
a second line
line three
four is the number of lines
</protocol>
</verify>
</testcase>
@@ -0,0 +1,78 @@
<testcase>
# Authorization is used to force curl to realize that the server is
# speaking HTTP 1.0. The request is impossible to satisfy with HTTP 1.0
# because chunked encoding is unavailable, so the request must fail.
<info>
<keywords>
HTTP
HTTP PUT
HTTP Digest auth
--anyauth
HTTP/1.0
chunked Transfer-Encoding
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.0 401 Authorization Required swsclose
Server: testcurl
WWW-Authenticate: Blackmagic realm="gimme all yer s3cr3ts"
WWW-Authenticate: Basic realm="gimme all yer s3cr3ts"
WWW-Authenticate: Digest realm="gimme all yer s3cr3ts", nonce="11223344"
Content-Type: text/plain
Content-Length: 0
Connection: close
</data>
</reply>
# Client-side
<client>
<server>
http
</server>
<features>
crypto
</features>
<name>
HTTP chunked PUT to HTTP 1.0 server with authorization
</name>
<command>
http://%HOSTIP:%HTTPPORT/1072 -T - -u testuser:testpass --anyauth
</command>
<stdin>
This is data we upload with PUT
it comes from stdin so MUST be sent
with chunked encoding
which is impossible in HTTP/1.0
</stdin>
</client>
# Verify data after the test has been "shot"
<verify>
<errorcode>
25
</errorcode>
<strip>
^User-Agent:.*
</strip>
<protocol>
PUT /1072 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Transfer-Encoding: chunked
Expect: 100-continue
7a
This is data we upload with PUT
it comes from stdin so MUST be sent
with chunked encoding
which is impossible in HTTP/1.0
0
</protocol>
</verify>
</testcase>
@@ -0,0 +1,72 @@
<testcase>
# Redirection is used to force curl to realize that the server is
# speaking HTTP 1.0. The request is impossible to satisfy with HTTP 1.0
# because chunked encoding is unavailable, so the request must fail.
<info>
<keywords>
HTTP
HTTP PUT
HTTP/1.0
followlocation
chunked Transfer-Encoding
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.0 301 Authorization Required swsclose
Server: testcurl
Content-Type: text/plain
Location: /newlocation/10730002
Content-Length: 0
Connection: close
</data>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
HTTP chunked PUT to HTTP 1.0 server with redirect
</name>
<command>
http://%HOSTIP:%HTTPPORT/1073 -T - -L
</command>
<stdin>
This is data we upload with PUT
it comes from stdin so MUST be sent
with chunked encoding
which is impossible in HTTP/1.0
</stdin>
</client>
# Verify data after the test has been "shot"
<verify>
<errorcode>
25
</errorcode>
<strip>
^User-Agent:.*
</strip>
<protocol>
PUT /1073 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Transfer-Encoding: chunked
Expect: 100-continue
7a
This is data we upload with PUT
it comes from stdin so MUST be sent
with chunked encoding
which is impossible in HTTP/1.0
0
</protocol>
</verify>
</testcase>
@@ -0,0 +1,76 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP/1.0
</keywords>
</info>
# Server-side
<reply>
<data nocheck="true">
HTTP/1.0 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Connection: Keep-Alive
surprise
</data>
<data1>
HTTP/1.0 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close
surprise2
</data1>
<postcmd>
wait 1
</postcmd>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
HTTP downgrade to HTTP/1.0 on second request
</name>
<command>
http://%HOSTIP:%HTTPPORT/want/1074 http://%HOSTIP:%HTTPPORT/wantmore/10740001
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<stdout>
HTTP/1.0 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 9
Connection: Keep-Alive
surprise
HTTP/1.0 200 OK swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close
surprise2
</stdout>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /want/1074 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /wantmore/10740001 HTTP/1.0
Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
</verify>
</testcase>
@@ -0,0 +1,94 @@
<testcase>
<info>
<keywords>
HTTP
HTTP PUT
HTTP Basic auth
--anyauth
</keywords>
</info>
# Server-side
<reply>
# The test server provides no way to respond differently to a subsequent
# Basic authenticated request (we really want to respond with 200 for
# the second), so just respond with 401 for both and let curl deal with it.
<data>
HTTP/1.1 401 Authorization Required
Server: testcurl
WWW-Authenticate: Blackmagic realm="gimme all yer s3cr3ts"
WWW-Authenticate: Basic realm="gimme all yer s3cr3ts"
WWW-Authenticate: X-bogus-auth realm="gimme all yer s3cr3ts"
Content-Type: text/plain
Content-Length: 0
</data>
<datacheck>
HTTP/1.1 401 Authorization Required
Server: testcurl
WWW-Authenticate: Blackmagic realm="gimme all yer s3cr3ts"
WWW-Authenticate: Basic realm="gimme all yer s3cr3ts"
WWW-Authenticate: X-bogus-auth realm="gimme all yer s3cr3ts"
Content-Type: text/plain
Content-Length: 0
HTTP/1.1 401 Authorization Required
Server: testcurl
WWW-Authenticate: Blackmagic realm="gimme all yer s3cr3ts"
WWW-Authenticate: Basic realm="gimme all yer s3cr3ts"
WWW-Authenticate: X-bogus-auth realm="gimme all yer s3cr3ts"
Content-Type: text/plain
Content-Length: 0
</datacheck>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
HTTP PUT with --anyauth authorization (picking Basic)
</name>
<command>
http://%HOSTIP:%HTTPPORT/1075 -T log/put1075 -u testuser:testpass --anyauth
</command>
<file name="log/put1075">
This is data we upload with PUT
a second line
line three
four is the number of lines
</file>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
PUT /1075 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 85
Expect: 100-continue
This is data we upload with PUT
a second line
line three
four is the number of lines
PUT /1075 HTTP/1.1
Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 85
Expect: 100-continue
This is data we upload with PUT
a second line
line three
four is the number of lines
</protocol>
</verify>
</testcase>
@@ -0,0 +1,79 @@
<testcase>
<info>
<keywords>
HTTP
HTTP POST
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK swsclose
Location: moo.html&testcase=/10760002
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close
</data>
<data2>
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close
body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
Location: moo.html&testcase=/10760002
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close
HTTP/1.1 200 OK swsclose
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Connection: close
body
</datacheck>
</reply>
#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP POST with 302 redirect and --post302
</name>
<command>
http://%HOSTIP:%HTTPPORT/blah/1076 -L -d "moo" --post302
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol nonewline="yes">
POST /blah/1076 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded
mooPOST /blah/moo.html&testcase=/10760002 HTTP/1.1
User-Agent: curl/7.10 (i686-pc-linux-gnu) libcurl/7.10 OpenSSL/0.9.6c ipv6 zlib/1.1.3
Host: %HOSTIP:%HTTPPORT
Accept: */*
Content-Length: 3
Content-Type: application/x-www-form-urlencoded
moo
</protocol>
</verify>
</testcase>
@@ -0,0 +1,77 @@
<testcase>
<info>
<keywords>
FTP
HTTP
HTTP/1.0
HTTP GET
HTTP proxy
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.0 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/plain
Content-Length: 9
Funny-head: yesyes
Proxy-Connection: Keep-Alive
contents
</data>
<data2>
HTTP/1.0 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/plain
Content-Length: 9
Funny-head: yesyes
Proxy-Connection: Keep-Alive
contents
</data2>
</reply>
#
# Client-side
<client>
<server>
http
</server>
<features>
ftp
</features>
<name>
FTP over HTTP proxy with downgrade to HTTP 1.0
</name>
<command>
-x %HOSTIP:%HTTPPORT ftp://%HOSTIP:%HTTPPORT/we/want/that/page/1077 ftp://%HOSTIP:%HTTPPORT/we/want/that/page/10770002
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET ftp://%HOSTIP:%HTTPPORT/we/want/that/page/1077 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Pragma: no-cache
Accept: */*
Proxy-Connection: Keep-Alive
GET ftp://%HOSTIP:%HTTPPORT/we/want/that/page/10770002 HTTP/1.0
Host: %HOSTIP:%HTTPPORT
Pragma: no-cache
Accept: */*
Proxy-Connection: Keep-Alive
</protocol>
</verify>
</testcase>
@@ -0,0 +1,86 @@
<testcase>
<info>
<keywords>
HTTP
HTTP/1.0
HTTP GET
HTTP CONNECT
HTTP proxy
proxytunnel
</keywords>
</info>
#
# Server-side
<reply>
<data nocheck="1">
HTTP/1.0 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9
Connection: keep-alive
contents
</data>
</reply>
#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP CONNECT with proxytunnel and downgrade to HTTP/1.0
</name>
<command>
-x %HOSTIP:%HTTPPORT -p http://%HOSTIP:%HTTPPORT/we/want/that/page/1078 http://%HOSTIP:%HTTPPORT/we/want/that/page/1078
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
CONNECT %HOSTIP:%HTTPPORT HTTP/1.0
Host: %HOSTIP:%HTTPPORT
Proxy-Connection: Keep-Alive
GET /we/want/that/page/1078 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /we/want/that/page/1078 HTTP/1.0
Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
<stdout>
HTTP/1.1 200 Mighty fine indeed
HTTP/1.0 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9
Connection: keep-alive
contents
HTTP/1.0 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes
Content-Length: 9
Connection: keep-alive
contents
</stdout>
</verify>
</testcase>
@@ -0,0 +1,75 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP Digest auth
</keywords>
</info>
# Server-side
<reply>
<data>
HTTP/1.1 401 Authorization Required swsclose
Server: Apache/1.3.27 (Darwin) PHP/4.1.2
WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"
Content-Type: text/plain; charset=iso-8859-1
Content-Length: 26
This is not the real page
</data>
# This is supposed to be returned when the server gets a
# Authorization: Digest line passed-in from the client
# Send nothing to force an error code 52 reply
<data1000>
</data1000>
<datacheck>
HTTP/1.1 401 Authorization Required swsclose
Server: Apache/1.3.27 (Darwin) PHP/4.1.2
WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"
Content-Type: text/plain; charset=iso-8859-1
Content-Length: 26
</datacheck>
</reply>
# Client-side
<client>
<server>
http
</server>
<features>
crypto
</features>
<name>
HTTP retry after closed connection and empty response
</name>
<command>
http://%HOSTIP:%HTTPPORT/1079 -u testuser:testpass --digest
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<errorcode>
52
</errorcode>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /1079 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /1079 HTTP/1.1
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/1079", response="e340c7cdca0950462070f46ee139e9f7"
Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
</verify>
</testcase>
@@ -0,0 +1,56 @@
<testcase>
<info>
<keywords>
FTP
PORT
STOR
</keywords>
</info>
# Server-side
<reply>
<data>
</data>
</reply>
# Client-side
<client>
<server>
ftp
</server>
<name>
FTP PORT upload with CWD
</name>
<command>
ftp://%HOSTIP:%FTPPORT/CWD/STOR/RETR/108 -T log/upload108 -P -
</command>
<file name="log/upload108">
Moooooooooooo
upload this
</file>
</client>
# Verify data after the test has been "shot"
<verify>
# Strip all valid kinds of PORT and EPRT that curl can send
<strip>
^PORT \d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3},\d{1,3}
^EPRT \|1\|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\|\d{1,5}\|
</strip>
<protocol>
USER anonymous
PASS [email protected]
PWD
CWD CWD
CWD STOR
CWD RETR
PORT 127,0,0,1,5,109
TYPE I
STOR 108
QUIT
</protocol>
<upload>
Moooooooooooo
upload this
</upload>
</verify>
</testcase>
@@ -0,0 +1,69 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
redirect_url
followlocation
--write-out
</keywords>
</info>
# Server-side
<reply>
<data nocheck="1">
HTTP/1.1 301 This is a weirdo text message swsclose
Location: data/10800002.txt?coolsite=yes
Content-Length: 62
Connection: close
This server reply is for testing a simple Location: following
</data>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
HTTP Location: on two URLs 'redirect_url' check
</name>
<command>
http://%HOSTIP:%HTTPPORT/we/want/our/1080 http://%HOSTIP:%HTTPPORT/we/want/our/1080 -w '%{redirect_url}\n'
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /we/want/our/1080 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /we/want/our/1080 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
<stdout mode="text">
HTTP/1.1 301 This is a weirdo text message swsclose
Location: data/10800002.txt?coolsite=yes
Content-Length: 62
Connection: close
This server reply is for testing a simple Location: following
http://%HOSTIP:%HTTPPORT/we/want/our/data/10800002.txt?coolsite=yes
HTTP/1.1 301 This is a weirdo text message swsclose
Location: data/10800002.txt?coolsite=yes
Content-Length: 62
Connection: close
This server reply is for testing a simple Location: following
http://%HOSTIP:%HTTPPORT/we/want/our/data/10800002.txt?coolsite=yes
</stdout>
</verify>
</testcase>
@@ -0,0 +1,77 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
redirect_url
followlocation
--write-out
</keywords>
</info>
# Server-side
<reply>
<data nocheck="1">
HTTP/1.1 301 This is a weirdo text message swsclose
Location: data/10810099.txt?coolsite=yes
Content-Length: 62
Connection: close
This server reply is for testing a simple Location: following
</data>
<data2 nocheck="1">
HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 41
This second URL does not have a location
</data2>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
HTTP no Location: on second URL 'redirect_url' check
</name>
<command>
http://%HOSTIP:%HTTPPORT/we/want/our/1081 http://%HOSTIP:%HTTPPORT/we/want/our/10810002 -w '%{redirect_url}\n'
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /we/want/our/1081 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
GET /we/want/our/10810002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
<stdout mode="text">
HTTP/1.1 301 This is a weirdo text message swsclose
Location: data/10810099.txt?coolsite=yes
Content-Length: 62
Connection: close
This server reply is for testing a simple Location: following
http://%HOSTIP:%HTTPPORT/we/want/our/data/10810099.txt?coolsite=yes
HTTP/1.1 200 Followed here fine swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Length: 41
This second URL does not have a location
</stdout>
</verify>
</testcase>
@@ -0,0 +1,55 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
--interface
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Mon, 28 Jul 2008 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/plain
-foo-
</data>
</reply>
#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP GET with localhost --interface
</name>
<command>
http://%HOSTIP:%HTTPPORT/1082 --interface localhost
</command>
<precheck>
perl -e "print 'Test requires default test server host address' if ( '%CLIENTIP' ne '127.0.0.1' );"
</precheck>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /1082 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
</verify>
</testcase>
@@ -0,0 +1,59 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
--interface
IPv6
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Mon, 28 Jul 2008 14:49:00 GMT
Server: test-server/fake
Content-Length: 6
Connection: close
Content-Type: text/plain
-foo-
</data>
</reply>
#
# Client-side
<client>
<features>
ipv6
</features>
<server>
http-ipv6
</server>
<name>
HTTP-IPv6 GET with ip6-localhost --interface
</name>
<command>
-g "http://%HOST6IP:%HTTP6PORT/1083" --interface ip6-localhost
</command>
<precheck>
perl -e "if ('%CLIENT6IP' ne '[::1]') {print 'Test requires default test server host address';} else {exec './server/resolve --ipv6 ip6-localhost'; print 'Cannot run precheck resolve';}"
</precheck>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /1083 HTTP/1.1
Host: %HOST6IP:%HTTP6PORT
Accept: */*
</protocol>
</verify>
</testcase>
@@ -0,0 +1,40 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
--interface
FAILURE
</keywords>
</info>
#
# Server-side
<reply>
</reply>
#
# Client-side
<client>
<features>
http
</features>
<server>
none
</server>
<name>
HTTP GET with invalid --interface
</name>
<command>
http://%HOSTIP:%HTTPPORT/1084 --interface non-existing-host.haxx.se.
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<errorcode>
7
</errorcode>
</verify>
</testcase>
@@ -0,0 +1,47 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
--interface
IPv6
FAILURE
</keywords>
</info>
#
# Server-side
<reply>
</reply>
#
# Client-side
<client>
<features>
http
ipv6
</features>
<server>
none
</server>
<name>
HTTP-IPv6 GET with invalid --interface
</name>
<command>
-g "http://%HOST6IP:%HTTP6PORT/1085" --interface non-existing-host.haxx.se.
</command>
# Ensure the IPv6 stack is operational before running this test (other tests
# use the startup of the IPv6 test server as a substitute check for this).
<precheck>
./server/resolve --ipv6 ::1
</precheck>
</client>
#
# Verify data after the test has been "shot"
<verify>
<errorcode>
7
</errorcode>
</verify>
</testcase>

Some files were not shown because too many files have changed in this diff Show More