github.com/InjectiveLabs/sdk-go@v1.53.0/client/chain/ofac_test.go (about)

     1  package chain_test
     2  
     3  import (
     4  	"encoding/json"
     5  	"io"
     6  	"os"
     7  	"testing"
     8  
     9  	"github.com/InjectiveLabs/sdk-go/client"
    10  	"github.com/InjectiveLabs/sdk-go/client/chain"
    11  	"github.com/InjectiveLabs/sdk-go/client/common"
    12  	rpchttp "github.com/cometbft/cometbft/rpc/client/http"
    13  	"github.com/cosmos/cosmos-sdk/crypto/keyring"
    14  	cosmtypes "github.com/cosmos/cosmos-sdk/types"
    15  	"github.com/stretchr/testify/suite"
    16  )
    17  
    18  type OfacTestSuite struct {
    19  	suite.Suite
    20  	network          common.Network
    21  	tmClient         *rpchttp.HTTP
    22  	senderAddress    cosmtypes.AccAddress
    23  	cosmosKeyring    keyring.Keyring
    24  	originalOfacPath string
    25  }
    26  
    27  func (suite *OfacTestSuite) SetupTest() {
    28  	var err error
    29  	suite.network = common.LoadNetwork("testnet", "lb")
    30  	suite.tmClient, err = rpchttp.New(suite.network.TmEndpoint, "/websocket")
    31  	suite.NoError(err)
    32  
    33  	suite.senderAddress, suite.cosmosKeyring, err = accountForTests()
    34  	suite.NoError(err)
    35  
    36  	// Prepare OFAC list file
    37  	testList := []string{
    38  		suite.senderAddress.String(),
    39  	}
    40  	jsonData, err := json.Marshal(testList)
    41  	suite.NoError(err)
    42  
    43  	suite.originalOfacPath = chain.OfacListPath
    44  	chain.OfacListPath = suite.T().TempDir()
    45  	suite.NoError(err)
    46  	file, err := os.Create(chain.GetOfacListPath())
    47  	suite.NoError(err)
    48  
    49  	_, err = io.WriteString(file, string(jsonData))
    50  	suite.NoError(err)
    51  
    52  	err = file.Close()
    53  	suite.NoError(err)
    54  }
    55  
    56  func (suite *OfacTestSuite) TearDownTest() {
    57  	chain.OfacListPath = suite.originalOfacPath
    58  }
    59  
    60  func (suite *OfacTestSuite) TestOfacList() {
    61  	clientCtx, err := chain.NewClientContext(
    62  		suite.network.ChainId,
    63  		suite.senderAddress.String(),
    64  		suite.cosmosKeyring,
    65  	)
    66  	suite.NoError(err)
    67  
    68  	clientCtx = clientCtx.WithNodeURI(suite.network.TmEndpoint).WithClient(suite.tmClient)
    69  	testChecker, err := chain.NewOfacChecker()
    70  	suite.NoError(err)
    71  	suite.True(testChecker.IsBlacklisted(suite.senderAddress.String()))
    72  	suite.False(testChecker.IsBlacklisted("inj1"))
    73  
    74  	_, err = chain.NewChainClient(
    75  		clientCtx,
    76  		suite.network,
    77  		common.OptionGasPrices(client.DefaultGasPriceWithDenom),
    78  	)
    79  	suite.Error(err)
    80  }
    81  
    82  func TestOfacTestSuite(t *testing.T) {
    83  	suite.Run(t, new(OfacTestSuite))
    84  }