'use strict'; var should = require('chai').should(); var bitcore = require('..'); var PublicKey = bitcore.PublicKey; var Address = bitcore.Address; var Script = bitcore.Script; var networks = bitcore.Networks; describe('Address', function() { var pubkeyhash = new Buffer('3c3fa3d4adcaf8f52d5b1843975e122548269937', 'hex'); var buf = Buffer.concat([new Buffer([0]), pubkeyhash]); var str = '16VZnHwRhwrExfeHFHGjwrgEMq8VcYPs9r'; var strTest = 'n28S35tqEMbt6vNad7A5K3mZ7vdn8dZ86X'; it('should throw an error because of missing data', function() { (function() { var a = new Address(); }).should.throw('First argument is required, please include address data.'); }); it('should throw an error because of bad network param', function() { (function(){ var a = new Address(validAddresses[0], 'main', 'pubkeyhash'); }).should.throw('Second argument must be "livenet" or "testnet".'); }); it('should throw an error because of bad type param', function() { (function() { var a = new Address(validAddresses[0], 'livenet', 'pubkey'); }).should.throw('Third argument must be "pubkeyhash" or "scripthash"'); }); // livenet valid var validAddresses = [ '15vkcKf7gB23wLAnZLmbVuMiiVDc1Nm4a2', '1A6ut1tWnUq1SEQLMr4ttDh24wcbJ5o9TT', '1BpbpfLdY7oBS9gK7aDXgvMgr1DPvNhEB2', '1Jz2yCRd5ST1p2gUqFB5wsSQfdm3jaFfg7' ]; // livenet p2sh var validp2shAddresses = [ '342ftSRCvFHfCeFFBuz4xwbeqnDw6BGUey', '33vt8ViH5jsr115AGkW6cEmEz9MpvJSwDk', '37Sp6Rv3y4kVd1nQ1JV5pfqXccHNyZm1x3', '3QjYXhTkvuj8qPaXHTTWb5wjXhdsLAAWVy' ]; // testnet p2sh var testValidp2shAddresses = [ '2N7FuwuUuoTBrDFdrAZ9KxBmtqMLxce9i1C', '2NEWDzHWwY5ZZp8CQWbB7ouNMLqCia6YRda', '2MxgPqX1iThW3oZVk9KoFcE5M4JpiETssVN', '2NB72XtkjpnATMggui83aEtPawyyKvnbX2o' ]; //livenet bad checksums var badChecksums = [ '15vkcKf7gB23wLAnZLmbVuMiiVDc3nq4a2', '1A6ut1tWnUq1SEQLMr4ttDh24wcbj4w2TT', '1BpbpfLdY7oBS9gK7aDXgvMgr1DpvNH3B2', '1Jz2yCRd5ST1p2gUqFB5wsSQfdmEJaffg7' ]; //livenet non-base58 var nonBase58 = [ '15vkcKf7g#23wLAnZLmb$uMiiVDc3nq4a2', '1A601ttWnUq1SEQLMr4ttDh24wcbj4w2TT', '1BpbpfLdY7oBS9gK7aIXgvMgr1DpvNH3B2', '1Jz2yCRdOST1p2gUqFB5wsSQfdmEJaffg7' ]; //testnet valid var testValidAddresses = [ 'n28S35tqEMbt6vNad7A5K3mZ7vdn8dZ86X', 'n45x3R2w2jaSC62BMa9MeJCd3TXxgvDEmm', 'mursDVxqNQmmwWHACpM9VHwVVSfTddGsEM', 'mtX8nPZZdJ8d3QNLRJ1oJTiEi26Sj6LQXS' ]; describe('validation', function() { it('should describe this livenet address as an invalid testnet address', function() { var error = Address.getValidationError('37BahqRsFrAd3qLiNNwLNV3AWMRD7itxTo', 'testnet'); should.exist(error); }); it('should should return a true boolean', function(){ var valid = Address.isValid('37BahqRsFrAd3qLiNNwLNV3AWMRD7itxTo', 'livenet'); valid.should.equal(true); }); it('should should return a false boolean', function(){ var valid = Address.isValid('37BahqRsFrAd3qLiNNwLNV3AWMRD7itxTo', 'testnet'); valid.should.equal(false); }); it('should validate addresses', function() { for(var i=0;i