crypto.tap.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. 'use strict';
  2. var tap = require('tap')
  3. , semver = require('semver')
  4. , test = tap.test
  5. , createNamespace = require('../context.js').createNamespace
  6. ;
  7. var crypto;
  8. try { crypto = require('crypto'); }
  9. catch (err) {}
  10. if (crypto) {
  11. test("continuation-local state with crypto.randomBytes", function (t) {
  12. t.plan(1);
  13. var namespace = createNamespace('namespace');
  14. namespace.run(function () {
  15. namespace.set('test', 0xabad1dea);
  16. t.test("randomBytes", function (t) {
  17. namespace.run(function () {
  18. namespace.set('test', 42);
  19. crypto.randomBytes(100, function (err) {
  20. if (err) throw err;
  21. t.equal(namespace.get('test'), 42, "mutated state was preserved");
  22. t.end();
  23. });
  24. });
  25. });
  26. });
  27. });
  28. test("continuation-local state with crypto.pseudoRandomBytes", function (t) {
  29. t.plan(1);
  30. var namespace = createNamespace('namespace');
  31. namespace.run(function () {
  32. namespace.set('test', 0xabad1dea);
  33. t.test("pseudoRandomBytes", function (t) {
  34. namespace.run(function () {
  35. namespace.set('test', 42);
  36. crypto.pseudoRandomBytes(100, function (err) {
  37. if (err) throw err;
  38. t.equal(namespace.get('test'), 42, "mutated state was preserved");
  39. t.end();
  40. });
  41. });
  42. });
  43. });
  44. });
  45. test("continuation-local state with crypto.pbkdf2", function (t) {
  46. t.plan(1);
  47. var namespace = createNamespace('namespace');
  48. namespace.run(function () {
  49. namespace.set('test', 0xabad1dea);
  50. t.test("pbkdf2", function (t) {
  51. namespace.run(function () {
  52. namespace.set('test', 42);
  53. // this API changed after 0.10.0, and errors if digest is missing after v6
  54. if (semver.gte(process.version, "0.12.0")) {
  55. crypto.pbkdf2("s3cr3tz", "451243", 10, 40, "sha512", function (err) {
  56. if (err) throw err;
  57. t.equal(namespace.get('test'), 42, "mutated state was preserved");
  58. t.end();
  59. });
  60. } else {
  61. crypto.pbkdf2("s3cr3tz", "451243", 10, 40, function (err) {
  62. if (err) throw err;
  63. t.equal(namespace.get('test'), 42, "mutated state was preserved");
  64. t.end();
  65. });
  66. }
  67. });
  68. });
  69. });
  70. });
  71. }