From a130a3e19baaae984c480752dfc21a1d459af0a2 Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Tue, 7 Jun 2016 16:16:38 -0300 Subject: [PATCH 1/8] better error when importing a wrong mnemonic --- public/views/import.html | 14 +++++++++++--- src/js/controllers/import.js | 9 ++++++++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/public/views/import.html b/public/views/import.html index da78df49a..4a75fc928 100644 --- a/public/views/import.html +++ b/public/views/import.html @@ -34,9 +34,17 @@
- - {{import.error|translate}} - +
+
+
+ +
Could not access the wallet at the server. Please check:
+
The password of the recovery phrase (if set)
+
The derivation path
+
The wallet service URL
+
NOTE: To import a wallet from a 3rd party software, please go to Add Wallet > Create Wallet, and specify the seed there.
+
Error: {{import.error|translate}}
+
diff --git a/src/js/controllers/import.js b/src/js/controllers/import.js index 35d18b5a4..0309346ae 100644 --- a/src/js/controllers/import.js +++ b/src/js/controllers/import.js @@ -12,6 +12,7 @@ angular.module('copayApp.controllers').controller('importController', $scope.bwsurl = defaults.bws.url; $scope.derivationPath = derivationPathHelper.default; $scope.account = 1; + self.importErr = false; window.ignoreMobilePause = true; $scope.$on('$destroy', function() { @@ -20,6 +21,7 @@ angular.module('copayApp.controllers').controller('importController', }, 100); }); + var updateSeedSourceSelect = function() { self.seedOptions = []; @@ -52,7 +54,7 @@ angular.module('copayApp.controllers').controller('importController', try { str2 = sjcl.decrypt(self.password, str); } catch (e) { - err = gettext('Could not decrypt file, check your spending password'); + err = gettext('Could not decrypt file, check your password'); $log.warn(e); }; @@ -92,6 +94,8 @@ angular.module('copayApp.controllers').controller('importController', self.loading = false; if (err) { self.error = err; + self.importErr = true; + $ionicScrollDelegate.scrollTop(); return $timeout(function() { $scope.$apply(); @@ -112,6 +116,8 @@ angular.module('copayApp.controllers').controller('importController', self.loading = false; if (err) { self.error = err; + self.importErr = true; + $ionicScrollDelegate.scrollTop(); return $timeout(function() { $scope.$apply(); @@ -265,6 +271,7 @@ angular.module('copayApp.controllers').controller('importController', return; } this.error = ''; + this.importErr = false; var account = +$scope.account; From 2302b63e0dec8b2d29b32f82b23bf777dfef8424 Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Tue, 7 Jun 2016 16:48:17 -0300 Subject: [PATCH 2/8] rm angular-lib i from angular.js bundle --- Gruntfile.js | 1 - bower.json | 1 - 2 files changed, 2 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 998453b7e..4a48970ed 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -90,7 +90,6 @@ module.exports = function(grunt) { 'bower_components/qrcode-generator/js/qrcode.js', 'bower_components/qrcode-decoder-js/lib/qrcode-decoder.js', 'bower_components/moment/min/moment-with-locales.js', - 'bower_components/angular/angular.js', 'bower_components/angular-ui-router/release/angular-ui-router.js', 'bower_components/angular-foundation/mm-foundation-tpls.js', 'bower_components/angular-moment/angular-moment.js', diff --git a/bower.json b/bower.json index 774cdfec4..781b4539d 100644 --- a/bower.json +++ b/bower.json @@ -7,7 +7,6 @@ "bitcore" ], "dependencies": { - "angular": "1.4.6", "angular-mocks": "1.4.10", "angular-foundation": "0.8.0", "angular-gettext": "2.2.1", From 64d099d15c38d14ef972ac9f024821735982ac4b Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Tue, 7 Jun 2016 17:11:57 -0300 Subject: [PATCH 3/8] better error message --- public/views/import.html | 30 ++++++++++++++++++++---------- src/js/controllers/import.js | 25 ++++++++++++++++++------- src/js/services/profileService.js | 12 ++++++++++-- 3 files changed, 48 insertions(+), 19 deletions(-) diff --git a/public/views/import.html b/public/views/import.html index 4a75fc928..109dcd1cb 100644 --- a/public/views/import.html +++ b/public/views/import.html @@ -33,19 +33,29 @@
-
-
-
-
-
Could not access the wallet at the server. Please check:
-
The password of the recovery phrase (if set)
-
The derivation path
-
The wallet service URL
-
NOTE: To import a wallet from a 3rd party software, please go to Add Wallet > Create Wallet, and specify the seed there.
-
Error: {{import.error|translate}}
+
+
+
Could not access the wallet at the server. Please check:
+
    +
  • The password of the recovery phrase (if set) +
  • +
  • The derivation path +
  • +
  • The wallet service URL +
+
+ NOTE: To import a wallet from a 3rd party software, please go to Add Wallet > Create Wallet, and specify the seed there.
+
+
+ +
+
+ {{import.error|translate}}
+
+
diff --git a/src/js/controllers/import.js b/src/js/controllers/import.js index 0309346ae..968ee8998 100644 --- a/src/js/controllers/import.js +++ b/src/js/controllers/import.js @@ -1,7 +1,7 @@ 'use strict'; angular.module('copayApp.controllers').controller('importController', - function($scope, $rootScope, $ionicScrollDelegate, $timeout, $log, profileService, configService, notification, go, sjcl, gettext, lodash, ledger, trezor, derivationPathHelper, platformInfo) { + function($scope, $rootScope, $ionicScrollDelegate, $timeout, $log, profileService, configService, notification, go, sjcl, gettext, lodash, ledger, trezor, derivationPathHelper, platformInfo, bwsError, bwcService) { var isChromeApp = platformInfo.isChromeApp; var isDevel = platformInfo.isDevel; @@ -9,6 +9,7 @@ angular.module('copayApp.controllers').controller('importController', var self = this; var reader = new FileReader(); var defaults = configService.getDefaults(); + var errors = bwcService.getErrors(); $scope.bwsurl = defaults.bws.url; $scope.derivationPath = derivationPathHelper.default; $scope.account = 1; @@ -93,14 +94,17 @@ angular.module('copayApp.controllers').controller('importController', profileService.importExtendedPrivateKey(xPrivKey, opts, function(err, walletId) { self.loading = false; if (err) { - self.error = err; - self.importErr = true; - + if (err instanceof errors.NOT_AUTHORIZED) { + self.importErr = true; + } else { + self.error = err; + } $ionicScrollDelegate.scrollTop(); return $timeout(function() { $scope.$apply(); }); } + $rootScope.$emit('Local/WalletImported', walletId); notification.success(gettext('Success'), gettext('Your wallet has been imported correctly')); go.walletHome(); @@ -114,15 +118,22 @@ angular.module('copayApp.controllers').controller('importController', $timeout(function() { profileService.importMnemonic(words, opts, function(err, walletId) { self.loading = false; - if (err) { - self.error = err; - self.importErr = true; + if (err) { +console.log('[import.js.122:err:]',err); //TODO + if (err instanceof errors.NOT_AUTHORIZED) { + +console.log('[import.js.125]'); //TODO + self.importErr = true; + } else { + self.error = err; + } $ionicScrollDelegate.scrollTop(); return $timeout(function() { $scope.$apply(); }); } + $rootScope.$emit('Local/WalletImported', walletId); notification.success(gettext('Success'), gettext('Your wallet has been imported correctly')); go.walletHome(); diff --git a/src/js/services/profileService.js b/src/js/services/profileService.js index f90c36af9..2a6f49fc8 100644 --- a/src/js/services/profileService.js +++ b/src/js/services/profileService.js @@ -543,8 +543,12 @@ angular.module('copayApp.services') $log.debug('Importing Wallet xPrivKey'); walletClient.importFromExtendedPrivateKey(xPrivKey, opts, function(err) { - if (err) + if (err) { + if (err instanceof errors.NOT_AUTHORIZED) + return cb(err); + return bwsError.cb(err, gettext('Could not import'), cb); + } root.addAndBindWalletClient(walletClient, { bwsurl: opts.bwsurl, @@ -571,8 +575,12 @@ angular.module('copayApp.services') passphrase: opts.passphrase, account: opts.account || 0, }, function(err) { - if (err) + if (err) { + if (err instanceof errors.NOT_AUTHORIZED) + return cb(err); + return bwsError.cb(err, gettext('Could not import'), cb); + } root.addAndBindWalletClient(walletClient, { bwsurl: opts.bwsurl, From 7d401aa8c4eb0949e4bcae2034aa99596ebb6e94 Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Tue, 7 Jun 2016 21:56:56 -0300 Subject: [PATCH 4/8] fix test WIP --- src/js/services/profileService.js | 1 + test/controllers/create.test.js | 70 ++++++++--------------------- test/controllers/disclaimer.test.js | 18 ++++---- 3 files changed, 29 insertions(+), 60 deletions(-) diff --git a/src/js/services/profileService.js b/src/js/services/profileService.js index 2a6f49fc8..fab54e654 100644 --- a/src/js/services/profileService.js +++ b/src/js/services/profileService.js @@ -301,6 +301,7 @@ angular.module('copayApp.services') var name = opts.name || gettextCatalog.getString('Personal Wallet'); var myName = opts.myName || gettextCatalog.getString('me'); +console.log('[profileService.js.303]', opts); //TODO walletClient.createWallet(name, myName, opts.m, opts.n, { network: opts.networkName, singleAddress: opts.singleAddress, diff --git a/test/controllers/create.test.js b/test/controllers/create.test.js index 3951acb9c..129693c0b 100644 --- a/test/controllers/create.test.js +++ b/test/controllers/create.test.js @@ -5,73 +5,38 @@ describe('createController', function() { '1eda3e702196b8d5d82fae129249bc79f0d5be2f5309a4e39855e7eb4ad31428': {}, '31f5deeef4cf7fd8fc67297179232e8e4590532960454ad958009132fef3daae': {}, // createWallet 1-1 - '56db6f58f2c212591afb4d508d03e5fb40bb786f23dc56c43b98bde42dc513e5': { - "walletId": "267bfa75-5575-4af7-8aa3-f5186bc99262" + 'b665ad8991c67f8f7e8ffb7e86c3b930fd3ff56c68eb6fd441bf374559cfe59c': { + "walletId": "b2643a0d-7d58-413a-b757-017e086a9c3d", }, - // join ^ - 'd2f00a570de17f52fcda4b1b4b4ed1bc688a3b33c193b71630c3183dab70e6ec': { - "copayerId": "a9dcee10fe9c611300e6c7926ece20780f89b9a98baaa342928038b5503ed929", - "wallet": { - "version": "1.0.0", - "createdOn": 1463488747, - "id": "267bfa75-5575-4af7-8aa3-f5186bc99262", - "name": "{\"iv\":\"BZQVWAP6d1e4G8Fq1rQKbA==\",\"v\":1,\"iter\":1,\"ks\":128,\"ts\":64,\"mode\":\"ccm\",\"adata\":\"\",\"cipher\":\"aes\",\"ct\":\"70OA+k4+xTPxim+QSdDtA5/Cf055\"}", - "m": 1, - "n": 1, - "status": "complete", - "publicKeyRing": [{ - "xPubKey": "xpub6DRjAgkh3vGTWDcEmDp4TPwy48Nu8yrp6swCEdCCLL615CgnZon7r3vXYr8LYibMLJh5DriGSito1FRBwVoBkjD1ZWG4dmgiC935wLj3nQC", - "requestPubKey": "02befcc7499abcecf9608bb05e665f374434a89ca0c4e9baeab7dd28c027143458" - }], - "copayers": [{ - "version": 2, - "createdOn": 1463490295, - "xPubKey": "xpub6DRjAgkh3vGTWDcEmDp4TPwy48Nu8yrp6swCEdCCLL615CgnZon7r3vXYr8LYibMLJh5DriGSito1FRBwVoBkjD1ZWG4dmgiC935wLj3nQC", - "id": "a9dcee10fe9c611300e6c7926ece20780f89b9a98baaa342928038b5503ed929", - "name": "{\"iv\":\"BZQVWAP6d1e4G8Fq1rQKbA==\",\"v\":1,\"iter\":1,\"ks\":128,\"ts\":64,\"mode\":\"ccm\",\"adata\":\"\",\"cipher\":\"aes\",\"ct\":\"wwZd+2LQgYR6cA==\"}", - "requestPubKey": "02befcc7499abcecf9608bb05e665f374434a89ca0c4e9baeab7dd28c027143458", - "signature": "3044022042e069126a42f1b9b498c315a825ef4fc9f4214156442651e4fef5c7678245e702205936045d7b22baa36ba36ef827cc3e5d542d57d9a1afb3a54080d12f0b95c67e", - "requestPubKeys": [{ - "key": "02befcc7499abcecf9608bb05e665f374434a89ca0c4e9baeab7dd28c027143458", - "signature": "3044022042e069126a42f1b9b498c315a825ef4fc9f4214156442651e4fef5c7678245e702205936045d7b22baa36ba36ef827cc3e5d542d57d9a1afb3a54080d12f0b95c67e" - }], - "customData": "{\"iv\":\"BZQVWAP6d1e4G8Fq1rQKbA==\",\"v\":1,\"iter\":1,\"ks\":128,\"ts\":64,\"mode\":\"ccm\",\"adata\":\"\",\"cipher\":\"aes\",\"ct\":\"1Wjf2KvFkd5k0ypiiSNkSVXk7zdBOiTeCrwzPBI7fMQ/VqXUzrSB6gMGs9jISr+MvCaL1GJIXjaMnlQZNMR0lx/Pd1c6R/nKGBdHjKh0mlI=\"}" - }], - "pubKey": "026d95bb5cc2a30c19e22379ae78b4757aaa2dd0ccbd15a1db054fb50cb98ed361", - "network": "livenet", - "derivationStrategy": "BIP44", - "addressType": "P2PKH", - "addressManager": { - "version": 2, - "derivationStrategy": "BIP44", - "receiveAddressIndex": 0, - "changeAddressIndex": 0, - "copayerIndex": 2147483647 - }, - "scanStatus": null - } + 'b87aa44e3ff1c3606e38f6e42dce31ddc848a3e1c9b161e541732cbcf34a0103': { + "walletId": "b2643a0d-7d58-413a-b757-017e086a9c3d", + "name": "{\"iv\":\"BZQVWAP6d1e4G8Fq1rQKbA==\",\"v\":1,\"iter\":1,\"ks\":128,\"ts\":64,\"mode\":\"ccm\",\"adata\":\"\",\"cipher\":\"aes\",\"ct\":\"wwZd+2LQgYR6cA==\"}", + "xPubKey": "xpub6DRjAgkh3vGTWDcEmDp4TPwy48Nu8yrp6swCEdCCLL615CgnZon7r3vXYr8LYibMLJh5DriGSito1FRBwVoBkjD1ZWG4dmgiC935wLj3nQC", + "requestPubKey": "02befcc7499abcecf9608bb05e665f374434a89ca0c4e9baeab7dd28c027143458", + "customData": "{\"iv\":\"BZQVWAP6d1e4G8Fq1rQKbA==\",\"v\":1,\"iter\":1,\"ks\":128,\"ts\":64,\"mode\":\"ccm\",\"adata\":\"\",\"cipher\":\"aes\",\"ct\":\"1Wjf2KvFkd5k0ypiiSNkSVXk7zdBOiTeCrwzPBI7fMQ/VqXUzrSB6gMGs9jISr+MvCaL1GJIXjaMnlQZNMR0lx/Pd1c6R/nKGBdHjKh0mlI=\"}", + "copayerSignature": "3044022042e069126a42f1b9b498c315a825ef4fc9f4214156442651e4fef5c7678245e702205936045d7b22baa36ba36ef827cc3e5d542d57d9a1afb3a54080d12f0b95c67e" }, //createWallet 2-2 - 'e46ef870b70e6deca6bbfa61bd0d83b0dc5b712402538b0dabcd0d4f038b0eba': { - "walletId": "7bd8d22f-d132-43e1-b259-d5b430752553" + '5a1d11ebc2a011f018b049de6b5c6b990cdc8e280644103f95a995321dbf0248': { + "walletId": "2f50f598-7550-4e54-8032-15aa892309fb" }, - - // join ^ - '2df76b91e0080f1552926b7d3ce5dd99db054bc4dfce309d8455cab5d9a93ad4': { + // join + '58f2f3a6f11cd7dee9a75e026e3ba570c09b952bfea05f596fdb48e6ea323f21': { "copayerId": "3d4eb9b439eee1b2b73cf792eda52e420f4665109c7234a50cf3cdbf296ea8fb", "wallet": { "version": "1.0.0", - "createdOn": 1463511645, - "id": "7bd8d22f-d132-43e1-b259-d5b430752553", + "createdOn": 1465347188, + "id": "2f50f598-7550-4e54-8032-15aa892309fb", "name": "{\"iv\":\"BZQVWAP6d1e4G8Fq1rQKbA==\",\"v\":1,\"iter\":1,\"ks\":128,\"ts\":64,\"mode\":\"ccm\",\"adata\":\"\",\"cipher\":\"aes\",\"ct\":\"70OA+k4+xTPxim+QSdDtA5/Cf055\"}", "m": 2, "n": 2, + "singleAddress": false, "status": "pending", "publicKeyRing": [], "copayers": [{ "version": 2, - "createdOn": 1463511988, + "createdOn": 1465347188, "xPubKey": "xpub6CkPnrzSUp9qzBVM3hpo4oS2JKC6GJq6brE1yW59QrnhDpvkFLakpxUGRGXH62fiXb5S2VbnD4h2DLoCMfSkwfonbNgNYTJw9Ko5SqWEqCR", "id": "3d4eb9b439eee1b2b73cf792eda52e420f4665109c7234a50cf3cdbf296ea8fb", "name": "{\"iv\":\"BZQVWAP6d1e4G8Fq1rQKbA==\",\"v\":1,\"iter\":1,\"ks\":128,\"ts\":64,\"mode\":\"ccm\",\"adata\":\"\",\"cipher\":\"aes\",\"ct\":\"wwZd+2LQgYR6cA==\"}", @@ -97,6 +62,7 @@ describe('createController', function() { "scanStatus": null } }, + }; // TODO: Read from file beforeEach(function(done) { diff --git a/test/controllers/disclaimer.test.js b/test/controllers/disclaimer.test.js index 5502aecce..52452b026 100644 --- a/test/controllers/disclaimer.test.js +++ b/test/controllers/disclaimer.test.js @@ -3,18 +3,19 @@ describe('disclaimerController', function() { var storeProfile; var fixtures = { - '8dc332881e99c908c655147dc6bc605e102b0bd3cf2dbee02ed2a0f4daf2925a': { - "walletId": "eddaef15-f412-462f-9d3e-a793a7f6f6ba" + 'e4d8ae25e03e5fef2e553615b088cfce222083828c13fdb37b8b6cf87bf76236': { + "walletId": "215f125d-57e7-414a-9723-448256113440", }, - '654145bc3f15f03a8b1ccf55aa1bdcd1cfd5bbe3de90e909fd4e7f9f69ec4d79': { + '3f3b354d45c3eae3e4fe8830fcb728e5e570515af86e1a35deff0048a7a5e6b5': { "copayerId": "1a91ead1b6d13da882a25377a20e460df557e77008ea4f60eecbf984f786cf03", "wallet": { "version": "1.0.0", - "createdOn": 1465152783, - "id": "eddaef15-f412-462f-9d3e-a793a7f6f6ba", + "createdOn": 1465347281, + "id": "215f125d-57e7-414a-9723-448256113440", "name": "{\"iv\":\"BZQVWAP6d1e4G8Fq1rQKbA==\",\"v\":1,\"iter\":1,\"ks\":128,\"ts\":64,\"mode\":\"ccm\",\"adata\":\"\",\"cipher\":\"aes\",\"ct\":\"/gaG7FIkhCiwsWKZUR0sL/cxH+zHMK0=\"}", "m": 1, "n": 1, + "singleAddress": false, "status": "complete", "publicKeyRing": [{ "xPubKey": "xpub6Cb7MYAX7mJR28MfFueCsoDVVHhoWkQxRC4viAeHanYwRNgDo5xMF42xmAeExzfyPXX3GaALNA8hWFMekVYvDF2BALommUhMgZ52szh88fd", @@ -22,7 +23,7 @@ describe('disclaimerController', function() { }], "copayers": [{ "version": 2, - "createdOn": 1465152783, + "createdOn": 1465347281, "xPubKey": "xpub6Cb7MYAX7mJR28MfFueCsoDVVHhoWkQxRC4viAeHanYwRNgDo5xMF42xmAeExzfyPXX3GaALNA8hWFMekVYvDF2BALommUhMgZ52szh88fd", "id": "1a91ead1b6d13da882a25377a20e460df557e77008ea4f60eecbf984f786cf03", "name": "{\"iv\":\"BZQVWAP6d1e4G8Fq1rQKbA==\",\"v\":1,\"iter\":1,\"ks\":128,\"ts\":64,\"mode\":\"ccm\",\"adata\":\"\",\"cipher\":\"aes\",\"ct\":\"wwZd+2LQgYR6cA==\"}", @@ -47,7 +48,8 @@ describe('disclaimerController', function() { }, "scanStatus": null } - }, + } + }; // TODO: Read from file beforeEach(function(done) { @@ -62,7 +64,7 @@ describe('disclaimerController', function() { }); it('should be defined', function() { - should.exist(ctrl); + should.exist(ctrl); }); it('should create the initial profile', function(done) { From 6cb1370d6e41a5303fb779e17927a88bf18f3912 Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Wed, 8 Jun 2016 08:30:57 -0300 Subject: [PATCH 5/8] fix tests fixtures --- test/controllers/create.test.js | 71 ++++++++++++++++++++++++--------- test/helpers.js | 9 ++++- test/karma.conf.js | 3 +- 3 files changed, 62 insertions(+), 21 deletions(-) diff --git a/test/controllers/create.test.js b/test/controllers/create.test.js index 129693c0b..8010fde85 100644 --- a/test/controllers/create.test.js +++ b/test/controllers/create.test.js @@ -5,18 +5,53 @@ describe('createController', function() { '1eda3e702196b8d5d82fae129249bc79f0d5be2f5309a4e39855e7eb4ad31428': {}, '31f5deeef4cf7fd8fc67297179232e8e4590532960454ad958009132fef3daae': {}, // createWallet 1-1 + // 'b665ad8991c67f8f7e8ffb7e86c3b930fd3ff56c68eb6fd441bf374559cfe59c': { - "walletId": "b2643a0d-7d58-413a-b757-017e086a9c3d", + "walletId": "63d910e8-3e1b-4aac-97e9-aa0299a74c2c" }, - 'b87aa44e3ff1c3606e38f6e42dce31ddc848a3e1c9b161e541732cbcf34a0103': { - "walletId": "b2643a0d-7d58-413a-b757-017e086a9c3d", - "name": "{\"iv\":\"BZQVWAP6d1e4G8Fq1rQKbA==\",\"v\":1,\"iter\":1,\"ks\":128,\"ts\":64,\"mode\":\"ccm\",\"adata\":\"\",\"cipher\":\"aes\",\"ct\":\"wwZd+2LQgYR6cA==\"}", - "xPubKey": "xpub6DRjAgkh3vGTWDcEmDp4TPwy48Nu8yrp6swCEdCCLL615CgnZon7r3vXYr8LYibMLJh5DriGSito1FRBwVoBkjD1ZWG4dmgiC935wLj3nQC", - "requestPubKey": "02befcc7499abcecf9608bb05e665f374434a89ca0c4e9baeab7dd28c027143458", - "customData": "{\"iv\":\"BZQVWAP6d1e4G8Fq1rQKbA==\",\"v\":1,\"iter\":1,\"ks\":128,\"ts\":64,\"mode\":\"ccm\",\"adata\":\"\",\"cipher\":\"aes\",\"ct\":\"1Wjf2KvFkd5k0ypiiSNkSVXk7zdBOiTeCrwzPBI7fMQ/VqXUzrSB6gMGs9jISr+MvCaL1GJIXjaMnlQZNMR0lx/Pd1c6R/nKGBdHjKh0mlI=\"}", - "copayerSignature": "3044022042e069126a42f1b9b498c315a825ef4fc9f4214156442651e4fef5c7678245e702205936045d7b22baa36ba36ef827cc3e5d542d57d9a1afb3a54080d12f0b95c67e" + 'd5cc6adebc752c154998f1c96af2b24e21e52dbd7c07008c333af03b905ffb85': { + "copayerId": "a9dcee10fe9c611300e6c7926ece20780f89b9a98baaa342928038b5503ed929", + "wallet": { + "version": "1.0.0", + "createdOn": 1465385318, + "id": "63d910e8-3e1b-4aac-97e9-aa0299a74c2c", + "name": "{\"iv\":\"BZQVWAP6d1e4G8Fq1rQKbA==\",\"v\":1,\"iter\":1,\"ks\":128,\"ts\":64,\"mode\":\"ccm\",\"adata\":\"\",\"cipher\":\"aes\",\"ct\":\"70OA+k4+xTPxim+QSdDtA5/Cf055\"}", + "m": 1, + "n": 1, + "singleAddress": false, + "status": "complete", + "publicKeyRing": [{ + "xPubKey": "xpub6DRjAgkh3vGTWDcEmDp4TPwy48Nu8yrp6swCEdCCLL615CgnZon7r3vXYr8LYibMLJh5DriGSito1FRBwVoBkjD1ZWG4dmgiC935wLj3nQC", + "requestPubKey": "02befcc7499abcecf9608bb05e665f374434a89ca0c4e9baeab7dd28c027143458" + }], + "copayers": [{ + "version": 2, + "createdOn": 1465385318, + "xPubKey": "xpub6DRjAgkh3vGTWDcEmDp4TPwy48Nu8yrp6swCEdCCLL615CgnZon7r3vXYr8LYibMLJh5DriGSito1FRBwVoBkjD1ZWG4dmgiC935wLj3nQC", + "id": "a9dcee10fe9c611300e6c7926ece20780f89b9a98baaa342928038b5503ed929", + "name": "{\"iv\":\"BZQVWAP6d1e4G8Fq1rQKbA==\",\"v\":1,\"iter\":1,\"ks\":128,\"ts\":64,\"mode\":\"ccm\",\"adata\":\"\",\"cipher\":\"aes\",\"ct\":\"wwZd+2LQgYR6cA==\"}", + "requestPubKey": "02befcc7499abcecf9608bb05e665f374434a89ca0c4e9baeab7dd28c027143458", + "signature": "3044022042e069126a42f1b9b498c315a825ef4fc9f4214156442651e4fef5c7678245e702205936045d7b22baa36ba36ef827cc3e5d542d57d9a1afb3a54080d12f0b95c67e", + "requestPubKeys": [{ + "key": "02befcc7499abcecf9608bb05e665f374434a89ca0c4e9baeab7dd28c027143458", + "signature": "3044022042e069126a42f1b9b498c315a825ef4fc9f4214156442651e4fef5c7678245e702205936045d7b22baa36ba36ef827cc3e5d542d57d9a1afb3a54080d12f0b95c67e" + }], + "customData": "{\"iv\":\"BZQVWAP6d1e4G8Fq1rQKbA==\",\"v\":1,\"iter\":1,\"ks\":128,\"ts\":64,\"mode\":\"ccm\",\"adata\":\"\",\"cipher\":\"aes\",\"ct\":\"1Wjf2KvFkd5k0ypiiSNkSVXk7zdBOiTeCrwzPBI7fMQ/VqXUzrSB6gMGs9jISr+MvCaL1GJIXjaMnlQZNMR0lx/Pd1c6R/nKGBdHjKh0mlI=\"}" + }], + "pubKey": "026d95bb5cc2a30c19e22379ae78b4757aaa2dd0ccbd15a1db054fb50cb98ed361", + "network": "livenet", + "derivationStrategy": "BIP44", + "addressType": "P2PKH", + "addressManager": { + "version": 2, + "derivationStrategy": "BIP44", + "receiveAddressIndex": 0, + "changeAddressIndex": 0, + "copayerIndex": 2147483647 + }, + "scanStatus": null + } }, - //createWallet 2-2 '5a1d11ebc2a011f018b049de6b5c6b990cdc8e280644103f95a995321dbf0248': { "walletId": "2f50f598-7550-4e54-8032-15aa892309fb" @@ -100,16 +135,16 @@ describe('createController', function() { should.not.exist(ctrl.error); mocks.go.walletHome.calledOnce.should.equal(true); - + // // check resulting profile - storageService.getProfile(function(err, profile) { - should.not.exist(err); - var c = profile.credentials[0]; - c.network.should.equal('livenet'); - // from test vectors from https://dcpos.github.io/bip39/ - c.xPrivKey.should.equal('xprv9s21ZrQH143K2x4gnzRB1eZDq92Uuvy9CXbvgQGdvykXZ9mkkot6LBjzDpgaAfvzkuxJe9JKJXQ38VoPutxvACA5MsyoBs5UyQ4HZKGshGs'); - done(); - }); + storageService.getProfile(function(err, profile) { + should.not.exist(err); + var c = profile.credentials[0]; + c.network.should.equal('livenet'); + // from test vectors from https://dcpos.github.io/bip39/ + c.xPrivKey.should.equal('xprv9s21ZrQH143K2x4gnzRB1eZDq92Uuvy9CXbvgQGdvykXZ9mkkot6LBjzDpgaAfvzkuxJe9JKJXQ38VoPutxvACA5MsyoBs5UyQ4HZKGshGs'); + done(); + }); }); diff --git a/test/helpers.js b/test/helpers.js index 59520af00..b8adbfb58 100644 --- a/test/helpers.js +++ b/test/helpers.js @@ -64,8 +64,8 @@ mocks.$document = { mocks.init = function(fixtures, controllerName, opts, done) { console.log(' * Mock init()'); opts = opts || {}; - should.exist(controllerName, 'Provide the name of the Controller to mocks.init()'); + should.exist(controllerName, 'Provide the name of the Controller to mocks.init()'); mocks.go = {}; mocks.go.walletHome = sinon.stub(); mocks.go.path = sinon.stub(); @@ -86,6 +86,7 @@ mocks.init = function(fixtures, controllerName, opts, done) { module('gettext'); module('stateMock'); module('bwcModule', function($provide) { + console.log(' * bwcService decorator'); $provide.decorator('bwcService', function($delegate, lodash) { var getClient = $delegate.getClient; @@ -182,8 +183,12 @@ mocks.init = function(fixtures, controllerName, opts, done) { rate: 452.92 }); + $httpBackend.whenGET(/views.*/).respond(200, ''); + + _configService_.get(function() { function startController() { + console.log(' * starting Controller:', controllerName); ctrl = $controller(controllerName, { $scope: scope, $modal: mocks.modal, @@ -216,6 +221,7 @@ mocks.init = function(fixtures, controllerName, opts, done) { done(); }); } else { + _profileService_.create({ noWallet: true }, function(err) { @@ -226,6 +232,7 @@ mocks.init = function(fixtures, controllerName, opts, done) { _profileService_.setDisclaimerAccepted(function() { if (!opts.initController) startController(); + done(); }); }); diff --git a/test/karma.conf.js b/test/karma.conf.js index 0f8935976..e94449c8b 100644 --- a/test/karma.conf.js +++ b/test/karma.conf.js @@ -18,7 +18,7 @@ module.exports = function(config) { 'bower_components/qrcode-generator/js/qrcode.js', 'bower_components/qrcode-decoder-js/lib/qrcode-decoder.js', 'bower_components/moment/min/moment-with-locales.js', - 'bower_components/angular/angular.js', + 'bower_components/ionic/release/js/ionic.bundle.min.js', 'bower_components/angular-ui-router/release/angular-ui-router.js', 'bower_components/angular-foundation/mm-foundation-tpls.js', 'bower_components/angular-moment/angular-moment.js', @@ -28,7 +28,6 @@ module.exports = function(config) { 'bower_components/angular-sanitize/angular-sanitize.js', 'bower_components/ng-csv/build/ng-csv.js', 'bower_components/angular-mocks/angular-mocks.js', - 'bower_components/ionic/release/js/ionic.bundle.min.js', 'angular-bitcore-wallet-client/angular-bitcore-wallet-client.js', 'src/js/**/*.js', 'test/helpers.js', From 6c956dea5049b7551ec22131fe4488b7335291c0 Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Wed, 8 Jun 2016 09:19:33 -0300 Subject: [PATCH 6/8] fix bower conflics, rm logs --- bower.json | 6 +++--- src/js/controllers/import.js | 3 --- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/bower.json b/bower.json index 781b4539d..15f45d9e6 100644 --- a/bower.json +++ b/bower.json @@ -12,7 +12,7 @@ "angular-gettext": "2.2.1", "angular-moment": "0.10.1", "angular-qrcode": "monospaced/angular-qrcode#~6.2.1", - "angular-ui-router": "0.2.18", + "angular-ui-router": "0.2.13", "animate.css": "3.5.1", "foundation": "5.5.3", "foundation-icon-fonts": "*", @@ -24,8 +24,8 @@ "ng-csv": "~0.3.6" }, "resolutions": { - "angular": "1.4.6", + "angular": "1.5.3", "qrcode-generator": "0.1.0", - "angular-ui-router": "0.2.18" + "angular-ui-router": "0.2.13" } } diff --git a/src/js/controllers/import.js b/src/js/controllers/import.js index 968ee8998..010520814 100644 --- a/src/js/controllers/import.js +++ b/src/js/controllers/import.js @@ -120,10 +120,7 @@ angular.module('copayApp.controllers').controller('importController', self.loading = false; if (err) { -console.log('[import.js.122:err:]',err); //TODO if (err instanceof errors.NOT_AUTHORIZED) { - -console.log('[import.js.125]'); //TODO self.importErr = true; } else { self.error = err; From 1865189e261fcf050ddb8151dd49cd3aeabcd31f Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Wed, 8 Jun 2016 09:20:15 -0300 Subject: [PATCH 7/8] msg --- public/views/import.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/views/import.html b/public/views/import.html index 109dcd1cb..990f0a7a6 100644 --- a/public/views/import.html +++ b/public/views/import.html @@ -45,7 +45,7 @@
  • The wallet service URL
    - NOTE: To import a wallet from a 3rd party software, please go to Add Wallet > Create Wallet, and specify the seed there.
    + NOTE: To import a wallet from a 3rd party software, please go to Add Wallet > Create Wallet, and specify the Recovery Phrase there.
  • From 46cb76d4f2209a72fc96deb27c823c923dda7e57 Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Wed, 8 Jun 2016 10:30:53 -0300 Subject: [PATCH 8/8] upgrade bwc --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 55c254da6..05878f04e 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "url": "https://github.com/bitpay/copay/issues" }, "dependencies": { - "bitcore-wallet-client": "~2.5.0", + "bitcore-wallet-client": "2.6.0", "express": "^4.11.2", "fs": "0.0.2", "grunt": "^0.4.5",