From 85a79f9d6758f01301ae087566c62ed5041ecadc Mon Sep 17 00:00:00 2001 From: Dan Fandrich Date: Fri, 29 Aug 2008 23:42:39 +0000 Subject: [PATCH] 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 currently fail and are added to DISABLED. Added test 1075 to test --anyauth with Basic authentication. --- CHANGES | 9 ++++ tests/data/DISABLED | 4 ++ tests/data/Makefile.am | 3 +- tests/data/test1069 | 18 +++----- tests/data/test1071 | 113 +++++++++++++++++++++++++++++++++++++++++++++++++ tests/data/test1072 | 78 ++++++++++++++++++++++++++++++++++ tests/data/test1073 | 71 +++++++++++++++++++++++++++++++ tests/data/test1074 | 76 +++++++++++++++++++++++++++++++++ tests/data/test1075 | 94 ++++++++++++++++++++++++++++++++++++++++ 9 files changed, 453 insertions(+), 13 deletions(-) create mode 100644 tests/data/test1071 create mode 100644 tests/data/test1072 create mode 100644 tests/data/test1073 create mode 100644 tests/data/test1074 create mode 100644 tests/data/test1075 diff --git a/CHANGES b/CHANGES index 8b7b527..9fbc130 100644 --- a/CHANGES +++ b/CHANGES @@ -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 87d3355..dc68bd9 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 3cdfa63..185d385 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 11b2ce6..5b0b1fa 100644 --- a/tests/data/test1069 +++ b/tests/data/test1069 @@ -3,13 +3,14 @@ HTTP HTTP PUT +HTTP/1.0 # Server-side -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 -more than one byte +this data can't be sent # Verify data after the test has been "shot" - -^User-Agent:.* - - -PUT /bzz/1069 HTTP/1.0 -Host: %HOSTIP:%HTTPPORT -Accept: */* -Content-Length: 0 - - + +25 + diff --git a/tests/data/test1071 b/tests/data/test1071 new file mode 100644 index 0000000..758457a --- /dev/null +++ b/tests/data/test1071 @@ -0,0 +1,113 @@ + +# 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. + + +HTTP +HTTP PUT +HTTP Digest auth +--anyauth +HTTP/1.0 + + + +# Server-side + + +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! + + +# This is supposed to be returned when the server gets a +# Authorization: Digest line passed-in from the client + +HTTP/1.0 200 OK swsclose +Server: testcurl +Content-Type: text/plain +Content-Length: 23 +Connection: close + +This IS the real page! + + + +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! + + + + +# Client-side + + +http + + +crypto + + +Downgraded HTTP PUT to HTTP 1.0 with authorization + + +http://%HOSTIP:%HTTPPORT/1071 -T log/put1071 -u testuser:testpass --anyauth + + +This is data we upload with PUT +a second line +line three +four is the number of lines + + + +# Verify data after the test has been "shot" + + +^User-Agent:.* + + +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 + + + diff --git a/tests/data/test1072 b/tests/data/test1072 new file mode 100644 index 0000000..9a04224 --- /dev/null +++ b/tests/data/test1072 @@ -0,0 +1,78 @@ + +# 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. + + +HTTP +HTTP PUT +HTTP Digest auth +--anyauth +HTTP/1.0 +chunked Transfer-Encoding + + + +# Server-side + + +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! + + + +# Client-side + + +http + + +crypto + + +HTTP chunked PUT to HTTP 1.0 server with authorization + + +http://%HOSTIP:%HTTPPORT/1072 -T - -u testuser:testpass --anyauth + + +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 + + + +# Verify data after the test has been "shot" + + +25 + + +^User-Agent:.* + + +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 + + + + diff --git a/tests/data/test1073 b/tests/data/test1073 new file mode 100644 index 0000000..00e7feb --- /dev/null +++ b/tests/data/test1073 @@ -0,0 +1,71 @@ + +# 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. + + +HTTP +HTTP PUT +HTTP/1.0 +followlocation +chunked Transfer-Encoding + + + +# Server-side + + +HTTP/1.0 301 Authorization Required swsclose +Server: testcurl +Content-Type: text/plain +Location: /newlocation/10730002 +Content-Length: 0 +Connection: close + + + + +# Client-side + + +http + + +HTTP chunked PUT to HTTP 1.0 server with redirect + + +http://%HOSTIP:%HTTPPORT/1073 -T - -L + + +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 + + + +# Verify data after the test has been "shot" + + +25 + + +^User-Agent:.* + + +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 + + + + diff --git a/tests/data/test1074 b/tests/data/test1074 new file mode 100644 index 0000000..bb710ce --- /dev/null +++ b/tests/data/test1074 @@ -0,0 +1,76 @@ + + + +HTTP +HTTP GET +HTTP/1.0 + + + +# Server-side + + +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 + + + +wait 1 + + + +# Client-side + + +http + + +HTTP downgrade to HTTP/1.0 on second request + + +http://%HOSTIP:%HTTPPORT/want/1074 http://%HOSTIP:%HTTPPORT/wantmore/10740001 + + + +# Verify data after the test has been "shot" + + +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 + + + +^User-Agent:.* + + +GET /want/1074 HTTP/1.1 +Host: %HOSTIP:%HTTPPORT +Accept: */* + +GET /wantmore/10740001 HTTP/1.0 +Host: %HOSTIP:%HTTPPORT +Accept: */* + + + + diff --git a/tests/data/test1075 b/tests/data/test1075 new file mode 100644 index 0000000..5b8f186 --- /dev/null +++ b/tests/data/test1075 @@ -0,0 +1,94 @@ + + + +HTTP +HTTP PUT +HTTP Basic auth +--anyauth + + + +# Server-side + +# 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. + +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 + +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 + + + + +# Client-side + + +http + + +HTTP PUT with --anyauth authorization (picking Basic) + + +http://%HOSTIP:%HTTPPORT/1075 -T log/put1075 -u testuser:testpass --anyauth + + +This is data we upload with PUT +a second line +line three +four is the number of lines + + + +# Verify data after the test has been "shot" + + +^User-Agent:.* + + +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 + + + -- 2.7.4