@@ -895,6 +895,79 @@ describe('DOT:', function () {
895895 } ) ;
896896 assert . strictEqual ( result , true ) ;
897897 } ) ;
898+
899+ const wasmTransferKeepAliveHex =
900+ '0xa80a0300161b969b6b53ef81225feea3882284c778cd4a406d23215fcf492e83f75d42960b00204aa9d101eb600400000065900f001000000067f9723393ef76214df0118c34bbbd3dbebc8ed46a10973a8c969d48fe7598c9a7b7420ee3e4fe2b88da0fc42b30897e18d56d8b56a1934211d9de730cf96de300' ;
901+ const wasmTransferAllHex =
902+ '0x900a04009f7b0675db59d19b4bd9c8c72eaabba75a9863d02b30115b8b3c3ca5c20f025401d50121030000009d880f001000000067f9723393ef76214df0118c34bbbd3dbebc8ed46a10973a8c969d48fe7598c9149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d00' ;
903+
904+ it ( 'should accept a valid WASM-built payment (tdot)' , async function ( ) {
905+ const txParams = {
906+ recipients : [ { amount : '2000000000000' , address : '5CZh773vKGwKFCYUjGc31AwXCbf7TPkavdeuk2XoujJMjbBD' } ] ,
907+ } ;
908+ const result = await basecoin . verifyTransaction ( { txPrebuild : { txHex : wasmTransferKeepAliveHex } , txParams } ) ;
909+ assert . strictEqual ( result , true ) ;
910+ } ) ;
911+
912+ it ( 'should reject WASM-built payment with wrong amount (tdot)' , async function ( ) {
913+ const txParams = {
914+ recipients : [ { amount : '9999' , address : '5CZh773vKGwKFCYUjGc31AwXCbf7TPkavdeuk2XoujJMjbBD' } ] ,
915+ } ;
916+ await basecoin
917+ . verifyTransaction ( { txPrebuild : { txHex : wasmTransferKeepAliveHex } , txParams } )
918+ . should . be . rejectedWith ( / d o e s n o t m a t c h t r a n s a c t i o n a m o u n t / ) ;
919+ } ) ;
920+
921+ it ( 'should reject WASM-built payment with wrong recipient (tdot)' , async function ( ) {
922+ const txParams = {
923+ recipients : [ { amount : '2000000000000' , address : '5DxD9nT16GQLrU6aB5pSS5VtxoZbVju3NHUCcawxZyZCTf74' } ] ,
924+ } ;
925+ await basecoin
926+ . verifyTransaction ( { txPrebuild : { txHex : wasmTransferKeepAliveHex } , txParams } )
927+ . should . be . rejectedWith ( / d o e s n o t m a t c h t r a n s a c t i o n d e s t i n a t i o n a d d r e s s / ) ;
928+ } ) ;
929+
930+ it ( 'should verify WASM-built transferAll consolidation (tdot)' , async function ( ) {
931+ const mockedWallet = {
932+ coinSpecific : ( ) => ( { baseAddress : '5Ffp1wJCPu4hzVDTo7XaMLqZSvSadyUQmxWPDw74CBjECSoq' } ) ,
933+ } ;
934+ const result = await basecoin . verifyTransaction ( {
935+ txPrebuild : { txHex : wasmTransferAllHex } ,
936+ txParams : { } ,
937+ wallet : mockedWallet as any ,
938+ verification : { consolidationToBaseAddress : true } ,
939+ } ) ;
940+ assert . strictEqual ( result , true ) ;
941+ } ) ;
942+
943+ it ( 'should verify WASM-built transferAll with recipients skips amount check (tdot)' , async function ( ) {
944+ const mockedWallet = {
945+ coinSpecific : ( ) => ( { baseAddress : '5Ffp1wJCPu4hzVDTo7XaMLqZSvSadyUQmxWPDw74CBjECSoq' } ) ,
946+ } ;
947+ const txParams = {
948+ recipients : [ { address : '5Ffp1wJCPu4hzVDTo7XaMLqZSvSadyUQmxWPDw74CBjECSoq' , amount : '999999' } ] ,
949+ } ;
950+ const result = await basecoin . verifyTransaction ( {
951+ txPrebuild : { txHex : wasmTransferAllHex } ,
952+ txParams,
953+ wallet : mockedWallet as any ,
954+ verification : { consolidationToBaseAddress : true } ,
955+ } ) ;
956+ assert . strictEqual ( result , true ) ;
957+ } ) ;
958+
959+ it ( 'should decode wasm-built signing payload with legacy TransactionBuilderFactory' , async function ( ) {
960+ const { TransactionBuilderFactory } = await import ( '../../src/lib' ) ;
961+ const factory = new TransactionBuilderFactory ( coins . get ( 'tdot' ) ) ;
962+ const txBuilder = factory . from ( wasmTransferKeepAliveHex ) ;
963+ txBuilder . sender ( { address : '5EGoFA95omzemRssELLDjVenNZ68aXyUeqtKQScXSEBvVJkr' } ) ;
964+ txBuilder . validity ( { firstValid : 1000 } ) ;
965+ txBuilder . referenceBlock ( '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d' ) ;
966+ const tx = await txBuilder . build ( ) ;
967+ const json = tx . toJson ( ) ;
968+ assert . strictEqual ( ( json as any ) . to , '5CZh773vKGwKFCYUjGc31AwXCbf7TPkavdeuk2XoujJMjbBD' ) ;
969+ assert . strictEqual ( ( json as any ) . amount , '2000000000000' ) ;
970+ } ) ;
898971 } ) ;
899972
900973 describe ( 'isWalletAddress' , ( ) => {
0 commit comments