@@ -30,6 +30,7 @@ object RequestTests extends TestSuite{
3030 }
3131 }
3232 }
33+
3334 test(" params" ){
3435 test(" get" ){
3536 // All in URL
@@ -58,6 +59,7 @@ object RequestTests extends TestSuite{
5859 assert(read(res4).obj(" args" ) == Obj (" ++-- lol" -> " !@#$%" , " hello" -> " world" ))
5960 }
6061 }
62+
6163 test(" multipart" ){
6264 for (chunkedUpload <- Seq (true , false )) {
6365 val response = requests.post(
@@ -73,8 +75,8 @@ object RequestTests extends TestSuite{
7375 assert(read(response).obj(" form" ) == Obj (" file2" -> " Goodbye!" ))
7476 }
7577 }
76- test(" cookies" ){
7778
79+ test(" cookies" ){
7880 test(" session" ){
7981 val s = requests.Session (cookieValues = Map (" hello" -> " world" ))
8082 val res1 = s.get(" https://httpbin.org/cookies" ).text().trim
@@ -99,35 +101,37 @@ object RequestTests extends TestSuite{
99101 assert(read(res2) == Obj (" cookies" -> Obj (" freeform" -> " test test" , " hello" -> " hello, world" )))
100102 }
101103 }
102- // Tests fail with 'Request to https://httpbin.org/absolute-redirect/4 failed with status code 404'
103- // test("redirects"){
104- // test("max"){
105- // val res1 = requests.get("https://httpbin.org/absolute-redirect/4")
106- // assert(res1.statusCode == 200)
107- // val res2 = requests.get("https://httpbin.org/absolute-redirect/5")
108- // assert(res2.statusCode == 200)
109- // val res3 = requests.get("https://httpbin.org/absolute-redirect/6", check = false)
110- // assert(res3.statusCode == 302)
111- // val res4 = requests.get("https://httpbin.org/absolute-redirect/6", maxRedirects = 10)
112- // assert(res4.statusCode == 200)
113- // }
114- // test("maxRelative"){
115- // val res1 = requests.get("https://httpbin.org/relative-redirect/4")
116- // assert(res1.statusCode == 200)
117- // val res2 = requests.get("https://httpbin.org/relative-redirect/5")
118- // assert(res2.statusCode == 200)
119- // val res3 = requests.get("https://httpbin.org/relative-redirect/6", check = false)
120- // assert(res3.statusCode == 302)
121- // val res4 = requests.get("https://httpbin.org/relative-redirect/6", maxRedirects = 10)
122- // assert(res4.statusCode == 200)
123- // }
124- // }
104+
105+ test(" redirects" ){
106+ test(" max" ){
107+ val res1 = requests.get(" https://httpbin.org/absolute-redirect/4" )
108+ assert(res1.statusCode == 200 )
109+ val res2 = requests.get(" https://httpbin.org/absolute-redirect/5" )
110+ assert(res2.statusCode == 200 )
111+ val res3 = requests.get(" https://httpbin.org/absolute-redirect/6" , check = false )
112+ assert(res3.statusCode == 302 )
113+ val res4 = requests.get(" https://httpbin.org/absolute-redirect/6" , maxRedirects = 10 )
114+ assert(res4.statusCode == 200 )
115+ }
116+ test(" maxRelative" ){
117+ val res1 = requests.get(" https://httpbin.org/relative-redirect/4" )
118+ assert(res1.statusCode == 200 )
119+ val res2 = requests.get(" https://httpbin.org/relative-redirect/5" )
120+ assert(res2.statusCode == 200 )
121+ val res3 = requests.get(" https://httpbin.org/relative-redirect/6" , check = false )
122+ assert(res3.statusCode == 302 )
123+ val res4 = requests.get(" https://httpbin.org/relative-redirect/6" , maxRedirects = 10 )
124+ assert(res4.statusCode == 200 )
125+ }
126+ }
127+
125128 test(" streaming" ){
126129 val res1 = requests.get(" http://httpbin.org/stream/5" ).text()
127130 assert(res1.linesIterator.length == 5 )
128131 val res2 = requests.get(" http://httpbin.org/stream/52" ).text()
129132 assert(res2.linesIterator.length == 52 )
130133 }
134+
131135 test(" timeouts" ){
132136 test(" read" ){
133137 intercept[TimeoutException ] {
@@ -144,6 +148,7 @@ object RequestTests extends TestSuite{
144148 }
145149 }
146150 }
151+
147152 test(" failures" ){
148153 intercept[UnknownHostException ]{
149154 requests.get(" https://doesnt-exist-at-all.com/" )
@@ -156,6 +161,7 @@ object RequestTests extends TestSuite{
156161 requests.get(" ://doesnt-exist.com/" )
157162 }
158163 }
164+
159165 test(" decompress" ){
160166 val res1 = requests.get(" https://httpbin.org/gzip" )
161167 assert(read(res1.text()).obj(" headers" ).obj(" Host" ).str == " httpbin.org" )
@@ -171,6 +177,7 @@ object RequestTests extends TestSuite{
171177
172178 (res1.bytes.length, res2.bytes.length, res3.bytes.length, res4.bytes.length)
173179 }
180+
174181 test(" compression" ){
175182 val res1 = requests.post(
176183 " https://httpbin.org/post" ,
@@ -184,16 +191,18 @@ object RequestTests extends TestSuite{
184191 compress = requests.Compress .Gzip ,
185192 data = new RequestBlob .ByteSourceRequestBlob (" I am cow" )
186193 )
187- assert(res2.text().contains(" data:application/octet-stream;base64,H4sIAAAAAAAAAA==" ))
194+ assert(read(new String (res2.bytes))(" data" ).toString ==
195+ """ "data:application/octet-stream;base64,H4sIAAAAAAAAAPNUSMxVSM4vBwCAGeD4CAAAAA=="""" )
188196
189197 val res3 = requests.post(
190198 " https://httpbin.org/post" ,
191199 compress = requests.Compress .Deflate ,
192200 data = new RequestBlob .ByteSourceRequestBlob (" Hear me moo" )
193201 )
194- assert(res3.text().contains(" data:application/octet-stream;base64,eJw=" ))
195- res3.text()
196- }
202+ assert(read(new String (res2.bytes))(" data" ).toString ==
203+ """ "data:application/octet-stream;base64,H4sIAAAAAAAAAPNUSMxVSM4vBwCAGeD4CAAAAA=="""" )
204+ }
205+
197206 test(" headers" ){
198207 test(" default" ){
199208 val res = requests.get(" https://httpbin.org/headers" ).text()
@@ -207,6 +216,7 @@ object RequestTests extends TestSuite{
207216 }
208217 }
209218 }
219+
210220 test(" clientCertificate" ){
211221 val base = " ./requests/test/resources"
212222 val url = " https://client.badssl.com"
@@ -253,13 +263,15 @@ object RequestTests extends TestSuite{
253263 assert(res.statusCode == 400 )
254264 }
255265 }
266+
256267 test(" selfSignedCertificate" ){
257268 val res = requests.get(
258269 " https://self-signed.badssl.com" ,
259270 verifySslCerts = false
260271 )
261272 assert(res.statusCode == 200 )
262273 }
274+
263275 test(" gzipError" ){
264276 val response = requests.head(" https://api.github.com/users/lihaoyi" )
265277 assert(response.statusCode == 200 )
@@ -268,5 +280,23 @@ object RequestTests extends TestSuite{
268280 assert(response.headers.keySet.map(_.toLowerCase).contains(" content-length" ))
269281 assert(response.headers.keySet.map(_.toLowerCase).contains(" content-type" ))
270282 }
283+
284+ /**
285+ * Compress with each compression mode and call server. Server expands
286+ * and passes it back so we can compare
287+ */
288+ test(" compressionData" ) {
289+ import requests .Compress ._
290+ val str = " I am deflater mouse"
291+ Seq (None , Gzip , Deflate ).foreach(c =>
292+ ServerUtils .usingEchoServer { port =>
293+ assert(str == requests.post(
294+ s " http://localhost: $port/echo " ,
295+ compress = c,
296+ data = new RequestBlob .ByteSourceRequestBlob (str)
297+ ).data.toString)
298+ }
299+ )
300+ }
271301 }
272302}
0 commit comments