From 7d8dd860d1208ed715579a1ec4364d9f9d7aa4b2 Mon Sep 17 00:00:00 2001 From: Daniel Cousens Date: Tue, 1 Jan 2019 11:30:20 +1100 Subject: [PATCH] testing: use NODE_ENV instead of mocha constants --- package.json | 2 +- test/integration/addresses.js | 23 ++++++++++------------- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index 755be28..c9ab813 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "coverage-report": "nyc report --reporter=lcov", "coverage-html": "nyc report --reporter=html", "coverage": "nyc --check-coverage --branches 90 --functions 90 mocha", - "integration": "mocha --timeout 50000 test/integration/", + "integration": "NODE_ENV=TESTING-BITCOINJS mocha --timeout 50000 test/integration/", "standard": "standard", "test": "npm run standard && npm run coverage", "unit": "mocha" diff --git a/test/integration/addresses.js b/test/integration/addresses.js index 76c0330..9a70172 100644 --- a/test/integration/addresses.js +++ b/test/integration/addresses.js @@ -14,20 +14,17 @@ const LITECOIN = { wif: 0xb0 } -// deterministic RNG for testing only -function rng (c) { - if (describe === undefined || it === undefined) { - console.error('DO NOT USE THIS rng FUNCTION OUTSIDE OF AUTOMATED TESTING!') - const randomBytes = require('randombytes') - return randomBytes(c) - } +// deterministic random number generator for TESTING ONLY +// WARNING: DO NOT USE THIS - IT IS NOT RANDOM - it produces the same private key every time for the purposes of testing. +function unsafeDeterministicRng (c) { + if (process.env.NODE_ENV !== 'TESTING-BITCOINJS') throw new Error('DO NOT USE THIS FUNCTION - IT IS NOT RANDOM - IT IS FOR TESTING ONLY - IT PRODUCES THE SAME PRIVATE KEY EVERY TIME') return Buffer.from('zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz') } describe('bitcoinjs-lib (addresses)', function () { it('can generate a random address', function () { - // in production: const keyPair = bitcoin.ECPair.makeRandom({}) - const keyPair = bitcoin.ECPair.makeRandom({ rng: rng }) + // const keyPair = bitcoin.ECPair.makeRandom() + const keyPair = bitcoin.ECPair.makeRandom({ rng: unsafeDeterministicRng }) const { address } = bitcoin.payments.p2pkh({ pubkey: keyPair.publicKey }) assert.strictEqual(address, '1F5VhMHukdnUES9kfXqzPzMeF1GPHKiF64') @@ -118,8 +115,8 @@ describe('bitcoinjs-lib (addresses)', function () { // other networks it('can generate a Testnet address', function () { const testnet = bitcoin.networks.testnet - // in production: const keyPair = bitcoin.ECPair.makeRandom({ network: testnet }) - const keyPair = bitcoin.ECPair.makeRandom({ network: testnet, rng: rng }) + // const keyPair = bitcoin.ECPair.makeRandom({ network: testnet }) + const keyPair = bitcoin.ECPair.makeRandom({ network: testnet, rng: unsafeDeterministicRng }) const wif = keyPair.toWIF() const { address } = bitcoin.payments.p2pkh({ pubkey: keyPair.publicKey, network: testnet }) @@ -128,8 +125,8 @@ describe('bitcoinjs-lib (addresses)', function () { }) it('can generate a Litecoin address', function () { - // in production: const keyPair = bitcoin.ECPair.makeRandom({ network: LITECOIN }) - const keyPair = bitcoin.ECPair.makeRandom({ network: LITECOIN, rng: rng }) + // const keyPair = bitcoin.ECPair.makeRandom({ network: LITECOIN }) + const keyPair = bitcoin.ECPair.makeRandom({ network: LITECOIN, rng: unsafeDeterministicRng }) const wif = keyPair.toWIF() const { address } = bitcoin.payments.p2pkh({ pubkey: keyPair.publicKey, network: LITECOIN })