copay tests in the browser!

This commit is contained in:
Matias Alejo Garcia 2014-04-07 15:31:41 -03:00
parent 5f6739fbfc
commit a658ec8452
10 changed files with 131 additions and 12 deletions

7
concat.sh Executable file
View File

@ -0,0 +1,7 @@
#! /bin/bash
cd vendor/
cat browser-adapter.js crypto-2.0.js crypto-3.1.js jsbn.js jsbn2.js prng4.js util.js rng.js ec.js sec.js ecdsa.js eckey.js > vendor-bundle.js
mv vendor-bundle.js ../
cd ../

5
copay.js Normal file
View File

@ -0,0 +1,5 @@
module.exports.Storage = require('./js/models/Storage');
module.exports.PublicKeyRing = require('./js/models/PublicKeyRing');
module.exports.FakeStorage = require('./test/FakeStorage');

View File

@ -213,12 +213,14 @@
<script src="lib/angular-foundation/mm-foundation.min.js"></script>
<script src="lib/angular-foundation/mm-foundation-tpls.min.js"></script>
<script src="lib/peerjs/peer.js"></script>
<script src="lib/bitcore.js"></script>
<script src="lib/copay.js"></script>
<script src="js/app.js"></script>
<script src="js/config.js"></script>
<script src="js/directives.js"></script>
<script src="js/filters.js"></script>
<script src="js/services/network.js"></script>
<script src="js/services/storage.js"></script>

View File

@ -12,8 +12,6 @@ var Transaction = bitcore.Transaction;
var buffertools = bitcore.buffertools;
var Storage = imports.Storage || require('./Storage');
var log = imports.log || console.log;
var storage = Storage.default();
/*
@ -52,12 +50,12 @@ PublicKeyRing.getRandomId = function () {
};
PublicKeyRing.decrypt = function (passphrase, encPayload) {
log('[wallet.js.35] TODO READ: passphrase IGNORED');
console.log('[wallet.js.35] TODO READ: passphrase IGNORED');
return encPayload;
};
PublicKeyRing.encrypt = function (passphrase, payload) {
log('[wallet.js.92] TODO: passphrase IGNORED');
console.log('[wallet.js.92] TODO: passphrase IGNORED');
return payload;
};
@ -188,7 +186,7 @@ PublicKeyRing.prototype.getCopayersPubKeys = function (index, isChange) {
PublicKeyRing.prototype._checkIndexRange = function (index, isChange) {
if ( (isChange && index > this.changeAddressIndex) ||
(!isChange && index > this.addressIndex)) {
log('Out of bounds at getAddress: Index %d isChange: %d', index, isChange);
console.log('Out of bounds at getAddress: Index %d isChange: %d', index, isChange);
throw new Error('index out of bound');
}
};

View File

@ -6,6 +6,7 @@ angular.module('copay.network')
$rootScope.connectedPeers = [];
$rootScope.connectedTo = [];
$rootScope.peerId = null;
$rootScope.publicKeyRing = [];
// Array helpers
var _arrayDiff = function(a, b) {

View File

@ -19,10 +19,19 @@
},
"homepage": "https://github.com/bitpay/copay",
"devDependencies": {
"grunt-cli": "~0.1.13",
"grunt-contrib-watch": "~0.5.3",
"grunt-mocha-test": "~0.8.2",
"grunt-shell": "~0.6.4",
"grunt-browserify": "~2.0.0",
"grunt-markdown": "~0.5.0",
"karma": "~0.12.1",
"karma-chrome-launcher": "~0.1.2",
"mocha": "~1.18.2",
"karma-mocha": "~0.1.3"
"karma-mocha": "~0.1.3",
"buffertools": "~2.0.1",
"browserify": "~3.32.1",
"browser-pack": "~2.0.1",
"commander": "~2.1.0",
"uglifyify": "~1.2.3"
}
}

28
test/index.html Normal file
View File

@ -0,0 +1,28 @@
<!DOCTYPE html>
<html>
<head>
<title>Mocha</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="../node_modules/mocha/mocha.css" />
</head>
<body>
<div id="mocha"></div>
<script src="../node_modules/mocha/mocha.js"></script>
<script src="../node_modules/chai/chai.js"></script>
<script>mocha.setup('bdd')</script>
<script src="../lib/bitcore.js"></script>
<script src="../lib/copayBundle.js"></script>
<script>
var copay = require('copay');
</script>
<script src="test.PublicKeyRing.js"></script>
<script src="test.Storage.js"></script>
<!--
-->
<script>
mocha.run();
</script>
</body>
</html>

View File

@ -2,11 +2,11 @@
var chai = chai || require('chai');
var should = chai.should();
var bitcore = bitcore || require('../node_modules/bitcore');
var bitcore = bitcore || require('bitcore');
var Address = bitcore.Address;
var buffertools = bitcore.buffertools;
var copay = copay || {};
var fakeStorage = require('./FakeStorage');
var copay = copay || require('../copay');
var fakeStorage = copay.FakeStorage;
var PublicKeyRing = copay.PublicKeyRing || require('soop').load('../js/models/PublicKeyRing', {Storage: fakeStorage});
var aMasterPubKey = 'tprv8ZgxMBicQKsPdSVTiWXEqCCzqRaRr9EAQdn5UVMpT9UHX67Dh1FmzEMbavPumpAicsUm2XvC6NTdcWB89yN5DUWx5HQ7z3KByUg7Ht74VRZ';

View File

@ -2,7 +2,7 @@
var chai = chai || require('chai');
var should = chai.should();
var copay = copay || {};
var copay = copay || require('../copay');
var Storage = copay.Storage || require('../js/models/Storage');
describe('Storage model', function() {

69
util/build.js Executable file
View File

@ -0,0 +1,69 @@
#!/usr/bin/env node
'use strict';
var fs = require('fs');
var browserify = require('browserify');
var browserPack = require('browser-pack');
var exec = require('child_process').exec;
var sys = require('sys');
var puts = function(error, stdout, stderr) {
if (error) console.log(error);
//sys.puts(stdout);
//sys.puts(stderr);
};
var pack = function (params) {
var file = require.resolve('soop');
var dir = file.substr(0, file.length - String('soop.js').length);
var preludePath = dir + 'example/custom_prelude.js';
params.raw = true;
params.sourceMapPrefix = '//#';
params.prelude = fs.readFileSync(preludePath, 'utf8');
params.preludePath = preludePath;
return browserPack(params);
};
var createBundle = function(opts) {
opts.dir = opts.dir || 'js/';
// concat browser vendor files
exec('cd ' + opts.dir + 'browser; sh concat.sh', puts);
var bopts = {
pack: pack,
debug: true,
standalone: 'copay',
insertGlobals: true
};
var b = browserify(bopts);
b.require('./copay', {
expose: 'copay'
});
if (!opts.dontminify) {
b.transform({
global: true
}, 'uglifyify');
}
var bundle = b.bundle();
return bundle;
};
if (require.main === module) {
var list = function(val) {
return val.split(',');
};
var program = require('commander');
program
.version('0.0.1')
.option('-d, --dontminify', 'Don\'t minify the code.')
.option('-o, --stdout', 'Specify output as stdout')
.parse(process.argv);
var copayBundle = createBundle(program);
copayBundle.pipe(program.stdout ? process.stdout : fs.createWriteStream('lib/copayBundle.js'));
}
module.exports.createBundle = createBundle;