@@ -2,6 +2,7 @@ package kid
2
2
3
3
import (
4
4
"encoding/json"
5
+ "encoding/xml"
5
6
"net/http"
6
7
"net/http/httptest"
7
8
"net/url"
@@ -247,6 +248,7 @@ func TestContextJSON(t *testing.T) {
247
248
err := ctx .JSON (http .StatusCreated , & p )
248
249
249
250
assert .NoError (t , err )
251
+ assert .Equal (t , http .StatusCreated , res .Code )
250
252
assert .Equal (t , "application/json" , res .Header ().Get ("Content-Type" ))
251
253
assert .Equal (t , "{\" name\" :\" foo\" ,\" age\" :1999}\n " , res .Body .String ())
252
254
@@ -272,6 +274,7 @@ func TestContextJSONIndent(t *testing.T) {
272
274
err := ctx .JSONIndent (http .StatusCreated , & p , " " )
273
275
274
276
assert .NoError (t , err )
277
+ assert .Equal (t , http .StatusCreated , res .Code )
275
278
assert .Equal (t , "application/json" , res .Header ().Get ("Content-Type" ))
276
279
assert .Equal (t , "{\n \" name\" : \" foo\" ,\n \" age\" : 1999\n }\n " , res .Body .String ())
277
280
@@ -301,6 +304,104 @@ func TestContextJSONByte(t *testing.T) {
301
304
err = ctx .JSONByte (http .StatusOK , blob )
302
305
303
306
assert .NoError (t , err )
307
+ assert .Equal (t , http .StatusOK , res .Code )
304
308
assert .Equal (t , "application/json" , res .Header ().Get ("Content-Type" ))
305
309
assert .Equal (t , "{\" name\" :\" foo\" ,\" age\" :1999}" , res .Body .String ())
306
310
}
311
+
312
+ func TestContextReadXML (t * testing.T ) {
313
+ ctx := newContext (New ())
314
+
315
+ req := httptest .NewRequest (http .MethodGet , "/" , strings .NewReader ("<person><name>Mojix</name><age>22</age></person>" ))
316
+
317
+ ctx .reset (req , nil )
318
+
319
+ var p person
320
+ err := ctx .ReadXML (& p )
321
+ assert .NoError (t , err )
322
+
323
+ assert .Equal (t , person {Name : "Mojix" , Age : 22 }, p )
324
+
325
+ req = httptest .NewRequest (http .MethodGet , "/" , strings .NewReader ("<person><name>Mojix</name><age>22</age></person" ))
326
+
327
+ ctx .reset (req , nil )
328
+
329
+ var p2 person
330
+ httpErr := ctx .ReadXML (& p2 ).(* errors.HTTPError )
331
+
332
+ assert .Error (t , httpErr )
333
+ assert .Error (t , httpErr .Err )
334
+ assert .Equal (t , http .StatusBadRequest , httpErr .Code )
335
+ }
336
+
337
+ func TestContextXML (t * testing.T ) {
338
+ ctx := newContext (New ())
339
+
340
+ res := httptest .NewRecorder ()
341
+
342
+ ctx .reset (nil , res )
343
+
344
+ p := person {Name : "foo" , Age : 1999 }
345
+ err := ctx .XML (http .StatusCreated , & p )
346
+
347
+ assert .NoError (t , err )
348
+ assert .Equal (t , http .StatusCreated , res .Code )
349
+ assert .Equal (t , "application/xml" , res .Header ().Get ("Content-Type" ))
350
+ assert .Equal (t , "<person><name>foo</name><age>1999</age></person>" , res .Body .String ())
351
+
352
+ res = httptest .NewRecorder ()
353
+
354
+ ctx .reset (nil , res )
355
+
356
+ httpErr := ctx .XML (http .StatusCreated , make (chan bool )).(* errors.HTTPError )
357
+
358
+ assert .Error (t , httpErr )
359
+ assert .Error (t , httpErr .Err )
360
+ assert .Equal (t , http .StatusInternalServerError , httpErr .Code )
361
+ }
362
+
363
+ func TestContextXMLIndent (t * testing.T ) {
364
+ ctx := newContext (New ())
365
+
366
+ res := httptest .NewRecorder ()
367
+
368
+ ctx .reset (nil , res )
369
+
370
+ p := person {Name : "foo" , Age : 1999 }
371
+ err := ctx .XMLIndent (http .StatusCreated , & p , " " )
372
+
373
+ assert .NoError (t , err )
374
+ assert .Equal (t , http .StatusCreated , res .Code )
375
+ assert .Equal (t , "application/xml" , res .Header ().Get ("Content-Type" ))
376
+ assert .Equal (t , "<person>\n <name>foo</name>\n <age>1999</age>\n </person>" , res .Body .String ())
377
+
378
+ res = httptest .NewRecorder ()
379
+
380
+ ctx .reset (nil , res )
381
+
382
+ httpErr := ctx .XMLIndent (http .StatusCreated , make (chan bool ), " " ).(* errors.HTTPError )
383
+
384
+ assert .Error (t , httpErr )
385
+ assert .Error (t , httpErr .Err )
386
+ assert .Equal (t , http .StatusInternalServerError , httpErr .Code )
387
+ }
388
+
389
+ func TestContextXMLByte (t * testing.T ) {
390
+ ctx := newContext (New ())
391
+
392
+ res := httptest .NewRecorder ()
393
+
394
+ ctx .reset (nil , res )
395
+
396
+ p := person {Name : "foo" , Age : 1999 }
397
+
398
+ blob , err := xml .Marshal (p )
399
+ assert .NoError (t , err )
400
+
401
+ err = ctx .XMLByte (http .StatusOK , blob )
402
+
403
+ assert .NoError (t , err )
404
+ assert .Equal (t , http .StatusOK , res .Code )
405
+ assert .Equal (t , "application/xml" , res .Header ().Get ("Content-Type" ))
406
+ assert .Equal (t , "<person><name>foo</name><age>1999</age></person>" , res .Body .String ())
407
+ }
0 commit comments