test-https-strict.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. // a test where we validate the siguature of the keys
  2. // otherwise exactly the same as the ssl test
  3. var server = require('./server')
  4. , assert = require('assert')
  5. , request = require('../index')
  6. , fs = require('fs')
  7. , path = require('path')
  8. , opts = { key: path.resolve(__dirname, 'ssl/ca/server.key')
  9. , cert: path.resolve(__dirname, 'ssl/ca/server.crt') }
  10. , s = server.createSSLServer(null, opts)
  11. , caFile = path.resolve(__dirname, 'ssl/ca/ca.crt')
  12. , ca = fs.readFileSync(caFile)
  13. var tests =
  14. { testGet :
  15. { resp : server.createGetResponse("TESTING!")
  16. , expectBody: "TESTING!"
  17. }
  18. , testGetChunkBreak :
  19. { resp : server.createChunkResponse(
  20. [ new Buffer([239])
  21. , new Buffer([163])
  22. , new Buffer([191])
  23. , new Buffer([206])
  24. , new Buffer([169])
  25. , new Buffer([226])
  26. , new Buffer([152])
  27. , new Buffer([131])
  28. ])
  29. , expectBody: "Ω☃"
  30. }
  31. , testGetJSON :
  32. { resp : server.createGetResponse('{"test":true}', 'application/json')
  33. , json : true
  34. , expectBody: {"test":true}
  35. }
  36. , testPutString :
  37. { resp : server.createPostValidator("PUTTINGDATA")
  38. , method : "PUT"
  39. , body : "PUTTINGDATA"
  40. }
  41. , testPutBuffer :
  42. { resp : server.createPostValidator("PUTTINGDATA")
  43. , method : "PUT"
  44. , body : new Buffer("PUTTINGDATA")
  45. }
  46. , testPutJSON :
  47. { resp : server.createPostValidator(JSON.stringify({foo: 'bar'}))
  48. , method: "PUT"
  49. , json: {foo: 'bar'}
  50. }
  51. , testPutMultipart :
  52. { resp: server.createPostValidator(
  53. '--__BOUNDARY__\r\n' +
  54. 'content-type: text/html\r\n' +
  55. '\r\n' +
  56. '<html><body>Oh hi.</body></html>' +
  57. '\r\n--__BOUNDARY__\r\n\r\n' +
  58. 'Oh hi.' +
  59. '\r\n--__BOUNDARY__--'
  60. )
  61. , method: "PUT"
  62. , multipart:
  63. [ {'content-type': 'text/html', 'body': '<html><body>Oh hi.</body></html>'}
  64. , {'body': 'Oh hi.'}
  65. ]
  66. }
  67. }
  68. s.listen(s.port, function () {
  69. var counter = 0
  70. for (i in tests) {
  71. (function () {
  72. var test = tests[i]
  73. s.on('/'+i, test.resp)
  74. test.uri = s.url + '/' + i
  75. test.strictSSL = true
  76. test.ca = ca
  77. test.headers = { host: 'testing.request.mikealrogers.com' }
  78. request(test, function (err, resp, body) {
  79. if (err) throw err
  80. if (test.expectBody) {
  81. assert.deepEqual(test.expectBody, body)
  82. }
  83. counter = counter - 1;
  84. if (counter === 0) {
  85. console.log(Object.keys(tests).length+" tests passed.")
  86. s.close()
  87. }
  88. })
  89. counter++
  90. })()
  91. }
  92. })