UNPKG

3box

Version:
1,002 lines (882 loc) 38.3 kB
"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); }))); }); }); });