Skip to content

Commit

Permalink
Add original arkeo test + tc test
Browse files Browse the repository at this point in the history
  • Loading branch information
toshiSat committed Mar 21, 2024
1 parent c51690b commit 981cbd1
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 25 deletions.
11 changes: 1 addition & 10 deletions x/claim/keeper/msg_server_claim_arkeo.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/pkg/errors"
"io"
"log"
"net/http"
"strings"
)
Expand All @@ -23,15 +22,13 @@ type ThorTxData struct {
}

func (k msgServer) ClaimArkeo(goCtx context.Context, msg *types.MsgClaimArkeo) (*types.MsgClaimArkeoResponse, error) {
log.Println("WHAT")
ctx := sdk.UnwrapSDKContext(goCtx)
arkeoClaimRecord, err := k.GetClaimRecord(ctx, msg.Creator.String(), types.ARKEO)
if err != nil {
return nil, errors.Wrapf(err, "failed to get claim record for %s", msg.Creator)
}

if msg.ThorTx != "" {
log.Println("Thor Tx: ", msg.ThorTx)
url := fmt.Sprintf("https://thornode.ninerealms.com/thorchain/tx/%s", msg.ThorTx)

resp, err := http.Get(url)
Expand Down Expand Up @@ -97,14 +94,8 @@ func (k msgServer) ClaimArkeo(goCtx context.Context, msg *types.MsgClaimArkeo) (
}
k.SetClaimRecord(ctx, emptyClaimRecord)
k.SetClaimRecord(ctx, combinedClaimRecord)

thorClaimRecord, _ = k.GetClaimRecord(ctx, thorDerivedArkeoAddress, types.ARKEO)
arkeoClaimRecord, err = k.GetClaimRecord(ctx, msg.Creator.String(), types.ARKEO)
if err != nil {
return nil, errors.Wrapf(err, "failed to get claim record for %s", msg.Creator)
}
}
log.Println("Arkeo Claim: ", arkeoClaimRecord)

if arkeoClaimRecord.IsEmpty() || arkeoClaimRecord.AmountClaim.IsZero() {
return nil, errors.Wrapf(types.ErrNoClaimableAmount, "no claimable amount for %s", msg.Creator)
}
Expand Down
19 changes: 4 additions & 15 deletions x/claim/keeper/msg_server_claim_arkeo_test.go
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
package keeper_test

import (
"testing"

"github.com/arkeonetwork/arkeo/testutil/utils"
"github.com/arkeonetwork/arkeo/x/claim/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/arkeonetwork/arkeo/common/cosmos"
"github.com/stretchr/testify/require"
"testing"
)

func TestClaimArkeo(t *testing.T) {
msgServer, keepers, ctx := setupMsgServer(t)
sdkCtx := sdk.UnwrapSDKContext(ctx)
cosmos.GetConfig().SetBech32PrefixForAccount("tarkeo", "tarkeopub")

addrArkeo := utils.GetRandomArkeoAddress()

claimRecord := types.ClaimRecord{
Chain: types.ARKEO,
Address: addrArkeo.String(),
Expand All @@ -25,16 +25,6 @@ func TestClaimArkeo(t *testing.T) {
err := keepers.ClaimKeeper.SetClaimRecord(sdkCtx, claimRecord)
require.NoError(t, err)

thorClaimRecord := types.ClaimRecord{
Chain: types.ARKEO,
Address: "tarkeo1dllfyp57l4xj5umqfcqy6c2l3xfk0qk6zpc3t7", // arkeo address derived from sender of thorchain tx "FA2768AEB52AE0A378372B48B10C5B374B25E8B2005C702AAD441B813ED2F174"
AmountClaim: sdk.NewInt64Coin(types.DefaultClaimDenom, 100),
AmountVote: sdk.NewInt64Coin(types.DefaultClaimDenom, 100),
AmountDelegate: sdk.NewInt64Coin(types.DefaultClaimDenom, 100),
}
err = keepers.ClaimKeeper.SetClaimRecord(sdkCtx, thorClaimRecord)
require.NoError(t, err)

// mint coins to module account
err = keepers.BankKeeper.MintCoins(sdkCtx, types.ModuleName, sdk.NewCoins(sdk.NewInt64Coin(types.DefaultClaimDenom, 10000)))
require.NoError(t, err)
Expand All @@ -44,7 +34,6 @@ func TestClaimArkeo(t *testing.T) {

claimMessage := types.MsgClaimArkeo{
Creator: addrArkeo,
ThorTx: "FA2768AEB52AE0A378372B48B10C5B374B25E8B2005C702AAD441B813ED2F174",
}
_, err = msgServer.ClaimArkeo(ctx, &claimMessage)
require.NoError(t, err)
Expand Down Expand Up @@ -75,4 +64,4 @@ func TestClaimArkeo(t *testing.T) {
}
_, err = msgServer.ClaimArkeo(ctx, &claimMessage2)
require.ErrorIs(t, err, types.ErrNoClaimableAmount)
}
}
78 changes: 78 additions & 0 deletions x/claim/keeper/msg_server_claim_thorchain_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package keeper_test

import (
"github.com/arkeonetwork/arkeo/testutil/utils"
"github.com/arkeonetwork/arkeo/x/claim/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/arkeonetwork/arkeo/common/cosmos"
"github.com/stretchr/testify/require"
"testing"
)

func TestClaimThorchain(t *testing.T) {
msgServer, keepers, ctx := setupMsgServer(t)
sdkCtx := sdk.UnwrapSDKContext(ctx)
cosmos.GetConfig().SetBech32PrefixForAccount("tarkeo", "tarkeopub")

addrArkeo := utils.GetRandomArkeoAddress()
claimRecord := types.ClaimRecord{
Chain: types.ARKEO,
Address: addrArkeo.String(),
AmountClaim: sdk.NewInt64Coin(types.DefaultClaimDenom, 100),
AmountVote: sdk.NewInt64Coin(types.DefaultClaimDenom, 100),
AmountDelegate: sdk.NewInt64Coin(types.DefaultClaimDenom, 100),
}
err := keepers.ClaimKeeper.SetClaimRecord(sdkCtx, claimRecord)
require.NoError(t, err)

thorClaimRecord := types.ClaimRecord{
Chain: types.ARKEO,
Address: "tarkeo1dllfyp57l4xj5umqfcqy6c2l3xfk0qk6zpc3t7", // arkeo address derived from sender of thorchain tx "FA2768AEB52AE0A378372B48B10C5B374B25E8B2005C702AAD441B813ED2F174"
AmountClaim: sdk.NewInt64Coin(types.DefaultClaimDenom, 100),
AmountVote: sdk.NewInt64Coin(types.DefaultClaimDenom, 100),
AmountDelegate: sdk.NewInt64Coin(types.DefaultClaimDenom, 100),
}
err = keepers.ClaimKeeper.SetClaimRecord(sdkCtx, thorClaimRecord)
require.NoError(t, err)

// mint coins to module account
err = keepers.BankKeeper.MintCoins(sdkCtx, types.ModuleName, sdk.NewCoins(sdk.NewInt64Coin(types.DefaultClaimDenom, 10000)))
require.NoError(t, err)

// get balance of arkeo address before claim
balanceBefore := keepers.BankKeeper.GetBalance(sdkCtx, addrArkeo, types.DefaultClaimDenom)

claimMessage := types.MsgClaimArkeo{
Creator: addrArkeo,
ThorTx: "FA2768AEB52AE0A378372B48B10C5B374B25E8B2005C702AAD441B813ED2F174",
}
_, err = msgServer.ClaimArkeo(ctx, &claimMessage)
require.NoError(t, err)

// check if claimrecord is updated
claimRecord, err = keepers.ClaimKeeper.GetClaimRecord(sdkCtx, addrArkeo.String(), types.ARKEO)
require.NoError(t, err)
require.True(t, !claimRecord.IsEmpty())

require.Equal(t, claimRecord.Address, addrArkeo.String())
require.Equal(t, claimRecord.Chain, types.ARKEO)
require.True(t, claimRecord.AmountClaim.IsZero()) // nothing to claim for claim action
require.Equal(t, claimRecord.AmountVote, sdk.NewInt64Coin(types.DefaultClaimDenom, 200))
require.Equal(t, claimRecord.AmountDelegate, sdk.NewInt64Coin(types.DefaultClaimDenom, 200))

// confirm balance increased by expected amount.
balanceAfter := keepers.BankKeeper.GetBalance(sdkCtx, addrArkeo, types.DefaultClaimDenom)
require.Equal(t, balanceAfter.Sub(balanceBefore), sdk.NewInt64Coin(types.DefaultClaimDenom, 200))

// attempt to claim again to ensure it fails.
_, err = msgServer.ClaimArkeo(ctx, &claimMessage)
require.ErrorIs(t, err, types.ErrNoClaimableAmount)

// ensure claim Arkeo fails from address with no claim record
addrArkeo2 := utils.GetRandomArkeoAddress()
claimMessage2 := types.MsgClaimArkeo{
Creator: addrArkeo2,
}
_, err = msgServer.ClaimArkeo(ctx, &claimMessage2)
require.ErrorIs(t, err, types.ErrNoClaimableAmount)
}

0 comments on commit 981cbd1

Please sign in to comment.