UNPKG

bitgo

Version:
68 lines 10.2 kB
"use strict"; // // Test for Keychains // Object.defineProperty(exports, "__esModule", { value: true }); const _ = require("lodash"); require("should"); const nock = require("nock"); const sdk_core_1 = require("@bitgo/sdk-core"); const sdk_test_1 = require("@bitgo/sdk-test"); const bitgo_1 = require("../../src/bitgo"); describe('Keychains', function v2keychains() { describe('Update Password', function updatePassword() { let bitgo; let keychains; let bgUrl; before(function beforeDescribe() { nock.pendingMocks().should.be.empty(); bitgo = sdk_test_1.TestBitGo.decorate(bitgo_1.BitGo, { env: 'mock' }); bitgo.initializeTestVars(); bitgo.setValidate(false); keychains = bitgo.keychains(); bgUrl = sdk_core_1.common.Environments[bitgo.getEnv()].uri; }); it('should fail to update the password', async function () { await keychains.updatePassword({ newPassword: '5678' }).should.be.rejectedWith('Missing parameter: oldPassword'); await keychains .updatePassword({ oldPassword: 1234, newPassword: '5678' }) .should.be.rejectedWith('Expecting parameter string: oldPassword but found number'); await keychains.updatePassword({ oldPassword: '1234' }).should.be.rejectedWith('Missing parameter: newPassword'); await keychains .updatePassword({ oldPassword: '1234', newPassword: 5678 }) .should.be.rejectedWith('Expecting parameter string: newPassword but found number'); }); it('successful password update', async function () { const oldPassword = 'oldPassword'; const newPassword = 'newPassword'; const otherPassword = 'otherPassword'; nock(bgUrl) .post('/api/v1/user/encrypted') .reply(200, { keychains: { xpub1: bitgo.encrypt({ input: 'xprv1', password: oldPassword }), xpub2: bitgo.encrypt({ input: 'xprv2', password: otherPassword }), }, version: 1, }); const result = await keychains.updatePassword({ oldPassword: oldPassword, newPassword: newPassword }); _.forOwn(result.keychains, function (encryptedXprv, xpub) { xpub.should.startWith('xpub'); try { const decryptedPrv = bitgo.decrypt({ input: encryptedXprv, password: newPassword }); decryptedPrv.should.startWith('xprv'); } catch (e) { // the decryption didn't work because of the wrong password, this is one of the keychains that didn't match // the old password e.message.should.startWith('password error'); } }); result.should.hasOwnProperty('version'); }); }); after(function afterKeychains() { nock.pendingMocks().should.be.empty(); }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2hhaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L2tleWNoYWlucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsRUFBRTtBQUNGLHFCQUFxQjtBQUNyQixFQUFFOztBQUVGLDRCQUE0QjtBQUM1QixrQkFBZ0I7QUFDaEIsNkJBQThCO0FBRTlCLDhDQUF5QztBQUV6Qyw4Q0FBNEM7QUFDNUMsMkNBQXdDO0FBRXhDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsU0FBUyxXQUFXO0lBQ3hDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLGNBQWM7UUFDakQsSUFBSSxLQUFLLENBQUM7UUFDVixJQUFJLFNBQVMsQ0FBQztRQUNkLElBQUksS0FBSyxDQUFDO1FBRVYsTUFBTSxDQUFDLFNBQVMsY0FBYztZQUM1QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUV0QyxLQUFLLEdBQUcsb0JBQVMsQ0FBQyxRQUFRLENBQUMsYUFBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDbkQsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDM0IsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QixTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBRTlCLEtBQUssR0FBRyxpQkFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsb0NBQW9DLEVBQUUsS0FBSztZQUM1QyxNQUFNLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1lBRWpILE1BQU0sU0FBUztpQkFDWixjQUFjLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQztpQkFDMUQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsMERBQTBELENBQUMsQ0FBQztZQUV0RixNQUFNLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1lBRWpILE1BQU0sU0FBUztpQkFDWixjQUFjLENBQUMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQztpQkFDMUQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsMERBQTBELENBQUMsQ0FBQztRQUN4RixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSxLQUFLO1lBQ3BDLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQztZQUNsQyxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUM7WUFDbEMsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDO1lBRXRDLElBQUksQ0FBQyxLQUFLLENBQUM7aUJBQ1IsSUFBSSxDQUFDLHdCQUF3QixDQUFDO2lCQUM5QixLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUNWLFNBQVMsRUFBRTtvQkFDVCxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDO29CQUMvRCxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxDQUFDO2lCQUNsRTtnQkFDRCxPQUFPLEVBQUUsQ0FBQzthQUNYLENBQUMsQ0FBQztZQUVMLE1BQU0sTUFBTSxHQUFHLE1BQU0sU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDdEcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLFVBQVUsYUFBYSxFQUFFLElBQUk7Z0JBQ3RELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUM7b0JBQ0gsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7b0JBQ3BGLFlBQVksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN4QyxDQUFDO2dCQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQ1gsMkdBQTJHO29CQUMzRyxtQkFBbUI7b0JBQ25CLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUMvQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsS0FBSyxDQUFDLFNBQVMsY0FBYztRQUMzQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy9cbi8vIFRlc3QgZm9yIEtleWNoYWluc1xuLy9cblxuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IG5vY2sgPSByZXF1aXJlKCdub2NrJyk7XG5cbmltcG9ydCB7IGNvbW1vbiB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5cbmltcG9ydCB7IFRlc3RCaXRHbyB9IGZyb20gJ0BiaXRnby9zZGstdGVzdCc7XG5pbXBvcnQgeyBCaXRHbyB9IGZyb20gJy4uLy4uL3NyYy9iaXRnbyc7XG5cbmRlc2NyaWJlKCdLZXljaGFpbnMnLCBmdW5jdGlvbiB2MmtleWNoYWlucygpIHtcbiAgZGVzY3JpYmUoJ1VwZGF0ZSBQYXNzd29yZCcsIGZ1bmN0aW9uIHVwZGF0ZVBhc3N3b3JkKCkge1xuICAgIGxldCBiaXRnbztcbiAgICBsZXQga2V5Y2hhaW5zO1xuICAgIGxldCBiZ1VybDtcblxuICAgIGJlZm9yZShmdW5jdGlvbiBiZWZvcmVEZXNjcmliZSgpIHtcbiAgICAgIG5vY2sucGVuZGluZ01vY2tzKCkuc2hvdWxkLmJlLmVtcHR5KCk7XG5cbiAgICAgIGJpdGdvID0gVGVzdEJpdEdvLmRlY29yYXRlKEJpdEdvLCB7IGVudjogJ21vY2snIH0pO1xuICAgICAgYml0Z28uaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gICAgICBiaXRnby5zZXRWYWxpZGF0ZShmYWxzZSk7XG4gICAgICBrZXljaGFpbnMgPSBiaXRnby5rZXljaGFpbnMoKTtcblxuICAgICAgYmdVcmwgPSBjb21tb24uRW52aXJvbm1lbnRzW2JpdGdvLmdldEVudigpXS51cmk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdXBkYXRlIHRoZSBwYXNzd29yZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGtleWNoYWlucy51cGRhdGVQYXNzd29yZCh7IG5ld1Bhc3N3b3JkOiAnNTY3OCcgfSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnTWlzc2luZyBwYXJhbWV0ZXI6IG9sZFBhc3N3b3JkJyk7XG5cbiAgICAgIGF3YWl0IGtleWNoYWluc1xuICAgICAgICAudXBkYXRlUGFzc3dvcmQoeyBvbGRQYXNzd29yZDogMTIzNCwgbmV3UGFzc3dvcmQ6ICc1Njc4JyB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnRXhwZWN0aW5nIHBhcmFtZXRlciBzdHJpbmc6IG9sZFBhc3N3b3JkIGJ1dCBmb3VuZCBudW1iZXInKTtcblxuICAgICAgYXdhaXQga2V5Y2hhaW5zLnVwZGF0ZVBhc3N3b3JkKHsgb2xkUGFzc3dvcmQ6ICcxMjM0JyB9KS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdNaXNzaW5nIHBhcmFtZXRlcjogbmV3UGFzc3dvcmQnKTtcblxuICAgICAgYXdhaXQga2V5Y2hhaW5zXG4gICAgICAgIC51cGRhdGVQYXNzd29yZCh7IG9sZFBhc3N3b3JkOiAnMTIzNCcsIG5ld1Bhc3N3b3JkOiA1Njc4IH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdFeHBlY3RpbmcgcGFyYW1ldGVyIHN0cmluZzogbmV3UGFzc3dvcmQgYnV0IGZvdW5kIG51bWJlcicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3N1Y2Nlc3NmdWwgcGFzc3dvcmQgdXBkYXRlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgb2xkUGFzc3dvcmQgPSAnb2xkUGFzc3dvcmQnO1xuICAgICAgY29uc3QgbmV3UGFzc3dvcmQgPSAnbmV3UGFzc3dvcmQnO1xuICAgICAgY29uc3Qgb3RoZXJQYXNzd29yZCA9ICdvdGhlclBhc3N3b3JkJztcblxuICAgICAgbm9jayhiZ1VybClcbiAgICAgICAgLnBvc3QoJy9hcGkvdjEvdXNlci9lbmNyeXB0ZWQnKVxuICAgICAgICAucmVwbHkoMjAwLCB7XG4gICAgICAgICAga2V5Y2hhaW5zOiB7XG4gICAgICAgICAgICB4cHViMTogYml0Z28uZW5jcnlwdCh7IGlucHV0OiAneHBydjEnLCBwYXNzd29yZDogb2xkUGFzc3dvcmQgfSksXG4gICAgICAgICAgICB4cHViMjogYml0Z28uZW5jcnlwdCh7IGlucHV0OiAneHBydjInLCBwYXNzd29yZDogb3RoZXJQYXNzd29yZCB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHZlcnNpb246IDEsXG4gICAgICAgIH0pO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBrZXljaGFpbnMudXBkYXRlUGFzc3dvcmQoeyBvbGRQYXNzd29yZDogb2xkUGFzc3dvcmQsIG5ld1Bhc3N3b3JkOiBuZXdQYXNzd29yZCB9KTtcbiAgICAgIF8uZm9yT3duKHJlc3VsdC5rZXljaGFpbnMsIGZ1bmN0aW9uIChlbmNyeXB0ZWRYcHJ2LCB4cHViKSB7XG4gICAgICAgIHhwdWIuc2hvdWxkLnN0YXJ0V2l0aCgneHB1YicpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGRlY3J5cHRlZFBydiA9IGJpdGdvLmRlY3J5cHQoeyBpbnB1dDogZW5jcnlwdGVkWHBydiwgcGFzc3dvcmQ6IG5ld1Bhc3N3b3JkIH0pO1xuICAgICAgICAgIGRlY3J5cHRlZFBydi5zaG91bGQuc3RhcnRXaXRoKCd4cHJ2Jyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAvLyB0aGUgZGVjcnlwdGlvbiBkaWRuJ3Qgd29yayBiZWNhdXNlIG9mIHRoZSB3cm9uZyBwYXNzd29yZCwgdGhpcyBpcyBvbmUgb2YgdGhlIGtleWNoYWlucyB0aGF0IGRpZG4ndCBtYXRjaFxuICAgICAgICAgIC8vIHRoZSBvbGQgcGFzc3dvcmRcbiAgICAgICAgICBlLm1lc3NhZ2Uuc2hvdWxkLnN0YXJ0V2l0aCgncGFzc3dvcmQgZXJyb3InKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXN1bHQuc2hvdWxkLmhhc093blByb3BlcnR5KCd2ZXJzaW9uJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGFmdGVyKGZ1bmN0aW9uIGFmdGVyS2V5Y2hhaW5zKCkge1xuICAgIG5vY2sucGVuZGluZ01vY2tzKCkuc2hvdWxkLmJlLmVtcHR5KCk7XG4gIH0pO1xufSk7XG4iXX0=