add custom data to copayers

This commit is contained in:
Ivan Socolsky 2015-08-25 16:12:47 -03:00
parent cffde9de82
commit 6cba8abc5c
3 changed files with 31 additions and 12 deletions

View File

@ -48,6 +48,8 @@ Copayer.create = function(opts) {
copayerIndex: opts.copayerIndex
});
x.customData = opts.customData;
return x;
};
@ -73,6 +75,8 @@ Copayer.fromObj = function(obj) {
}
x.addressManager = AddressManager.fromObj(obj.addressManager);
x.customData = obj.customData;
return x;
};

View File

@ -291,8 +291,12 @@ WalletService.prototype.getStatus = function(opts, cb) {
if (err) return next(err);
var walletExtendedKeys = ['publicKeyRing', 'pubKey', 'addressManager'];
var copayerExtendedKeys = ['xPubKey', 'requestPubKey', 'signature', 'addressManager'];
var copayerExtendedKeys = ['xPubKey', 'requestPubKey', 'signature', 'addressManager', 'customData'];
wallet.copayers = _.map(wallet.copayers, function(copayer) {
if (copayer.id == self.copayerId) return copayer;
return _.omit(copayer, 'customData');
});
if (!opts.includeExtendedInfo) {
wallet = _.omit(wallet, walletExtendedKeys);
wallet.copayers = _.map(wallet.copayers, function(copayer) {
@ -406,8 +410,8 @@ WalletService.prototype._addCopayerToWallet = function(wallet, opts, cb) {
xPubKey: opts.xPubKey,
requestPubKey: opts.requestPubKey,
signature: opts.copayerSignature,
customData: opts.customData,
});
self.storage.fetchCopayerLookup(copayer.id, function(err, res) {
if (err) return cb(err);
if (res) return cb(Errors.COPAYER_REGISTERED);
@ -508,7 +512,8 @@ WalletService.prototype.addAccess = function(opts, cb) {
* @param {string} opts.name - The copayer name.
* @param {string} opts.xPubKey - Extended Public Key for this copayer.
* @param {string} opts.requestPubKey - Public Key used to check requests from this copayer.
* @param {string} opts.copayerSignature - S(name|xPubKey|requestPubKey). Used by other copayers to verify the that the copayer joining knows the wallet secret.
* @param {string} opts.copayerSignature - S(name|xPubKey|requestPubKey). Used by other copayers to verify that the copayer joining knows the wallet secret.
* @param {string} opts.customData - (optional) Custom data for this copayer.
*/
WalletService.prototype.joinWallet = function(opts, cb) {
var self = this;

View File

@ -104,6 +104,7 @@ helpers.createAndJoinWallet = function(m, n, opts, cb) {
name: 'copayer ' + (i + 1),
xPubKey: TestData.copayers[i + offset].xPubKey_45H,
requestPubKey: TestData.copayers[i + offset].pubKey_1H_0,
customData: 'custom data ' + (i + 1),
});
server.joinWallet(copayerOpts, function(err, result) {
@ -912,6 +913,7 @@ describe('Wallet service', function() {
name: 'me',
xPubKey: TestData.copayers[0].xPubKey_45H,
requestPubKey: TestData.copayers[0].pubKey_1H_0,
customData: 'dummy custom data',
});
server.joinWallet(copayerOpts, function(err, result) {
should.not.exist(err);
@ -923,6 +925,7 @@ describe('Wallet service', function() {
var copayer = wallet.copayers[0];
copayer.name.should.equal('me');
copayer.id.should.equal(copayerId);
copayer.customData.should.equal('dummy custom data');
server.getNotifications({}, function(err, notifications) {
should.not.exist(err);
var notif = _.find(notifications, {
@ -1117,7 +1120,7 @@ describe('Wallet service', function() {
});
});
describe.only('#getStatus', function() {
describe('#getStatus', function() {
var server, wallet;
beforeEach(function(done) {
helpers.createAndJoinWallet(1, 1, function(s, w) {
@ -1144,12 +1147,14 @@ describe('Wallet service', function() {
should.not.exist(status.wallet.publicKeyRing);
should.not.exist(status.wallet.pubKey);
should.not.exist(status.wallet.addressManager);
should.not.exist(status.wallet.copayers[0].xPubKey);
should.not.exist(status.wallet.copayers[0].requestPubKey);
should.not.exist(status.wallet.copayers[0].signature);
should.not.exist(status.wallet.copayers[0].requestPubKey);
should.not.exist(status.wallet.copayers[0].addressManager);
_.each(status.wallet.copayers, function(copayer) {
should.not.exist(copayer.xPubKey);
should.not.exist(copayer.requestPubKey);
should.not.exist(copayer.signature);
should.not.exist(copayer.requestPubKey);
should.not.exist(copayer.addressManager);
should.not.exist(copayer.customData);
});
done();
});
});
@ -1167,7 +1172,11 @@ describe('Wallet service', function() {
should.exist(status.wallet.copayers[0].signature);
should.exist(status.wallet.copayers[0].requestPubKey);
should.exist(status.wallet.copayers[0].addressManager);
should.exist(status.wallet.copayers[0].customData);
// Do not return other copayer's custom data
_.each(_.rest(status.wallet.copayers), function(copayer) {
should.not.exist(copayer.customData);
});
done();
});
});
@ -1593,7 +1602,8 @@ describe('Wallet service', function() {
it('should be able to re-gain access from xPrivKey', function(done) {
ws.addAccess(opts, function(err, res) {
should.not.exist(err);
server.getBalance(res.wallet.walletId, function(err, bal) { should.not.exist(err);
server.getBalance(res.wallet.walletId, function(err, bal) {
should.not.exist(err);
bal.totalAmount.should.equal(1e8);
getAuthServer(opts.copayerId, reqPrivKey, function(err, server2) {
server2.getBalance(res.wallet.walletId, function(err, bal2) {