Imported Upstream version 7.59.0
[platform/upstream/curl.git] / tests / data / test2026
1 <testcase>
2 <info>
3 <keywords>
4 HTTP
5 HTTP GET
6 HTTP Basic auth
7 HTTP Digest auth
8 </keywords>
9 </info>
10 # Server-side
11 <reply>
12
13 <!-- Alternate the order that Basic and Digest headers appear in responses to
14 ensure that the order doesn't matter. -->
15
16 <!-- First request has Digest auth, wrong password -->
17 <data100>
18 HTTP/1.1 401 Need Basic or Digest auth
19 Server: Microsoft-IIS/5.0
20 Content-Type: text/html; charset=iso-8859-1
21 Content-Length: 27
22 WWW-Authenticate: Digest realm="testrealm", nonce="1"
23 WWW-Authenticate: Basic realm="testrealm"
24
25 This is not the real page!
26 </data100>
27
28 <data1100>
29 HTTP/1.1 401 Sorry wrong password
30 Server: Microsoft-IIS/5.0
31 Content-Type: text/html; charset=iso-8859-1
32 Content-Length: 29
33 WWW-Authenticate: Basic realm="testrealm"
34 WWW-Authenticate: Digest realm="testrealm", nonce="2"
35
36 This is a bad password page!
37 </data1100>
38
39 <!-- Second request has Basic auth, right password -->
40 <data200>
41 HTTP/1.1 200 Things are fine in server land
42 Server: Microsoft-IIS/5.0
43 Content-Type: text/html; charset=iso-8859-1
44 Content-Length: 32
45
46 Finally, this is the real page!
47 </data200>
48
49 <!-- Third request has Digest auth, wrong password -->
50 <data300>
51 HTTP/1.1 401 Need Basic or Digest auth (2)
52 Server: Microsoft-IIS/5.0
53 Content-Type: text/html; charset=iso-8859-1
54 Content-Length: 27
55 WWW-Authenticate: Digest realm="testrealm", nonce="3"
56 WWW-Authenticate: Basic realm="testrealm"
57
58 This is not the real page!
59 </data300>
60
61 <data1300>
62 HTTP/1.1 401 Sorry wrong password (2)
63 Server: Microsoft-IIS/5.0
64 Content-Type: text/html; charset=iso-8859-1
65 Content-Length: 29
66 WWW-Authenticate: Basic realm="testrealm"
67 WWW-Authenticate: Digest realm="testrealm", nonce="4"
68
69 This is a bad password page!
70 </data1300>
71
72 <!-- Fourth request has Basic auth, wrong password -->
73 <data400>
74 HTTP/1.1 401 Sorry wrong password (3)
75 Server: Microsoft-IIS/5.0
76 Content-Type: text/html; charset=iso-8859-1
77 Content-Length: 29
78 WWW-Authenticate: Digest realm="testrealm", nonce="5"
79 WWW-Authenticate: Basic realm="testrealm"
80
81 This is a bad password page!
82 </data400>
83
84 <!-- Fifth request has Basic auth, right password -->
85 <data500>
86 HTTP/1.1 200 Things are fine in server land (2)
87 Server: Microsoft-IIS/5.0
88 Content-Type: text/html; charset=iso-8859-1
89 Content-Length: 32
90
91 Finally, this is the real page!
92 </data500>
93
94 <datacheck>
95 HTTP/1.1 401 Need Basic or Digest auth
96 Server: Microsoft-IIS/5.0
97 Content-Type: text/html; charset=iso-8859-1
98 Content-Length: 27
99 WWW-Authenticate: Digest realm="testrealm", nonce="1"
100 WWW-Authenticate: Basic realm="testrealm"
101
102 HTTP/1.1 401 Sorry wrong password
103 Server: Microsoft-IIS/5.0
104 Content-Type: text/html; charset=iso-8859-1
105 Content-Length: 29
106 WWW-Authenticate: Basic realm="testrealm"
107 WWW-Authenticate: Digest realm="testrealm", nonce="2"
108
109 This is a bad password page!
110 HTTP/1.1 200 Things are fine in server land
111 Server: Microsoft-IIS/5.0
112 Content-Type: text/html; charset=iso-8859-1
113 Content-Length: 32
114
115 Finally, this is the real page!
116 HTTP/1.1 401 Need Basic or Digest auth (2)
117 Server: Microsoft-IIS/5.0
118 Content-Type: text/html; charset=iso-8859-1
119 Content-Length: 27
120 WWW-Authenticate: Digest realm="testrealm", nonce="3"
121 WWW-Authenticate: Basic realm="testrealm"
122
123 HTTP/1.1 401 Sorry wrong password (2)
124 Server: Microsoft-IIS/5.0
125 Content-Type: text/html; charset=iso-8859-1
126 Content-Length: 29
127 WWW-Authenticate: Basic realm="testrealm"
128 WWW-Authenticate: Digest realm="testrealm", nonce="4"
129
130 This is a bad password page!
131 HTTP/1.1 401 Sorry wrong password (3)
132 Server: Microsoft-IIS/5.0
133 Content-Type: text/html; charset=iso-8859-1
134 Content-Length: 29
135 WWW-Authenticate: Digest realm="testrealm", nonce="5"
136 WWW-Authenticate: Basic realm="testrealm"
137
138 This is a bad password page!
139 HTTP/1.1 200 Things are fine in server land (2)
140 Server: Microsoft-IIS/5.0
141 Content-Type: text/html; charset=iso-8859-1
142 Content-Length: 32
143
144 Finally, this is the real page!
145 </datacheck>
146
147 </reply>
148
149 # Client-side
150 <client>
151 <server>
152 http
153 </server>
154 <features>
155 !SSPI
156 crypto
157 </features>
158 <tool>
159 libauthretry
160 </tool>
161
162  <name>
163 HTTP authorization retry (Digest switching to Basic)
164  </name>
165  <setenv>
166 # we force our own host name, in order to make the test machine independent
167 CURL_GETHOSTNAME=curlhost
168 # we try to use the LD_PRELOAD hack, if not a debug build
169 LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
170  </setenv>
171  <command>
172 http://%HOSTIP:%HTTPPORT/2026 digest basic
173 </command>
174 <precheck>
175 chkhostname curlhost
176 </precheck>
177 </client>
178
179 # Verify data after the test has been "shot"
180 <verify>
181 <strip>
182 ^User-Agent:.*
183 </strip>
184 <protocol>
185 GET /20260100 HTTP/1.1
186 Host: %HOSTIP:%HTTPPORT
187 Accept: */*
188
189 GET /20260100 HTTP/1.1
190 Host: %HOSTIP:%HTTPPORT
191 Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/20260100", response="5f992a2e761ab926256419f7c685f85b"
192 Accept: */*
193
194 GET /20260200 HTTP/1.1
195 Host: %HOSTIP:%HTTPPORT
196 Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
197 Accept: */*
198
199 GET /20260300 HTTP/1.1
200 Host: %HOSTIP:%HTTPPORT
201 Accept: */*
202
203 GET /20260300 HTTP/1.1
204 Host: %HOSTIP:%HTTPPORT
205 Authorization: Digest username="testuser", realm="testrealm", nonce="3", uri="/20260300", response="132242e602882251929be93228c830ae"
206 Accept: */*
207
208 GET /20260400 HTTP/1.1
209 Host: %HOSTIP:%HTTPPORT
210 Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz
211 Accept: */*
212
213 GET /20260500 HTTP/1.1
214 Host: %HOSTIP:%HTTPPORT
215 Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
216 Accept: */*
217
218 </protocol>
219 </verify>
220 </testcase>