Parsing BTC testnet address.

This commit is contained in:
Brendon Duncan 2018-08-23 14:27:03 +12:00
commit 1da9a79296
2 changed files with 31 additions and 0 deletions

View file

@ -34,9 +34,13 @@
"req-param0": "",
"req-param1": ""
},
testnet: false,
url: ''
}
// Need to do testnet, and copay too
*/
// bitcoincash:?r=https://bitpay.com/i/GLRoZMZxaWBqLqpoXexzoD
function parse(uri) {
@ -146,10 +150,17 @@
// Just a rough validation to exclude half-pasted addresses, or things obviously not bitcoin addresses
var cashAddrRe = /^((?:q|p)[a-z0-9]{41})|((?:Q|P)[A-Z0-9]{41})$/;
var legacyRe = /^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$/;
var legacyTestnetRe = /^[mn][a-km-zA-HJ-NP-Z1-9]{25,34}$/;
if (legacyRe.test(address)) {
parsed.address = address;
parsed.legacyAddress = address;
parsed.testnet = false;
} else if (legacyTestnetRe.test(address)) {
parsed.address = address;
parsed.legacyAddress = address;
parsed.testnet = true;
} else if (cashAddrRe.test(address)) {
var cashAddr = 'bitcoincash:' + address.toLowerCase();
@ -159,6 +170,8 @@
var bchAddresses = bitcoinCashJsService.readAddress(cashAddr);
parsed.legacyAddress = bchAddresses['legacy'];
parsed.testnet = false;
} // TODO: Check for private key

View file

@ -10,6 +10,21 @@ fdescribe('bitcoinUriService', function() {
});
});
it('Bitcoin testnet address', function() {
var parsed = bitcoinUriService.parse('mtWcoToWhbtPoCby5fvs8xdBujT5GGenD4');
expect(parsed.isValid).toBe(true);
expect(parsed.address).toBe('mtWcoToWhbtPoCby5fvs8xdBujT5GGenD4');
expect(parsed.coin).toBeUndefined();
expect(parsed.legacyAddress).toBe('mtWcoToWhbtPoCby5fvs8xdBujT5GGenD4');
expect(parsed.testnet).toBe(true);
});
it('legacy address', function() {
var parsed = bitcoinUriService.parse('1JXeGEu7bNEAYu6URT6dU6g1Ys6ffSAWYW');
@ -18,6 +33,7 @@ fdescribe('bitcoinUriService', function() {
expect(parsed.address).toBe('1JXeGEu7bNEAYu6URT6dU6g1Ys6ffSAWYW');
expect(parsed.coin).toBeUndefined();
expect(parsed.legacyAddress).toBe('1JXeGEu7bNEAYu6URT6dU6g1Ys6ffSAWYW');
expect(parsed.testnet).toBe(false);
});
it('cashAddr with prefix', function() {
@ -28,6 +44,7 @@ fdescribe('bitcoinUriService', function() {
expect(parsed.address).toBe('bitcoincash:qrq9p82a247lecv08ldk5p5h6ahtnjzpqcnh8yhq92');
expect(parsed.coin).toBe('bch');
expect(parsed.legacyAddress).toBe('1JXsK3HSFqoMnwh4Mevf5bTgqPcgNWX7ic');
expect(parsed.testnet).toBe(false);
});
it('cashAddr without prefix', function() {
@ -38,5 +55,6 @@ fdescribe('bitcoinUriService', function() {
expect(parsed.address).toBe('bitcoincash:qqen2y3l28dpk0dzsag8w027ds96u7z4pc0uxtl0nq');
expect(parsed.coin).toBe('bch');
expect(parsed.legacyAddress).toBe('15fm3EwqgBYcxkndALBfforueps5yWKReJ');
expect(parsed.testnet).toBe(false);
});
});