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> | 
