3box
Version:
Interact with user data
115 lines (102 loc) • 4.3 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var Keyring = require('../keyring');
var _require = require('@ethersproject/hdnode'),
mnemonicToSeed = _require.mnemonicToSeed;
var nacl = require('tweetnacl');
nacl.util = require('tweetnacl-util');
describe('Keyring', function () {
var keyring1;
var keyring2;
var keyring3;
var seed = mnemonicToSeed('clay rubber drama brush salute cream nerve wear stuff sentence trade conduct');
it('throws error if no seed', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
expect(function () {
return new Keyring();
}).toThrow();
case 1:
case "end":
return _context.stop();
}
}
}, _callee);
})));
it('derives correct keys from entropy', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
return _regenerator["default"].wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
keyring2 = new Keyring('0xf0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b');
keyring3 = new Keyring('0x24a0bc3a2a1d1404c0ab24bef9bb0618938ee892fbf62f63f82f015eddf1729e');
expect(keyring2._seed).toEqual('0xf0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b');
case 3:
case "end":
return _context2.stop();
}
}
}, _callee2);
})));
it('derives correct keys from seed', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
return _regenerator["default"].wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
keyring1 = new Keyring(seed);
expect(keyring1.getPublicKeys()).toMatchSnapshot();
expect(keyring1.getPublicKeys(true)).toMatchSnapshot();
expect(keyring1.serialize()).toEqual(seed);
case 4:
case "end":
return _context3.stop();
}
}
}, _callee3);
})));
it('signs data correctly', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
return _regenerator["default"].wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
_context4.t0 = expect;
_context4.next = 3;
return keyring1.getJWTSigner()('asdf');
case 3:
_context4.t1 = _context4.sent;
(0, _context4.t0)(_context4.t1).toMatchSnapshot();
case 5:
case "end":
return _context4.stop();
}
}
}, _callee4);
})));
it('encrypts and decrypts correctly', function () {
var testMsg = "Very secret test message";
var box = keyring1.asymEncrypt(testMsg, keyring2.getPublicKeys().asymEncryptionKey);
var cleartext = keyring2.asymDecrypt(box.ciphertext, box.ephemeralFrom, box.nonce);
expect(cleartext).toEqual(testMsg);
});
it('symmetrically encrypts correctly', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
var testMsg, box, cleartext;
return _regenerator["default"].wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
testMsg = "Very secret test message";
box = keyring2.symEncrypt(testMsg);
cleartext = keyring2.symDecrypt(box.ciphertext, box.nonce);
expect(cleartext).toEqual(testMsg);
case 4:
case "end":
return _context5.stop();
}
}
}, _callee5);
})));
});