1<testcase>
2<info>
3<keywords>
4HTTP
5HTTP PUT
6followlocation
7</keywords>
8
9</info>
10# Server-side
11<reply>
12<data>
13HTTP/1.1 301 Redirect swsclose
14Date: Thu, 29 Jul 2008 14:49:00 GMT
15Server: test-server/fake
16Location: data/10510002.txt?coolsite=yes
17Content-Length: 0
18Connection: close
19
20</data>
21<data2>
22HTTP/1.1 100 Continue
23
24HTTP/1.1 200 Followed here fine swsclose
25Date: Thu, 29 Jul 2008 14:49:00 GMT
26Server: test-server/fake
27Content-Length: 51
28
29If this is received, the location following worked
30</data2>
31<datacheck>
32HTTP/1.1 301 Redirect swsclose
33Date: Thu, 29 Jul 2008 14:49:00 GMT
34Server: test-server/fake
35Location: data/10510002.txt?coolsite=yes
36Content-Length: 0
37Connection: close
38
39HTTP/1.1 100 Continue
40
41HTTP/1.1 200 Followed here fine swsclose
42Date: Thu, 29 Jul 2008 14:49:00 GMT
43Server: test-server/fake
44Content-Length: 51
45
46If this is received, the location following worked
47</datacheck>
48</reply>
49
50# Client-side
51<client>
52<server>
53http
54</server>
55 <name>
56HTTP PUT with Location: following
57 </name>
58 <command>
59http://%HOSTIP:%HTTPPORT/want/1051 -L -T log/test1051.txt
60</command>
61<file name="log/test1051.txt">
62Weird
63     file
64         to
65   upload
66for
67   testing
68the
69   PUT
70      feature
71</file>
72</client>
73
74# Verify data after the test has been "shot"
75<verify>
76<strip>
77^User-Agent:.*
78</strip>
79
80# The primary reason libcurl sends the data part twice in this test is that
81# the test HTTP server is blocking until it has read the entire request,
82# including the full request-body before it responds. So in this test the
83# server says 301 and 100 _after_ the entire PUT body has been sent.
84
85<protocol>
86PUT /want/1051 HTTP/1.1
87Host: %HOSTIP:%HTTPPORT
88Accept: */*
89Content-Length: 78
90Expect: 100-continue
91
92Weird
93     file
94         to
95   upload
96for
97   testing
98the
99   PUT
100      feature
101PUT /want/data/10510002.txt?coolsite=yes HTTP/1.1
102Host: %HOSTIP:%HTTPPORT
103Accept: */*
104Content-Length: 78
105Expect: 100-continue
106
107Weird
108     file
109         to
110   upload
111for
112   testing
113the
114   PUT
115      feature
116</protocol>
117</verify>
118</testcase>
119