encode_test.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. //for browser compatibility
  2. if (!chai) var chai = require('chai');
  3. if (!fernet) var fernet = require('../fernet');
  4. var assert = chai.assert;
  5. var testData = {
  6. "token": "gAAAAAAdwJ6wAAECAwQFBgcICQoLDA0ODy021cpGVWKZ_eEwCGM4BLLF_5CV9dOPmrhuVUPgJobwOz7JcbmrR64jVmpU4IwqDA==",
  7. "now": "1985-10-26T01:20:00-07:00",
  8. "iv": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
  9. "src": "hello",
  10. "secret": "cw_0x689RpI-jtRR7oE8h_eQsKImvJapLeSbXpwF4e4="
  11. }
  12. suite('fernet.Token', function () {
  13. test('contains a version', function () {
  14. var token = new fernet.Token()
  15. assert.equal(128, token.version)
  16. })
  17. })
  18. suite('fernet.Token.prototype.encode', function () {
  19. var secret = new fernet.Secret(testData.secret);
  20. test("encode(message)", function () {
  21. var token = new fernet.Token({
  22. secret: secret,
  23. iv: testData.iv,
  24. time: testData.now
  25. })
  26. token.encode(testData.src);
  27. assert.equal(testData.token, token.toString());
  28. })
  29. test("token.encode() makes token.toString() return the token", function () {
  30. var token = new fernet.Token({
  31. secret: secret,
  32. iv: testData.iv,
  33. time: testData.now,
  34. message: testData.src
  35. })
  36. token.encode();
  37. assert.equal(testData.token, token.toString());
  38. })
  39. test("encode() returns the token as a String", function () {
  40. var token = new fernet.Token({
  41. secret: secret,
  42. iv: testData.iv,
  43. time: testData.now
  44. })
  45. assert.equal(token.encode(testData.src), testData.token);
  46. })
  47. test("randomly generates IV if one is not passed in", function () {
  48. var token = new fernet.Token({
  49. secret: secret,
  50. time: testData.now
  51. })
  52. var tokenString = token.encode(testData.src);
  53. assert.notEqual(tokenString, testData.token);
  54. var tokenString2 = token.encode(testData.src);
  55. assert.notEqual(tokenString, tokenString2);
  56. })
  57. test('time defaults to Date.now()', function () {
  58. var token = new fernet.Token({
  59. secret: secret
  60. })
  61. var cipherText = token.encode('foo');
  62. var recovered = token.decode(cipherText);
  63. assert.equal(recovered, 'foo');
  64. })
  65. })