bitgo
Version:
BitGo JavaScript SDK
69 lines • 10.5 kB
JavaScript
;
//
// Test for Keychains
//
Object.defineProperty(exports, "__esModule", { value: true });
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';
const encryptedXprv1 = await bitgo.encrypt({ input: 'xprv1', password: oldPassword });
const encryptedXprv2 = await bitgo.encrypt({ input: 'xprv2', password: otherPassword });
nock(bgUrl)
.post('/api/v1/user/encrypted')
.reply(200, {
keychains: {
xpub1: encryptedXprv1,
xpub2: encryptedXprv2,
},
version: 1,
});
const result = await keychains.updatePassword({ oldPassword: oldPassword, newPassword: newPassword });
for (const [xpub, encryptedXprv] of Object.entries(result.keychains)) {
xpub.should.startWith('xpub');
try {
const decryptedPrv = await 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.equal('incorrect password');
}
}
result.should.hasOwnProperty('version');
});
});
after(function afterKeychains() {
nock.pendingMocks().should.be.empty();
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2hhaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L2tleWNoYWlucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsRUFBRTtBQUNGLHFCQUFxQjtBQUNyQixFQUFFOztBQUVGLGtCQUFnQjtBQUNoQiw2QkFBOEI7QUFFOUIsOENBQXlDO0FBRXpDLDhDQUE0QztBQUM1QywyQ0FBd0M7QUFFeEMsUUFBUSxDQUFDLFdBQVcsRUFBRSxTQUFTLFdBQVc7SUFDeEMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLFNBQVMsY0FBYztRQUNqRCxJQUFJLEtBQUssQ0FBQztRQUNWLElBQUksU0FBUyxDQUFDO1FBQ2QsSUFBSSxLQUFLLENBQUM7UUFFVixNQUFNLENBQUMsU0FBUyxjQUFjO1lBQzVCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRXRDLEtBQUssR0FBRyxvQkFBUyxDQUFDLFFBQVEsQ0FBQyxhQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNuRCxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMzQixLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFFOUIsS0FBSyxHQUFHLGlCQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxvQ0FBb0MsRUFBRSxLQUFLO1lBQzVDLE1BQU0sU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7WUFFakgsTUFBTSxTQUFTO2lCQUNaLGNBQWMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDO2lCQUMxRCxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQywwREFBMEQsQ0FBQyxDQUFDO1lBRXRGLE1BQU0sU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7WUFFakgsTUFBTSxTQUFTO2lCQUNaLGNBQWMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDO2lCQUMxRCxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQywwREFBMEQsQ0FBQyxDQUFDO1FBQ3hGLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDRCQUE0QixFQUFFLEtBQUs7WUFDcEMsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDO1lBQ2xDLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQztZQUNsQyxNQUFNLGFBQWEsR0FBRyxlQUFlLENBQUM7WUFFdEMsTUFBTSxjQUFjLEdBQUcsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUN0RixNQUFNLGNBQWMsR0FBRyxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBRXhGLElBQUksQ0FBQyxLQUFLLENBQUM7aUJBQ1IsSUFBSSxDQUFDLHdCQUF3QixDQUFDO2lCQUM5QixLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUNWLFNBQVMsRUFBRTtvQkFDVCxLQUFLLEVBQUUsY0FBYztvQkFDckIsS0FBSyxFQUFFLGNBQWM7aUJBQ3RCO2dCQUNELE9BQU8sRUFBRSxDQUFDO2FBQ1gsQ0FBQyxDQUFDO1lBRUwsTUFBTSxNQUFNLEdBQUcsTUFBTSxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUN0RyxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBbUMsQ0FBQyxFQUFFLENBQUM7Z0JBQy9GLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUM7b0JBQ0gsTUFBTSxZQUFZLEdBQUcsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztvQkFDMUYsWUFBWSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3hDLENBQUM7Z0JBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDWCwyR0FBMkc7b0JBQzNHLG1CQUFtQjtvQkFDbkIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7Z0JBQy9DLENBQUM7WUFDSCxDQUFDO1lBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEtBQUssQ0FBQyxTQUFTLGNBQWM7UUFDM0IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vXG4vLyBUZXN0IGZvciBLZXljaGFpbnNcbi8vXG5cbmltcG9ydCAnc2hvdWxkJztcbmltcG9ydCBub2NrID0gcmVxdWlyZSgnbm9jaycpO1xuXG5pbXBvcnQgeyBjb21tb24gfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuXG5pbXBvcnQgeyBUZXN0Qml0R28gfSBmcm9tICdAYml0Z28vc2RrLXRlc3QnO1xuaW1wb3J0IHsgQml0R28gfSBmcm9tICcuLi8uLi9zcmMvYml0Z28nO1xuXG5kZXNjcmliZSgnS2V5Y2hhaW5zJywgZnVuY3Rpb24gdjJrZXljaGFpbnMoKSB7XG4gIGRlc2NyaWJlKCdVcGRhdGUgUGFzc3dvcmQnLCBmdW5jdGlvbiB1cGRhdGVQYXNzd29yZCgpIHtcbiAgICBsZXQgYml0Z287XG4gICAgbGV0IGtleWNoYWlucztcbiAgICBsZXQgYmdVcmw7XG5cbiAgICBiZWZvcmUoZnVuY3Rpb24gYmVmb3JlRGVzY3JpYmUoKSB7XG4gICAgICBub2NrLnBlbmRpbmdNb2NrcygpLnNob3VsZC5iZS5lbXB0eSgpO1xuXG4gICAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHbywgeyBlbnY6ICdtb2NrJyB9KTtcbiAgICAgIGJpdGdvLmluaXRpYWxpemVUZXN0VmFycygpO1xuICAgICAgYml0Z28uc2V0VmFsaWRhdGUoZmFsc2UpO1xuICAgICAga2V5Y2hhaW5zID0gYml0Z28ua2V5Y2hhaW5zKCk7XG5cbiAgICAgIGJnVXJsID0gY29tbW9uLkVudmlyb25tZW50c1tiaXRnby5nZXRFbnYoKV0udXJpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHVwZGF0ZSB0aGUgcGFzc3dvcmQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBrZXljaGFpbnMudXBkYXRlUGFzc3dvcmQoeyBuZXdQYXNzd29yZDogJzU2NzgnIH0pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ01pc3NpbmcgcGFyYW1ldGVyOiBvbGRQYXNzd29yZCcpO1xuXG4gICAgICBhd2FpdCBrZXljaGFpbnNcbiAgICAgICAgLnVwZGF0ZVBhc3N3b3JkKHsgb2xkUGFzc3dvcmQ6IDEyMzQsIG5ld1Bhc3N3b3JkOiAnNTY3OCcgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0V4cGVjdGluZyBwYXJhbWV0ZXIgc3RyaW5nOiBvbGRQYXNzd29yZCBidXQgZm91bmQgbnVtYmVyJyk7XG5cbiAgICAgIGF3YWl0IGtleWNoYWlucy51cGRhdGVQYXNzd29yZCh7IG9sZFBhc3N3b3JkOiAnMTIzNCcgfSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnTWlzc2luZyBwYXJhbWV0ZXI6IG5ld1Bhc3N3b3JkJyk7XG5cbiAgICAgIGF3YWl0IGtleWNoYWluc1xuICAgICAgICAudXBkYXRlUGFzc3dvcmQoeyBvbGRQYXNzd29yZDogJzEyMzQnLCBuZXdQYXNzd29yZDogNTY3OCB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnRXhwZWN0aW5nIHBhcmFtZXRlciBzdHJpbmc6IG5ld1Bhc3N3b3JkIGJ1dCBmb3VuZCBudW1iZXInKTtcbiAgICB9KTtcblxuICAgIGl0KCdzdWNjZXNzZnVsIHBhc3N3b3JkIHVwZGF0ZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG9sZFBhc3N3b3JkID0gJ29sZFBhc3N3b3JkJztcbiAgICAgIGNvbnN0IG5ld1Bhc3N3b3JkID0gJ25ld1Bhc3N3b3JkJztcbiAgICAgIGNvbnN0IG90aGVyUGFzc3dvcmQgPSAnb3RoZXJQYXNzd29yZCc7XG5cbiAgICAgIGNvbnN0IGVuY3J5cHRlZFhwcnYxID0gYXdhaXQgYml0Z28uZW5jcnlwdCh7IGlucHV0OiAneHBydjEnLCBwYXNzd29yZDogb2xkUGFzc3dvcmQgfSk7XG4gICAgICBjb25zdCBlbmNyeXB0ZWRYcHJ2MiA9IGF3YWl0IGJpdGdvLmVuY3J5cHQoeyBpbnB1dDogJ3hwcnYyJywgcGFzc3dvcmQ6IG90aGVyUGFzc3dvcmQgfSk7XG5cbiAgICAgIG5vY2soYmdVcmwpXG4gICAgICAgIC5wb3N0KCcvYXBpL3YxL3VzZXIvZW5jcnlwdGVkJylcbiAgICAgICAgLnJlcGx5KDIwMCwge1xuICAgICAgICAgIGtleWNoYWluczoge1xuICAgICAgICAgICAgeHB1YjE6IGVuY3J5cHRlZFhwcnYxLFxuICAgICAgICAgICAgeHB1YjI6IGVuY3J5cHRlZFhwcnYyLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdmVyc2lvbjogMSxcbiAgICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGtleWNoYWlucy51cGRhdGVQYXNzd29yZCh7IG9sZFBhc3N3b3JkOiBvbGRQYXNzd29yZCwgbmV3UGFzc3dvcmQ6IG5ld1Bhc3N3b3JkIH0pO1xuICAgICAgZm9yIChjb25zdCBbeHB1YiwgZW5jcnlwdGVkWHBydl0gb2YgT2JqZWN0LmVudHJpZXMocmVzdWx0LmtleWNoYWlucyBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSkge1xuICAgICAgICB4cHViLnNob3VsZC5zdGFydFdpdGgoJ3hwdWInKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkZWNyeXB0ZWRQcnYgPSBhd2FpdCBiaXRnby5kZWNyeXB0KHsgaW5wdXQ6IGVuY3J5cHRlZFhwcnYsIHBhc3N3b3JkOiBuZXdQYXNzd29yZCB9KTtcbiAgICAgICAgICBkZWNyeXB0ZWRQcnYuc2hvdWxkLnN0YXJ0V2l0aCgneHBydicpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgLy8gdGhlIGRlY3J5cHRpb24gZGlkbid0IHdvcmsgYmVjYXVzZSBvZiB0aGUgd3JvbmcgcGFzc3dvcmQsIHRoaXMgaXMgb25lIG9mIHRoZSBrZXljaGFpbnMgdGhhdCBkaWRuJ3QgbWF0Y2hcbiAgICAgICAgICAvLyB0aGUgb2xkIHBhc3N3b3JkXG4gICAgICAgICAgZS5tZXNzYWdlLnNob3VsZC5lcXVhbCgnaW5jb3JyZWN0IHBhc3N3b3JkJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJlc3VsdC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3ZlcnNpb24nKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgYWZ0ZXIoZnVuY3Rpb24gYWZ0ZXJLZXljaGFpbnMoKSB7XG4gICAgbm9jay5wZW5kaW5nTW9ja3MoKS5zaG91bGQuYmUuZW1wdHkoKTtcbiAgfSk7XG59KTtcbiJdfQ==