bitcore/test/test.Address.js

84 lines
3.1 KiB
JavaScript
Raw Normal View History

2014-02-04 11:02:09 -08:00
'use strict';
var chai = chai || require('chai');
var bitcore = bitcore || require('../bitcore');
2014-02-04 11:02:09 -08:00
var should = chai.should();
2014-02-05 12:00:08 -08:00
var AddressModule = bitcore.Address;
var Address;
2014-02-04 11:02:09 -08:00
2014-02-05 13:14:00 -08:00
describe('Address', function() {
2014-02-04 11:02:09 -08:00
it('should initialze the main object', function() {
2014-02-05 12:00:08 -08:00
should.exist(AddressModule);
2014-02-04 11:02:09 -08:00
});
2014-02-05 12:00:08 -08:00
it('should be able to create class', function() {
Address = AddressModule;
2014-02-05 13:14:00 -08:00
should.exist(Address);
2014-02-04 11:02:09 -08:00
});
2014-02-06 07:57:47 -08:00
it('should be able to create instance', function() {
2014-02-05 13:14:00 -08:00
var a = new Address('1KfyjCgBSMsLqiCbakfSdeoBUqMqLUiu3T');
should.exist(a);
});
var data = [
['1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa', true],
['11111111111111111111111111122222234', false], // totally invalid
['32QBdjycLwbDTuGafUwaU5p5GxzSLPYoF6', true],
['1Q1pE5vPGEEMqRcVRMbtBK842Y6Pzo6nK9', true],
['1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62i', true],
['1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW600', false], // bad checksum
['1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW620', false], // bad checksum
['1ANNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62i', false], // data changed, original checksum.
['1A Na15ZQXAZUgFiqJ2i7Z2DPU2J6hW62i', false], // invalid chars
['1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62j', false], // checksums don't match.
['1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62!', false], // bad char (!)
['1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62iz', false], // too long Bitcoin address
['1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62izz', false],// too long Bitcoin address
['2cFupjhnEsSn59qHXstmK2ffpLv2', false], // valid base58 invalid data
];
data.forEach(function(datum) {
var address = datum[0];
var result = datum[1];
it('should validate correctly ' + address, function() {
var a = new Address(address);
var s = a.toString();
a.isValid().should.equal(result);
s.should.equal(a.toString()); // check that validation doesn't change data
});
2014-02-04 11:02:09 -08:00
});
2014-03-15 14:39:51 -07:00
it('should be able to detect network from an address', function() {
2014-03-19 12:20:41 -07:00
// livenet
2014-03-15 14:39:51 -07:00
var a = new Address('1KfyjCgBSMsLqiCbakfSdeoBUqMqLUiu3T');
a.network().name.should.equal('livenet');
2014-03-19 12:20:41 -07:00
a = new Address('1dice8EMZmqKvrGE4Qc9bUFf9PX3xaYDp');
2014-03-15 14:39:51 -07:00
a.network().name.should.equal('livenet');
//p2sh
2014-03-19 12:20:41 -07:00
a = new Address('3QRhucKtEn5P9i7YPxzXCqBtPJTPbRFycn');
2014-03-15 14:39:51 -07:00
a.network().name.should.equal('livenet');
//testnet
2014-03-19 12:20:41 -07:00
a = new Address('mrPnbY1yKDBsdgbHbS7kJ8GVm8F66hWHLE');
2014-03-15 14:39:51 -07:00
a.network().name.should.equal('testnet');
2014-03-19 12:20:41 -07:00
a = new Address('n2ekxibY5keRiMaoKFGfiNfXQCS4zTUpct');
2014-03-15 14:39:51 -07:00
a.network().name.should.equal('testnet');
//p2sh
2014-03-19 12:20:41 -07:00
a = new Address('2NBSBcf2KfjPEEqVusmrWdmUeNHRiUTS3Li');
2014-03-15 14:39:51 -07:00
a.network().name.should.equal('testnet');
});
2014-03-19 12:20:41 -07:00
it('#isScript should work', function() {
// invalid
new Address('1T').isScript().should.equal(false);
// pubKeyHash livenet
new Address('1KfyjCgBSMsLqiCbakfSdeoBUqMqLUiu3T').isScript().should.equal(false);
// script livenet
new Address('3QRhucKtEn5P9i7YPxzXCqBtPJTPbRFycn').isScript().should.equal(true);
// pubKeyHash testnet
new Address('mrPnbY1yKDBsdgbHbS7kJ8GVm8F66hWHLE').isScript().should.equal(false);
// script testnet
new Address('2NBSBcf2KfjPEEqVusmrWdmUeNHRiUTS3Li').isScript().should.equal(true);
});
2014-03-15 14:39:51 -07:00
2014-02-04 11:02:09 -08:00
});