test-body.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. var server = require('./server')
  2. , events = require('events')
  3. , stream = require('stream')
  4. , assert = require('assert')
  5. , request = require('../index')
  6. ;
  7. var s = server.createServer();
  8. var tests =
  9. { testGet :
  10. { resp : server.createGetResponse("TESTING!")
  11. , expectBody: "TESTING!"
  12. }
  13. , testGetChunkBreak :
  14. { resp : server.createChunkResponse(
  15. [ new Buffer([239])
  16. , new Buffer([163])
  17. , new Buffer([191])
  18. , new Buffer([206])
  19. , new Buffer([169])
  20. , new Buffer([226])
  21. , new Buffer([152])
  22. , new Buffer([131])
  23. ])
  24. , expectBody: "Ω☃"
  25. }
  26. , testGetBuffer :
  27. { resp : server.createGetResponse(new Buffer("TESTING!"))
  28. , encoding: null
  29. , expectBody: new Buffer("TESTING!")
  30. }
  31. , testGetEncoding :
  32. { resp : server.createGetResponse(new Buffer('efa3bfcea9e29883', 'hex'))
  33. , encoding: 'hex'
  34. , expectBody: "efa3bfcea9e29883"
  35. }
  36. , testGetUTF8:
  37. { resp: server.createGetResponse(new Buffer([0xEF, 0xBB, 0xBF, 226, 152, 131]))
  38. , encoding: "utf8"
  39. , expectBody: "☃"
  40. }
  41. , testGetJSON :
  42. { resp : server.createGetResponse('{"test":true}', 'application/json')
  43. , json : true
  44. , expectBody: {"test":true}
  45. }
  46. , testPutString :
  47. { resp : server.createPostValidator("PUTTINGDATA")
  48. , method : "PUT"
  49. , body : "PUTTINGDATA"
  50. }
  51. , testPutBuffer :
  52. { resp : server.createPostValidator("PUTTINGDATA")
  53. , method : "PUT"
  54. , body : new Buffer("PUTTINGDATA")
  55. }
  56. , testPutJSON :
  57. { resp : server.createPostValidator(JSON.stringify({foo: 'bar'}))
  58. , method: "PUT"
  59. , json: {foo: 'bar'}
  60. }
  61. , testPutMultipart :
  62. { resp: server.createPostValidator(
  63. '--__BOUNDARY__\r\n' +
  64. 'content-type: text/html\r\n' +
  65. '\r\n' +
  66. '<html><body>Oh hi.</body></html>' +
  67. '\r\n--__BOUNDARY__\r\n\r\n' +
  68. 'Oh hi.' +
  69. '\r\n--__BOUNDARY__--'
  70. )
  71. , method: "PUT"
  72. , multipart:
  73. [ {'content-type': 'text/html', 'body': '<html><body>Oh hi.</body></html>'}
  74. , {'body': 'Oh hi.'}
  75. ]
  76. }
  77. , testPutMultipartPreambleCRLF :
  78. { resp: server.createPostValidator(
  79. '\r\n--__BOUNDARY__\r\n' +
  80. 'content-type: text/html\r\n' +
  81. '\r\n' +
  82. '<html><body>Oh hi.</body></html>' +
  83. '\r\n--__BOUNDARY__\r\n\r\n' +
  84. 'Oh hi.' +
  85. '\r\n--__BOUNDARY__--'
  86. )
  87. , method: "PUT"
  88. , preambleCRLF: true
  89. , multipart:
  90. [ {'content-type': 'text/html', 'body': '<html><body>Oh hi.</body></html>'}
  91. , {'body': 'Oh hi.'}
  92. ]
  93. }
  94. }
  95. s.listen(s.port, function () {
  96. var counter = 0
  97. for (i in tests) {
  98. (function () {
  99. var test = tests[i]
  100. s.on('/'+i, test.resp)
  101. test.uri = s.url + '/' + i
  102. request(test, function (err, resp, body) {
  103. if (err) throw err
  104. if (test.expectBody) {
  105. assert.deepEqual(test.expectBody, body)
  106. }
  107. counter = counter - 1;
  108. if (counter === 0) {
  109. console.log(Object.keys(tests).length+" tests passed.")
  110. s.close()
  111. }
  112. })
  113. counter++
  114. })()
  115. }
  116. })