3box
Version:
Interact with user data
1,002 lines (882 loc) • 38.3 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var ThreeId = require('../index');
var testUtils = require('../../__tests__/testUtils');
var localstorage = require('store');
var _require = require('did-jwt'),
verifyJWT = _require.verifyJWT;
var _require2 = require('did-resolver'),
Resolver = _require2.Resolver;
var get3IdResolver = require('3id-resolver').getResolver;
var IdentityWallet = require('identity-wallet');
var OdbStorage = require('orbit-db-storage-adapter');
var OdbKeystore = require('orbit-db-keystore');
var path = require('path');
var utils = require('../../utils/index');
utils.openBoxConsent = jest.fn( /*#__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:
return _context.abrupt("return", '0x8726348762348723487238476238746827364872634876234876234');
case 1:
case "end":
return _context.stop();
}
}
}, _callee);
})));
utils.openSpaceConsent = jest.fn( /*#__PURE__*/function () {
var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(a, b, space) {
return _regenerator["default"].wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
return _context2.abrupt("return", space === 'space1' ? '0x8ab87482987498387634985734987b9834598734597887070702535' : '0x8234be82987498387634985734987b9834598734597887070702535');
case 1:
case "end":
return _context2.stop();
}
}
}, _callee2);
}));
return function (_x, _x2, _x3) {
return _ref2.apply(this, arguments);
};
}());
utils.sha256Multihash = jest.fn(function (str) {
if (str === 'did:muport:Qmsdsdf87g329') return 'ab8c73d8f';
return 'b932fe7ab';
});
utils.pad = function (x) {
return x;
};
utils.unpad = function (x) {
return x;
};
var STORAGE_KEY = 'serialized3id_';
var clearLocalStorage3id = function clearLocalStorage3id(address) {
localstorage.remove(STORAGE_KEY + address);
};
var ID_WALLET_SEED = '0x95838ece1ac686bde68823b21ce9f564bc536eebb9c3500fa6da81f17086a6be';
var ADDR_1 = '0x12345';
var ADDR_2 = '0xabcde';
var ADDR_3 = '0xlmnop';
var ADDR_1_STATE_1 = '{"managementAddress":"0x12345","seed":"0xbc95bb0aeb7e5c7a9519ef066d4b60a944373ba1163b0c962a043bebec1579ef33e0ef4f63c0888d7a8ec95df34ada58fb739b2a4d3b44362747e6b193db9af2","spaceSeeds":{}}';
var ADDR_1_STATE_2 = '{"managementAddress":"0x12345","seed":"0xbc95bb0aeb7e5c7a9519ef066d4b60a944373ba1163b0c962a043bebec1579ef33e0ef4f63c0888d7a8ec95df34ada58fb739b2a4d3b44362747e6b193db9af2","spaceSeeds":{"space1":"0xedfac8a7bcc52f33b88cfb9f310bc533f77800183beecfa49dcdf8d3b4b906502ec46533d9d7fb12eced9b04e0bdebd1c26872cf5fa759331e4c2f97ab95f450","space2":"0x9dcc08a8813362b2188cf40216fbdff577f77c291e7b96cd8f31b60493a6b6a9572eee62b01fcb9a7759c12247cb57cc38e0b4e46e186c23d1d4b26db46108c7"}}';
var ADDR_2_STATE = '{"managementAddress":"0xabcde","seed":"0xbc95bb0aeb7e5c7a9519ef066d4b60a944373ba1163b0c962a043bebec1579ef33e0ef4f63c0888d7a8ec95df34ada58fb739b2a4d3b44362747e6b193db9af2","spaceSeeds":{}}';
var ADDR_3_STATE_1 = '{"managementAddress":"0xlmnop","seed":"0xaedd3b597a14ad1c941ca535208fabd0b44a668dd0c8156f68a823ef8d713212d356731839a354ac5b781f4b986ff54aa2cadfa3551846c9e43bfa0122f3d55b","spaceSeeds":{}}';
var SPACE_1 = 'space1';
var SPACE_2 = 'space2';
var ETHEREUM = 'mockEthProvider';
var CONTENT_SIGNATURE_1 = '0xsomeContentSignature';
var NOT_CONTENT_SIGNATURE_1 = '0xanIncorrectSignature';
var mockedUtils = require('../../utils/index');
describe('3id', function () {
var threeId, ipfs, idw3id, keystore, resolver;
beforeAll( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
var threeIdResolver, levelDown, keystorePath, keyStorage;
return _regenerator["default"].wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
_context3.next = 2;
return testUtils.initIPFS(6);
case 2:
ipfs = _context3.sent;
threeIdResolver = get3IdResolver(ipfs);
resolver = new Resolver(threeIdResolver);
levelDown = OdbStorage(null, {});
keystorePath = path.join('./tmp', "/".concat(utils.randInt(1000000)), '/keystore');
_context3.next = 9;
return levelDown.createStore(keystorePath);
case 9:
keyStorage = _context3.sent;
keystore = new OdbKeystore(keyStorage);
case 11:
case "end":
return _context3.stop();
}
}
}, _callee3);
})));
afterAll( /*#__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.next = 2;
return testUtils.stopIPFS(ipfs, 6);
case 2:
case "end":
return _context4.stop();
}
}
}, _callee4);
})));
beforeEach(function () {
mockedUtils.openBoxConsent.mockClear();
mockedUtils.openSpaceConsent.mockClear();
});
describe('getIdFromEthAddress', function () {
it('should create a new identity on first call', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
var opts;
return _regenerator["default"].wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
opts = {
consentCallback: jest.fn()
};
_context5.next = 3;
return ThreeId.getIdFromEthAddress(ADDR_1, ETHEREUM, ipfs, keystore, opts);
case 3:
threeId = _context5.sent;
expect(threeId.serializeState()).toEqual(ADDR_1_STATE_1);
expect(threeId.DID).toMatchSnapshot();
expect(opts.consentCallback).toHaveBeenCalledWith(true);
expect(mockedUtils.openBoxConsent).toHaveBeenCalledTimes(1);
_context5.t0 = expect;
_context5.next = 11;
return resolver.resolve(threeId.DID);
case 11:
_context5.t1 = _context5.sent;
(0, _context5.t0)(_context5.t1).toMatchSnapshot();
case 13:
case "end":
return _context5.stop();
}
}
}, _callee5);
})));
it('should create the same identity given the same address', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
var threeId1, threeId2;
return _regenerator["default"].wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
_context6.next = 2;
return ThreeId.getIdFromEthAddress('0xabcde1', ETHEREUM, ipfs, keystore);
case 2:
threeId1 = _context6.sent;
clearLocalStorage3id('0xabcde1');
_context6.next = 6;
return ThreeId.getIdFromEthAddress('0xABCDE1', ETHEREUM, ipfs, keystore);
case 6:
threeId2 = _context6.sent;
expect(threeId1.serializeState()).toEqual(threeId2.serializeState());
case 8:
case "end":
return _context6.stop();
}
}
}, _callee6);
})));
it('should create a new identity for other eth addr', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
var opts;
return _regenerator["default"].wrap(function _callee7$(_context7) {
while (1) {
switch (_context7.prev = _context7.next) {
case 0:
opts = {
consentCallback: jest.fn()
};
_context7.next = 3;
return ThreeId.getIdFromEthAddress(ADDR_2, ETHEREUM, ipfs, keystore, opts);
case 3:
threeId = _context7.sent;
expect(threeId.serializeState()).toEqual(ADDR_2_STATE);
expect(opts.consentCallback).toHaveBeenCalledWith(true);
expect(mockedUtils.openBoxConsent).toHaveBeenCalledTimes(1);
case 7:
case "end":
return _context7.stop();
}
}
}, _callee7);
})));
it('should get identity from storage on subsequent calls to existing identity', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8() {
var opts;
return _regenerator["default"].wrap(function _callee8$(_context8) {
while (1) {
switch (_context8.prev = _context8.next) {
case 0:
opts = {
consentCallback: jest.fn()
};
_context8.next = 3;
return ThreeId.getIdFromEthAddress(ADDR_1, ETHEREUM, ipfs, keystore, opts);
case 3:
threeId = _context8.sent;
expect(threeId.serializeState()).toEqual(ADDR_1_STATE_1);
expect(opts.consentCallback).toHaveBeenCalledWith(false);
expect(mockedUtils.openBoxConsent).toHaveBeenCalledTimes(0);
case 7:
case "end":
return _context8.stop();
}
}
}, _callee8);
})));
it('should create a new identity when passed a contentSignature', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9() {
var opts, contentSignatureThreeId;
return _regenerator["default"].wrap(function _callee9$(_context9) {
while (1) {
switch (_context9.prev = _context9.next) {
case 0:
opts = {
consentCallback: jest.fn(),
contentSignature: CONTENT_SIGNATURE_1
};
_context9.next = 3;
return ThreeId.getIdFromEthAddress(ADDR_3, ETHEREUM, ipfs, keystore, opts);
case 3:
contentSignatureThreeId = _context9.sent;
expect(contentSignatureThreeId.serializeState()).toEqual(ADDR_3_STATE_1);
expect(contentSignatureThreeId.DID).toMatchSnapshot();
expect(opts.consentCallback).toHaveBeenCalledWith(true);
expect(mockedUtils.openBoxConsent).toHaveBeenCalledTimes(0);
_context9.t0 = expect;
_context9.next = 11;
return resolver.resolve(contentSignatureThreeId.DID);
case 11:
_context9.t1 = _context9.sent;
(0, _context9.t0)(_context9.t1).toMatchSnapshot();
case 13:
case "end":
return _context9.stop();
}
}
}, _callee9);
})));
it('should create the same identity given the same address and contentSignature', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10() {
var opts, threeId1, threeId2;
return _regenerator["default"].wrap(function _callee10$(_context10) {
while (1) {
switch (_context10.prev = _context10.next) {
case 0:
// did is mocked, so compares serialized state
opts = {
contentSignature: CONTENT_SIGNATURE_1
};
_context10.next = 3;
return ThreeId.getIdFromEthAddress(ADDR_3, ETHEREUM, ipfs, keystore, opts);
case 3:
threeId1 = _context10.sent;
clearLocalStorage3id(ADDR_3);
_context10.next = 7;
return ThreeId.getIdFromEthAddress(ADDR_3, ETHEREUM, ipfs, keystore, opts);
case 7:
threeId2 = _context10.sent;
expect(mockedUtils.openBoxConsent).toHaveBeenCalledTimes(0);
expect(threeId1.serializeState()).toEqual(threeId2.serializeState());
case 10:
case "end":
return _context10.stop();
}
}
}, _callee10);
})));
it('should NOT create the same identity given the same address but a different contentSignature', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee11() {
var opts, threeId1, threeId2;
return _regenerator["default"].wrap(function _callee11$(_context11) {
while (1) {
switch (_context11.prev = _context11.next) {
case 0:
// did is mocked, so compares serialized state
opts = {
contentSignature: NOT_CONTENT_SIGNATURE_1
};
_context11.next = 3;
return ThreeId.getIdFromEthAddress(ADDR_3, ETHEREUM, ipfs, keystore, opts);
case 3:
threeId1 = _context11.sent;
clearLocalStorage3id(ADDR_3);
_context11.next = 7;
return ThreeId.getIdFromEthAddress(ADDR_3, ETHEREUM, ipfs, keystore, opts);
case 7:
threeId2 = _context11.sent;
expect(mockedUtils.openBoxConsent).toHaveBeenCalledTimes(0);
expect(threeId1.serializeState()).not.toEqual(threeId2.serializeState());
case 10:
case "end":
return _context11.stop();
}
}
}, _callee11);
})));
describe('keyring logic', function () {
it('should init space keyrings correctly', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee12() {
var authenticated, subDid;
return _regenerator["default"].wrap(function _callee12$(_context12) {
while (1) {
switch (_context12.prev = _context12.next) {
case 0:
_context12.next = 2;
return threeId.isAuthenticated([SPACE_1]);
case 2:
authenticated = _context12.sent;
expect(authenticated).toEqual(false);
_context12.next = 6;
return threeId.authenticate([SPACE_1]);
case 6:
expect(mockedUtils.openSpaceConsent).toHaveBeenCalledTimes(1);
expect(mockedUtils.openSpaceConsent).toHaveBeenCalledWith(ADDR_1, ETHEREUM, SPACE_1);
subDid = threeId.getSubDID(SPACE_1);
expect(subDid).toMatchSnapshot();
_context12.t0 = expect;
_context12.next = 13;
return resolver.resolve(subDid);
case 13:
_context12.t1 = _context12.sent;
(0, _context12.t0)(_context12.t1).toMatchSnapshot();
_context12.next = 17;
return threeId.isAuthenticated([SPACE_1]);
case 17:
authenticated = _context12.sent;
expect(authenticated).toEqual(true);
_context12.next = 21;
return threeId.isAuthenticated([SPACE_1, SPACE_2]);
case 21:
authenticated = _context12.sent;
expect(authenticated).toEqual(false);
_context12.next = 25;
return threeId.isAuthenticated([SPACE_2]);
case 25:
authenticated = _context12.sent;
expect(authenticated).toEqual(false);
_context12.next = 29;
return threeId.authenticate([SPACE_2]);
case 29:
expect(mockedUtils.openSpaceConsent).toHaveBeenCalledTimes(2);
expect(mockedUtils.openSpaceConsent).toHaveBeenCalledWith(ADDR_1, ETHEREUM, SPACE_2);
subDid = threeId.getSubDID(SPACE_2);
expect(subDid).toMatchSnapshot();
_context12.t2 = expect;
_context12.next = 36;
return resolver.resolve(subDid);
case 36:
_context12.t3 = _context12.sent;
(0, _context12.t2)(_context12.t3).toMatchSnapshot();
_context12.next = 40;
return threeId.isAuthenticated([SPACE_2]);
case 40:
authenticated = _context12.sent;
expect(authenticated).toEqual(true);
_context12.next = 44;
return threeId.isAuthenticated([SPACE_1, SPACE_2]);
case 44:
authenticated = _context12.sent;
expect(authenticated).toEqual(true);
case 46:
case "end":
return _context12.stop();
}
}
}, _callee12);
})));
it('should get public keys correctly', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee13() {
return _regenerator["default"].wrap(function _callee13$(_context13) {
while (1) {
switch (_context13.prev = _context13.next) {
case 0:
_context13.t0 = expect;
_context13.next = 3;
return threeId.getPublicKeys(null, false);
case 3:
_context13.t1 = _context13.sent;
(0, _context13.t0)(_context13.t1).toMatchSnapshot();
_context13.t2 = expect;
_context13.next = 8;
return threeId.getPublicKeys(SPACE_1, false);
case 8:
_context13.t3 = _context13.sent;
(0, _context13.t2)(_context13.t3).toMatchSnapshot();
_context13.t4 = expect;
_context13.next = 13;
return threeId.getPublicKeys(null, true);
case 13:
_context13.t5 = _context13.sent;
(0, _context13.t4)(_context13.t5).toMatchSnapshot();
_context13.t6 = expect;
_context13.next = 18;
return threeId.getPublicKeys(SPACE_1, true);
case 18:
_context13.t7 = _context13.sent;
(0, _context13.t6)(_context13.t7).toMatchSnapshot();
case 20:
case "end":
return _context13.stop();
}
}
}, _callee13);
})));
it('should hashDBKey correctly', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee14() {
return _regenerator["default"].wrap(function _callee14$(_context14) {
while (1) {
switch (_context14.prev = _context14.next) {
case 0:
_context14.t0 = expect;
_context14.next = 3;
return threeId.hashDBKey('somekey');
case 3:
_context14.t1 = _context14.sent;
(0, _context14.t0)(_context14.t1).toMatchSnapshot();
_context14.t2 = expect;
_context14.next = 8;
return threeId.hashDBKey('somekey', SPACE_1);
case 8:
_context14.t3 = _context14.sent;
(0, _context14.t2)(_context14.t3).toMatchSnapshot();
case 10:
case "end":
return _context14.stop();
}
}
}, _callee14);
})));
it('should encrypt and decrypt correctly', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee15() {
var message, enc1, enc2;
return _regenerator["default"].wrap(function _callee15$(_context15) {
while (1) {
switch (_context15.prev = _context15.next) {
case 0:
message = 'test message';
_context15.next = 3;
return threeId.encrypt(message);
case 3:
enc1 = _context15.sent;
_context15.t0 = expect;
_context15.next = 7;
return threeId.decrypt(enc1);
case 7:
_context15.t1 = _context15.sent;
(0, _context15.t0)(_context15.t1).toEqual(message);
_context15.next = 11;
return threeId.encrypt(message, SPACE_1);
case 11:
enc2 = _context15.sent;
_context15.t2 = expect;
_context15.next = 15;
return threeId.decrypt(enc2, SPACE_1);
case 15:
_context15.t3 = _context15.sent;
(0, _context15.t2)(_context15.t3).toEqual(message);
_context15.t4 = expect;
_context15.next = 20;
return threeId.decrypt(enc1, SPACE_1);
case 20:
_context15.t5 = _context15.sent;
(0, _context15.t4)(_context15.t5).toEqual(null);
case 22:
case "end":
return _context15.stop();
}
}
}, _callee15);
})));
it('should encrypt and decrypt asymmetrically correctly', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee16() {
var message, _yield$threeId$getPub, asymEncryptionKey, enc1;
return _regenerator["default"].wrap(function _callee16$(_context16) {
while (1) {
switch (_context16.prev = _context16.next) {
case 0:
message = 'test message';
_context16.next = 3;
return threeId.getPublicKeys(SPACE_1);
case 3:
_yield$threeId$getPub = _context16.sent;
asymEncryptionKey = _yield$threeId$getPub.asymEncryptionKey;
_context16.next = 7;
return threeId.encrypt(message, null, asymEncryptionKey);
case 7:
enc1 = _context16.sent;
_context16.t0 = expect;
_context16.next = 11;
return threeId.decrypt(enc1, SPACE_1);
case 11:
_context16.t1 = _context16.sent;
(0, _context16.t0)(_context16.t1).toEqual(message);
_context16.t2 = expect;
_context16.next = 16;
return threeId.decrypt(enc1, SPACE_2);
case 16:
_context16.t3 = _context16.sent;
(0, _context16.t2)(_context16.t3).toEqual(null);
case 18:
case "end":
return _context16.stop();
}
}
}, _callee16);
})));
it('should get identity with spaces automatically initialized', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee17() {
return _regenerator["default"].wrap(function _callee17$(_context17) {
while (1) {
switch (_context17.prev = _context17.next) {
case 0:
_context17.next = 2;
return ThreeId.getIdFromEthAddress(ADDR_1, ETHEREUM, ipfs, keystore);
case 2:
threeId = _context17.sent;
expect(threeId.serializeState()).toEqual(ADDR_1_STATE_2);
expect(mockedUtils.openBoxConsent).toHaveBeenCalledTimes(0);
case 5:
case "end":
return _context17.stop();
}
}
}, _callee17);
})));
});
describe('claim signing', function () {
it('should sign jwts correctly with rootDID', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee18() {
var jwt;
return _regenerator["default"].wrap(function _callee18$(_context18) {
while (1) {
switch (_context18.prev = _context18.next) {
case 0:
_context18.next = 2;
return threeId.signJWT({
iat: null,
data: 'some data'
});
case 2:
jwt = _context18.sent;
_context18.next = 5;
return expect(verifyJWT(jwt, {
resolver: resolver
})).resolves.toMatchSnapshot();
case 5:
case "end":
return _context18.stop();
}
}
}, _callee18);
})));
it('should sign jwts correctly with subDID', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee19() {
var jwt;
return _regenerator["default"].wrap(function _callee19$(_context19) {
while (1) {
switch (_context19.prev = _context19.next) {
case 0:
_context19.next = 2;
return threeId.signJWT({
iat: null,
data: 'some data'
}, {
space: SPACE_1
});
case 2:
jwt = _context19.sent;
_context19.next = 5;
return expect(verifyJWT(jwt, {
resolver: resolver,
auth: true
})).resolves.toMatchSnapshot();
case 5:
case "end":
return _context19.stop();
}
}
}, _callee19);
})));
});
describe('login/out logic', function () {
it('should be logged in', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee20() {
return _regenerator["default"].wrap(function _callee20$(_context20) {
while (1) {
switch (_context20.prev = _context20.next) {
case 0:
expect(ThreeId.isLoggedIn(ADDR_1)).toEqual(true);
case 1:
case "end":
return _context20.stop();
}
}
}, _callee20);
})));
it('should log out correctly', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee21() {
return _regenerator["default"].wrap(function _callee21$(_context21) {
while (1) {
switch (_context21.prev = _context21.next) {
case 0:
threeId.logout();
expect(ThreeId.isLoggedIn(ADDR_1)).toEqual(false);
case 2:
case "end":
return _context21.stop();
}
}
}, _callee21);
})));
});
});
describe('get 3ID using IdentityWallet', function () {
it('instantiate threeId with IdentityWallet', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee22() {
var idWallet, provider;
return _regenerator["default"].wrap(function _callee22$(_context22) {
while (1) {
switch (_context22.prev = _context22.next) {
case 0:
idWallet = new IdentityWallet(function () {
return true;
}, {
seed: ID_WALLET_SEED
});
provider = idWallet.get3idProvider();
_context22.next = 4;
return ThreeId.getIdFromEthAddress(null, provider, ipfs, keystore);
case 4:
idw3id = _context22.sent;
expect(idw3id.DID).toBeUndefined();
_context22.next = 8;
return idw3id.authenticate();
case 8:
expect(idw3id.DID).toMatchSnapshot();
_context22.t0 = expect;
_context22.next = 12;
return idw3id.getPublicKeys();
case 12:
_context22.t1 = _context22.sent;
(0, _context22.t0)(_context22.t1).toMatchSnapshot();
_context22.t2 = expect;
_context22.next = 17;
return idw3id.getPublicKeys(null, true);
case 17:
_context22.t3 = _context22.sent;
(0, _context22.t2)(_context22.t3).toMatchSnapshot();
_context22.t4 = expect;
_context22.next = 22;
return resolver.resolve(idw3id.DID);
case 22:
_context22.t5 = _context22.sent;
(0, _context22.t4)(_context22.t5).toMatchSnapshot();
case 24:
case "end":
return _context22.stop();
}
}
}, _callee22);
})));
describe('keyring logic', function () {
it('should init space keyrings correctly', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee23() {
var subDid;
return _regenerator["default"].wrap(function _callee23$(_context23) {
while (1) {
switch (_context23.prev = _context23.next) {
case 0:
_context23.next = 2;
return idw3id.authenticate([SPACE_1]);
case 2:
subDid = idw3id.getSubDID(SPACE_1);
expect(subDid).toMatchSnapshot();
_context23.t0 = expect;
_context23.next = 7;
return resolver.resolve(subDid);
case 7:
_context23.t1 = _context23.sent;
(0, _context23.t0)(_context23.t1).toMatchSnapshot();
_context23.next = 11;
return idw3id.authenticate([SPACE_2]);
case 11:
subDid = idw3id.getSubDID(SPACE_2);
expect(subDid).toMatchSnapshot();
_context23.t2 = expect;
_context23.next = 16;
return resolver.resolve(subDid);
case 16:
_context23.t3 = _context23.sent;
(0, _context23.t2)(_context23.t3).toMatchSnapshot();
case 18:
case "end":
return _context23.stop();
}
}
}, _callee23);
})));
it('should get public keys correctly', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee24() {
return _regenerator["default"].wrap(function _callee24$(_context24) {
while (1) {
switch (_context24.prev = _context24.next) {
case 0:
_context24.t0 = expect;
_context24.next = 3;
return idw3id.getPublicKeys(null, false);
case 3:
_context24.t1 = _context24.sent;
(0, _context24.t0)(_context24.t1).toMatchSnapshot();
_context24.t2 = expect;
_context24.next = 8;
return idw3id.getPublicKeys(SPACE_1, false);
case 8:
_context24.t3 = _context24.sent;
(0, _context24.t2)(_context24.t3).toMatchSnapshot();
_context24.t4 = expect;
_context24.next = 13;
return idw3id.getPublicKeys(null, true);
case 13:
_context24.t5 = _context24.sent;
(0, _context24.t4)(_context24.t5).toMatchSnapshot();
_context24.t6 = expect;
_context24.next = 18;
return idw3id.getPublicKeys(SPACE_1, true);
case 18:
_context24.t7 = _context24.sent;
(0, _context24.t6)(_context24.t7).toMatchSnapshot();
case 20:
case "end":
return _context24.stop();
}
}
}, _callee24);
})));
it('should hashDBKey correctly', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee25() {
return _regenerator["default"].wrap(function _callee25$(_context25) {
while (1) {
switch (_context25.prev = _context25.next) {
case 0:
_context25.t0 = expect;
_context25.next = 3;
return idw3id.hashDBKey('somekey');
case 3:
_context25.t1 = _context25.sent;
(0, _context25.t0)(_context25.t1).toMatchSnapshot();
_context25.t2 = expect;
_context25.next = 8;
return idw3id.hashDBKey('somekey', SPACE_1);
case 8:
_context25.t3 = _context25.sent;
(0, _context25.t2)(_context25.t3).toMatchSnapshot();
case 10:
case "end":
return _context25.stop();
}
}
}, _callee25);
})));
it('should encrypt and decrypt correctly', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee26() {
var message, enc1, enc2;
return _regenerator["default"].wrap(function _callee26$(_context26) {
while (1) {
switch (_context26.prev = _context26.next) {
case 0:
message = 'test message';
_context26.next = 3;
return idw3id.encrypt(message);
case 3:
enc1 = _context26.sent;
_context26.t0 = expect;
_context26.next = 7;
return idw3id.decrypt(enc1);
case 7:
_context26.t1 = _context26.sent;
(0, _context26.t0)(_context26.t1).toEqual(message);
_context26.next = 11;
return idw3id.encrypt(message, SPACE_1);
case 11:
enc2 = _context26.sent;
_context26.t2 = expect;
_context26.next = 15;
return idw3id.decrypt(enc2, SPACE_1);
case 15:
_context26.t3 = _context26.sent;
(0, _context26.t2)(_context26.t3).toEqual(message);
_context26.next = 19;
return expect(idw3id.decrypt(enc1, SPACE_1)).rejects.toMatchSnapshot();
case 19:
case "end":
return _context26.stop();
}
}
}, _callee26);
})));
it('should encrypt and decrypt asymmetrically correctly', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee27() {
var message, _yield$idw3id$getPubl, asymEncryptionKey, enc1;
return _regenerator["default"].wrap(function _callee27$(_context27) {
while (1) {
switch (_context27.prev = _context27.next) {
case 0:
message = 'test message';
_context27.next = 3;
return idw3id.getPublicKeys(SPACE_1);
case 3:
_yield$idw3id$getPubl = _context27.sent;
asymEncryptionKey = _yield$idw3id$getPubl.asymEncryptionKey;
_context27.next = 7;
return idw3id.encrypt(message, null, asymEncryptionKey);
case 7:
enc1 = _context27.sent;
_context27.t0 = expect;
_context27.next = 11;
return idw3id.decrypt(enc1, SPACE_1);
case 11:
_context27.t1 = _context27.sent;
(0, _context27.t0)(_context27.t1).toEqual(message);
_context27.next = 15;
return expect(idw3id.decrypt(enc1, SPACE_2)).rejects.toMatchSnapshot();
case 15:
case "end":
return _context27.stop();
}
}
}, _callee27);
})));
});
describe('claim signing', function () {
it('should sign jwts correctly with rootDID', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee28() {
var jwt;
return _regenerator["default"].wrap(function _callee28$(_context28) {
while (1) {
switch (_context28.prev = _context28.next) {
case 0:
_context28.next = 2;
return idw3id.signJWT({
iat: null,
data: 'some data'
});
case 2:
jwt = _context28.sent;
_context28.next = 5;
return expect(verifyJWT(jwt, {
resolver: resolver
})).resolves.toMatchSnapshot();
case 5:
case "end":
return _context28.stop();
}
}
}, _callee28);
})));
it('should sign jwts correctly with subDID', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee29() {
var jwt;
return _regenerator["default"].wrap(function _callee29$(_context29) {
while (1) {
switch (_context29.prev = _context29.next) {
case 0:
_context29.next = 2;
return idw3id.signJWT({
iat: null,
data: 'some data'
}, {
space: SPACE_1
});
case 2:
jwt = _context29.sent;
_context29.next = 5;
return expect(verifyJWT(jwt, {
resolver: resolver,
auth: true
})).resolves.toMatchSnapshot();
case 5:
case "end":
return _context29.stop();
}
}
}, _callee29);
})));
});
});
});