diff options
-rw-r--r-- | CHANGES | 9 | ||||
-rw-r--r-- | tests/data/DISABLED | 4 | ||||
-rw-r--r-- | tests/data/Makefile.am | 3 | ||||
-rw-r--r-- | tests/data/test1069 | 18 | ||||
-rw-r--r-- | tests/data/test1071 | 113 | ||||
-rw-r--r-- | tests/data/test1072 | 78 | ||||
-rw-r--r-- | tests/data/test1073 | 71 | ||||
-rw-r--r-- | tests/data/test1074 | 76 | ||||
-rw-r--r-- | tests/data/test1075 | 94 |
9 files changed, 453 insertions, 13 deletions
@@ -6,6 +6,15 @@ Changelog +Daniel Fandrich (29 Aug 2008) +- Added tests 1071 through 1074 to test automatic downgrading from HTTP 1.1 + to HTTP 1.0 upon receiving a response from the HTTP server. Tests 1072 + and 1073 are similar to test 1069 in that they involve the impossible + scenario of sending chunked data to a HTTP 1.0 server. All these fail + and are added to DISABLED. + +- Added test 1075 to test --anyauth with Basic authentication. + Daniel Stenberg (29 Aug 2008) - When libcurl was doing a HTTP POST and the server would respond with "Connection: close" and actually close the connection after the diff --git a/tests/data/DISABLED b/tests/data/DISABLED index 87d335550..dc68bd90f 100644 --- a/tests/data/DISABLED +++ b/tests/data/DISABLED @@ -4,3 +4,7 @@ # per line. # Lines starting with '#' letters are treated as comments. 1069 +1071 +1072 +1073 +1074 diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am index 3cdfa631b..185d385e9 100644 --- a/tests/data/Makefile.am +++ b/tests/data/Makefile.am @@ -56,7 +56,8 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \ 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 + test1064 test1065 test1066 test1067 test1068 test1069 test1070 test1071 \ + test1072 test1073 test1074 test1075 filecheck: @mkdir test-place; \ diff --git a/tests/data/test1069 b/tests/data/test1069 index 11b2ce681..5b0b1fa47 100644 --- a/tests/data/test1069 +++ b/tests/data/test1069 @@ -3,13 +3,14 @@ <keywords> HTTP HTTP PUT +HTTP/1.0 </keywords> </info> # Server-side <reply> <data> -HTTP/1.0 200 OK swsclose
+HTTP/1.0 500 Impossible swsclose
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
@@ -30,21 +31,14 @@ HTTP 1.0 PUT from stdin with no content length http://%HOSTIP:%HTTPPORT/bzz/1069 -T - -0 </command> <stdin> -more than one byte +this data can't be sent </stdin> </client> # Verify data after the test has been "shot" <verify> -<strip> -^User-Agent:.* -</strip> -<protocol> -PUT /bzz/1069 HTTP/1.0
-Host: %HOSTIP:%HTTPPORT
-Accept: */*
-Content-Length: 0
-
-</protocol> +<errorcode> +25 +</errorcode> </verify> </testcase> diff --git a/tests/data/test1071 b/tests/data/test1071 new file mode 100644 index 000000000..758457a04 --- /dev/null +++ b/tests/data/test1071 @@ -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> diff --git a/tests/data/test1072 b/tests/data/test1072 new file mode 100644 index 000000000..9a04224f4 --- /dev/null +++ b/tests/data/test1072 @@ -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: 35
+Connection: close
+
+Try again on this HTTP 1.0 server! +</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> diff --git a/tests/data/test1073 b/tests/data/test1073 new file mode 100644 index 000000000..00e7feb0c --- /dev/null +++ b/tests/data/test1073 @@ -0,0 +1,71 @@ +<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> diff --git a/tests/data/test1074 b/tests/data/test1074 new file mode 100644 index 000000000..bb710ce75 --- /dev/null +++ b/tests/data/test1074 @@ -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> diff --git a/tests/data/test1075 b/tests/data/test1075 new file mode 100644 index 000000000..5b8f186a0 --- /dev/null +++ b/tests/data/test1075 @@ -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> |