@@ -7,6 +7,8 @@ var bitcorenode = require('../../../');
77var AddressService = bitcorenode . services . Address ;
88var blockData = require ( '../../data/livenet-345003.json' ) ;
99var bitcore = require ( 'bitcore' ) ;
10+ var Script = bitcore . Script ;
11+ var Address = bitcore . Address ;
1012var Networks = bitcore . Networks ;
1113var EventEmitter = require ( 'events' ) . EventEmitter ;
1214var errors = bitcorenode . errors ;
@@ -106,6 +108,40 @@ describe('Address Service', function() {
106108 } ) ;
107109 } ) ;
108110
111+ describe ( '#_extractAddressInfoFromScript' , function ( ) {
112+ var am ;
113+ before ( function ( ) {
114+ am = new AddressService ( { node : mocknode } ) ;
115+ am . node . network = Networks . livenet ;
116+ } ) ;
117+ it ( 'pay-to-publickey' , function ( ) {
118+ var pubkey = new bitcore . PublicKey ( '022df8750480ad5b26950b25c7ba79d3e37d75f640f8e5d9bcd5b150a0f85014da' ) ;
119+ var script = Script . buildPublicKeyOut ( pubkey ) ;
120+ var info = am . _extractAddressInfoFromScript ( script ) ;
121+ info . addressType . should . equal ( Address . PayToPublicKeyHash ) ;
122+ info . hashBuffer . toString ( 'hex' ) . should . equal ( '9674af7395592ec5d91573aa8d6557de55f60147' ) ;
123+ } ) ;
124+ it ( 'pay-to-publickeyhash' , function ( ) {
125+ var script = Script ( 'OP_DUP OP_HASH160 20 0x0000000000000000000000000000000000000000 OP_EQUALVERIFY OP_CHECKSIG' ) ;
126+ var info = am . _extractAddressInfoFromScript ( script ) ;
127+ info . addressType . should . equal ( Address . PayToPublicKeyHash ) ;
128+ info . hashBuffer . toString ( 'hex' ) . should . equal ( '0000000000000000000000000000000000000000' ) ;
129+ } ) ;
130+ it ( 'pay-to-scripthash' , function ( ) {
131+ var script = Script ( 'OP_HASH160 20 0x0000000000000000000000000000000000000000 OP_EQUAL' ) ;
132+ var info = am . _extractAddressInfoFromScript ( script ) ;
133+ info . addressType . should . equal ( Address . PayToScriptHash ) ;
134+ info . hashBuffer . toString ( 'hex' ) . should . equal ( '0000000000000000000000000000000000000000' ) ;
135+ } ) ;
136+ it ( 'non-address script type' , function ( ) {
137+ var buf = new Buffer ( 40 ) ;
138+ buf . fill ( 0 ) ;
139+ var script = Script ( 'OP_RETURN 40 0x' + buf . toString ( 'hex' ) ) ;
140+ var info = am . _extractAddressInfoFromScript ( script ) ;
141+ info . should . equal ( false ) ;
142+ } ) ;
143+ } ) ;
144+
109145 describe ( '#blockHandler' , function ( ) {
110146 var am ;
111147 var testBlock = bitcore . Block . fromString ( blockData ) ;
0 commit comments