bitgo
Version:
BitGo JavaScript SDK
68 lines • 10.2 kB
JavaScript
;
//
// 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=