Merge pull request #865 from maraoz/feature/force-testnet

Feature: allow to force network from config
This commit is contained in:
Matias Alejo Garcia 2014-07-08 15:35:31 -03:00
commit b0ff5494e0
6 changed files with 34 additions and 2 deletions

View File

@ -2,6 +2,7 @@
var defaultConfig = {
// DEFAULT network (livenet or testnet)
networkName: 'livenet',
forceNetwork: false,
// DEFAULT unit: Bit
unitName: 'bits',
@ -124,3 +125,5 @@ var defaultConfig = {
disableVideo: true,
verbose: 1,
};
if (typeof module !== 'undefined')
module.exports = defaultConfig;

View File

@ -849,8 +849,15 @@
<div class="small-12 medium-6 medium-centered large-6 large-centered columns">
<fieldset>
<legend>Bitcoin Network</legend>
<input id="network-name" type="checkbox" ng-model="networkName" ng-true-value="livenet" ng-false-value="testnet" class="form-control" ng-click="changeNetwork()">
<div ng-if="!forceNetwork">
<input id="network-name" type="checkbox" ng-model="networkName"
ng-true-value="livenet" ng-false-value="testnet" class="form-control" ng-click="changeNetwork()">
<label for="network-name">Livenet</label>
</div>
<div ng-if="forceNetwork">
Network has been fixed to <strong>{{networkName}}</strong> in this setup. See <a href="https://copay.io">copay.io</a>
for options to use Copay on both livenet and testnet.
</div>
</fieldset>
<fieldset>
<legend>Wallet Unit</legend>

View File

@ -12,6 +12,7 @@ angular.module('copayApp.controllers').controller('SettingsController',
$scope.networkPort = config.network.port;
$scope.networkSecure = config.network.secure || false;
$scope.disableVideo = typeof config.disableVideo === undefined ? true : config.disableVideo;
$scope.forceNetwork = config.forceNetwork;
$scope.unitOpts = [{
name: 'Satoshis (100,000,000 satoshis = 1BTC)',

View File

@ -19,6 +19,7 @@ var AddressIndex = require('./AddressIndex');
var PublicKeyRing = require('./PublicKeyRing');
var TxProposals = require('./TxProposals');
var PrivateKey = require('./PrivateKey');
var copayConfig = require('../../../config');
function Wallet(opts) {
var self = this;
@ -33,6 +34,9 @@ function Wallet(opts) {
throw new Error('missing required option for Wallet: ' + k);
self[k] = opts[k];
});
if (copayConfig.forceNetwork && opts.networkName !== copayConfig.networkName)
throw new Error('Network forced to '+copayConfig.networkName+
' and tried to create a Wallet with network '+opts.networkName);
this.log('creating ' + opts.requiredCopayers + ' of ' + opts.totalCopayers + ' wallet');

View File

@ -8,6 +8,7 @@ try {
} catch (e) {
var copay = require('../copay'); //node
}
var copayConfig = require('../config');
var Wallet = require('../js/models/core/Wallet');
var Structure = copay.Structure;
var Storage = require('./mocks/FakeStorage');
@ -950,4 +951,14 @@ describe('Wallet model', function() {
});
});
describe('#forceNetwork in config', function() {
it('should throw if network is different', function() {
var backup = copayConfig.forceNetwork;
copayConfig.forceNetwork = true;
config.networkName = 'livenet';
cachedCreateW2.should.throw(Error);
copayConfig.forceNetwork = backup;
});
});
});

View File

@ -87,6 +87,12 @@ var createBundle = function(opts) {
b.require('./js/models/core/Message', {
expose: '../js/models/core/Message'
});
b.require('./config', {
expose: '../config'
});
b.require('./js/models/core/Structure', {
expose: '../js/models/core/Structure'
});
if (opts.dontminify) {
//include dev dependencies