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.
This commit is contained in:
Родитель
d24465b79a
Коммит
85a79f9d67
9
CHANGES
9
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
|
||||
|
|
|
@ -4,3 +4,7 @@
|
|||
# per line.
|
||||
# Lines starting with '#' letters are treated as comments.
|
||||
1069
|
||||
1071
|
||||
1072
|
||||
1073
|
||||
1074
|
||||
|
|
|
@ -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; \
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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: 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>
|
|
@ -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>
|
|
@ -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>
|
Загрузка…
Ссылка в новой задаче