@@ -12,6 +12,9 @@ import (
12
12
13
13
"github.com/Layr-Labs/eigenlayer-cli/pkg/internal/common/flags"
14
14
"github.com/Layr-Labs/eigenlayer-cli/pkg/internal/testutils"
15
+ "github.com/Layr-Labs/eigenlayer-cli/pkg/utils"
16
+
17
+ "github.com/Layr-Labs/eigenlayer-rewards-proofs/pkg/distribution"
15
18
16
19
rewardscoordinator "github.com/Layr-Labs/eigensdk-go/contracts/bindings/IRewardsCoordinator"
17
20
"github.com/Layr-Labs/eigensdk-go/logging"
@@ -21,6 +24,7 @@ import (
21
24
22
25
"github.com/stretchr/testify/assert"
23
26
"github.com/urfave/cli/v2"
27
+ "github.com/wk8/go-ordered-map/v2"
24
28
)
25
29
26
30
type fakeELReader struct {
@@ -114,6 +118,48 @@ func TestReadAndValidateConfig_NoRecipientProvided(t *testing.T) {
114
118
assert .Equal (t , common .HexToAddress (earnerAddress ), config .RecipientAddress )
115
119
}
116
120
121
+ func TestReadAndValidateConfig_NoTokenAddressesProvided (t * testing.T ) {
122
+ earnerAddress := testutils .GenerateRandomEthereumAddressString ()
123
+ recipientAddress := testutils .GenerateRandomEthereumAddressString ()
124
+ fs := flag .NewFlagSet ("test" , flag .ContinueOnError )
125
+ fs .String (flags .ETHRpcUrlFlag .Name , "rpc" , "" )
126
+ fs .String (EarnerAddressFlag .Name , earnerAddress , "" )
127
+ fs .String (RecipientAddressFlag .Name , recipientAddress , "" )
128
+ fs .String (RewardsCoordinatorAddressFlag .Name , "0x1234" , "" )
129
+ fs .String (TokenAddressesFlag .Name , "" , "" )
130
+ fs .String (ClaimTimestampFlag .Name , "latest" , "" )
131
+ fs .String (ProofStoreBaseURLFlag .Name , "dummy-url" , "" )
132
+ cliCtx := cli .NewContext (nil , fs , nil )
133
+
134
+ logger := logging .NewJsonSLogger (os .Stdout , & logging.SLoggerOptions {})
135
+
136
+ config , err := readAndValidateClaimConfig (cliCtx , logger )
137
+
138
+ assert .NoError (t , err )
139
+ assert .ElementsMatch (t , config .TokenAddresses , []common.Address {})
140
+ }
141
+
142
+ func TestReadAndValidateConfig_ZeroTokenAddressesProvided (t * testing.T ) {
143
+ earnerAddress := testutils .GenerateRandomEthereumAddressString ()
144
+ recipientAddress := testutils .GenerateRandomEthereumAddressString ()
145
+ fs := flag .NewFlagSet ("test" , flag .ContinueOnError )
146
+ fs .String (flags .ETHRpcUrlFlag .Name , "rpc" , "" )
147
+ fs .String (EarnerAddressFlag .Name , earnerAddress , "" )
148
+ fs .String (RecipientAddressFlag .Name , recipientAddress , "" )
149
+ fs .String (RewardsCoordinatorAddressFlag .Name , "0x1234" , "" )
150
+ fs .String (TokenAddressesFlag .Name , utils .ZeroAddress .String (), "" )
151
+ fs .String (ClaimTimestampFlag .Name , "latest" , "" )
152
+ fs .String (ProofStoreBaseURLFlag .Name , "dummy-url" , "" )
153
+ cliCtx := cli .NewContext (nil , fs , nil )
154
+
155
+ logger := logging .NewJsonSLogger (os .Stdout , & logging.SLoggerOptions {})
156
+
157
+ config , err := readAndValidateClaimConfig (cliCtx , logger )
158
+
159
+ assert .NoError (t , err )
160
+ assert .ElementsMatch (t , config .TokenAddresses , []common.Address {})
161
+ }
162
+
117
163
func TestReadAndValidateConfig_RecipientProvided (t * testing.T ) {
118
164
earnerAddress := testutils .GenerateRandomEthereumAddressString ()
119
165
recipientAddress := testutils .GenerateRandomEthereumAddressString ()
@@ -222,3 +268,64 @@ func TestGetClaimDistributionRoot(t *testing.T) {
222
268
})
223
269
}
224
270
}
271
+
272
+ func TestGetTokensToClaim (t * testing.T ) {
273
+ // Set up a mock claimableTokens map
274
+ claimableTokens := orderedmap .New [common.Address , * distribution.BigInt ]()
275
+ addr1 := common .HexToAddress (testutils .GenerateRandomEthereumAddressString ())
276
+ addr2 := common .HexToAddress (testutils .GenerateRandomEthereumAddressString ())
277
+ addr3 := common .HexToAddress (testutils .GenerateRandomEthereumAddressString ())
278
+
279
+ claimableTokens .Set (addr1 , newBigInt (100 ))
280
+ claimableTokens .Set (addr2 , newBigInt (200 ))
281
+
282
+ // Case 1: No token addresses provided, should return all addresses in claimableTokens
283
+ result := getTokensToClaim (claimableTokens , []common.Address {})
284
+ expected := []common.Address {addr1 , addr2 }
285
+ assert .ElementsMatch (t , result , expected )
286
+
287
+ // Case 2: Provided token addresses, should return only those present in claimableTokens
288
+ result = getTokensToClaim (claimableTokens , []common.Address {addr2 , addr3 })
289
+ expected = []common.Address {addr2 }
290
+ assert .ElementsMatch (t , result , expected )
291
+ }
292
+
293
+ func TestGetTokenAddresses (t * testing.T ) {
294
+ // Set up a mock addresses map
295
+ addressesMap := orderedmap .New [common.Address , * distribution.BigInt ]()
296
+ addr1 := common .HexToAddress (testutils .GenerateRandomEthereumAddressString ())
297
+ addr2 := common .HexToAddress (testutils .GenerateRandomEthereumAddressString ())
298
+
299
+ addressesMap .Set (addr1 , newBigInt (100 ))
300
+ addressesMap .Set (addr2 , newBigInt (200 ))
301
+
302
+ // Test that the function returns all addresses in the map
303
+ result := getAllClaimableTokenAddresses (addressesMap )
304
+ expected := []common.Address {addr1 , addr2 }
305
+ assert .ElementsMatch (t , result , expected )
306
+ }
307
+
308
+ func TestFilterClaimableTokenAddresses (t * testing.T ) {
309
+ // Set up a mock addresses map
310
+ addressesMap := orderedmap .New [common.Address , * distribution.BigInt ]()
311
+ addr1 := common .HexToAddress (testutils .GenerateRandomEthereumAddressString ())
312
+ addr2 := common .HexToAddress (testutils .GenerateRandomEthereumAddressString ())
313
+
314
+ addressesMap .Set (addr1 , newBigInt (100 ))
315
+ addressesMap .Set (addr2 , newBigInt (200 ))
316
+
317
+ // Test filtering with provided addresses
318
+ newMissingAddress := common .HexToAddress (testutils .GenerateRandomEthereumAddressString ())
319
+ providedAddresses := []common.Address {
320
+ addr1 ,
321
+ newMissingAddress ,
322
+ }
323
+
324
+ result := filterClaimableTokenAddresses (addressesMap , providedAddresses )
325
+ expected := []common.Address {addr1 }
326
+ assert .ElementsMatch (t , result , expected )
327
+ }
328
+
329
+ func newBigInt (value int64 ) * distribution.BigInt {
330
+ return & distribution.BigInt {Int : big .NewInt (value )}
331
+ }
0 commit comments