1+ const HtlcWrapperErc20 = require ( '../../wrapper/htlc-wrapper-erc20' )
2+
3+ const { assertEqualBN} = require ( '../helper/assert' )
4+ const {
5+ htlcERC20ArrayToObj,
6+ isSha256Hash,
7+ newSecretHashPair,
8+ nowSeconds,
9+ txLoggedArgs,
10+ } = require ( '../helper/utils' )
11+
12+ const HashedTimelockERC20 = artifacts . require ( './HashedTimelockERC20.sol' )
13+ const AliceERC20 = artifacts . require ( './helper/AliceERC20.sol' )
14+
15+ // some testing data
16+ const hourSeconds = 3600
17+ const timeLock1Hour = nowSeconds ( ) + hourSeconds
18+ const tokenAmount = 5
19+
20+ contract ( 'HashedTimelockErc20Wrapper' , accounts => {
21+ const sender = accounts [ 1 ]
22+ const receiver = accounts [ 2 ]
23+ const tokenSupply = 1000
24+ const senderInitialBalance = 100
25+ const provider = new web3 . providers . HttpProvider ( "http://localhost:7545" ) ;
26+
27+ let htlcWrapper
28+ let token
29+
30+ const assertTokenBal = async ( addr , tokenAmount , msg ) =>
31+ assertEqualBN (
32+ await token . balanceOf . call ( addr ) ,
33+ tokenAmount ,
34+ msg ? msg : 'wrong token balance'
35+ )
36+
37+ before ( async ( ) => {
38+ htlcWrapper = new HtlcWrapperErc20 ( HashedTimelockERC20 , provider , null ) ;
39+ let address = await HashedTimelockERC20 . new ( )
40+ htlcWrapper . setAddress ( address . address )
41+ token = await AliceERC20 . new ( tokenSupply )
42+ await token . transfer ( sender , senderInitialBalance )
43+ await assertTokenBal (
44+ sender ,
45+ senderInitialBalance ,
46+ 'balance not transferred in before()'
47+ )
48+ } )
49+
50+ it ( 'newContract() in wrapper should create new contract and store correct details' , async ( ) => {
51+ const hashPair = newSecretHashPair ( )
52+ await token . approve ( htlcWrapper . address , tokenAmount , { from : sender } )
53+ const newContractTx = await htlcWrapper . newContract (
54+ receiver ,
55+ hashPair . hash ,
56+ timeLock1Hour ,
57+ token . address ,
58+ tokenAmount ,
59+ sender
60+ )
61+
62+ // check token balances
63+ assertTokenBal ( sender , senderInitialBalance - tokenAmount )
64+ assertTokenBal ( htlcWrapper . address , tokenAmount )
65+
66+ // check event logs
67+ const logArgs = txLoggedArgs ( newContractTx )
68+
69+ const contractId = logArgs . contractId
70+ assert ( isSha256Hash ( contractId ) )
71+
72+ assert . equal ( logArgs . sender , sender )
73+ assert . equal ( logArgs . receiver , receiver )
74+ assert . equal ( logArgs . tokenContract , token . address )
75+ assert . equal ( logArgs . amount . toNumber ( ) , tokenAmount )
76+ assert . equal ( logArgs . hashlock , hashPair . hash )
77+ assert . equal ( logArgs . timelock , timeLock1Hour )
78+
79+ // check htlc record
80+ const contractArr = await htlcWrapper . getContract ( contractId )
81+ const contract = htlcERC20ArrayToObj ( contractArr )
82+ assert . equal ( contract . sender , sender )
83+ assert . equal ( contract . receiver , receiver )
84+ assert . equal ( contract . token , token . address )
85+ assert . equal ( contract . amount . toNumber ( ) , tokenAmount )
86+ assert . equal ( contract . hashlock , hashPair . hash )
87+ assert . equal ( contract . timelock . toNumber ( ) , timeLock1Hour )
88+ assert . isFalse ( contract . withdrawn )
89+ assert . isFalse ( contract . refunded )
90+ assert . equal (
91+ contract . preimage ,
92+ '0x0000000000000000000000000000000000000000000000000000000000000000'
93+ )
94+ } )
95+ } )
0 commit comments