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