8000 chore: backport https://github.com/skip-mev/connect/pull/754 by aljo242 · Pull Request #853 · skip-mev/connect · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
This repository was archived by the owner on Mar 24, 2025. It is now read-only.

chore: backport https://github.com/skip-mev/connect/pull/754 #853

Merged
merged 3 commits into from
Dec 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 7 additions & 4 deletions x/marketmap/keeper/keeper.go
Original file line number Diff line number Diff line change
Expand Up @@ -196,13 +196,16 @@ func (k *Keeper) IsMarketValid(ctx sdk.Context, market types.Market) error {
// check that all markets already exist in the keeper store:
for _, providerConfig := range market.ProviderConfigs {
if providerConfig.NormalizeByPair != nil {
has, err := k.markets.Has(ctx, types.TickerString(providerConfig.NormalizeByPair.String()))
norm, err := k.markets.Get(ctx, types.TickerString(providerConfig.NormalizeByPair.String()))
if err != nil {
return err
return fmt.Errorf("unable to get normalize market %s for market %s: %w",
providerConfig.NormalizeByPair.String(), market.Ticker.String(), err)
}

if !has {
return fmt.Errorf("currency pair %s in provider config does not exist", providerConfig.NormalizeByPair.String())
// if the new market is enabled, its normalize by market must also be enabled
if market.Ticker.Enabled && !norm.Ticker.Enabled {
return fmt.Errorf("needed normalize market %s for market %s is not enabled",
providerConfig.NormalizeByPair.String(), market.Ticker.String())
}
}
}
Expand Down
45 changes: 45 additions & 0 deletions x/marketmap/keeper/keeper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,51 @@ func (s *KeeperTestSuite) TestValidUpdate() {
s.Require().NoError(s.keeper.ValidateState(s.ctx, []types.Market{validMarket}))
}

func (s *KeeperTestSuite) TestInvalidUpdateDisabledNormalizeBy() {
marketBTCUSDT := btcusdt
marketETHUSDT := ethusdt

// create a valid markets
marketBTCUSDT.Ticker.Enabled = true
marketETHUSDT.Ticker.Enabled = false

s.Require().NoError(s.keeper.CreateMarket(s.ctx, marketBTCUSDT))
s.Require().NoError(s.keeper.CreateMarket(s.ctx, marketETHUSDT))

// invalid market with a normalize pair that is in state but disabled
invalidMarket := marketBTCUSDT
invalidMarket.ProviderConfigs = append(invalidMarket.ProviderConfigs, types.ProviderConfig{
Name: "huobi",
OffChainTicker: "btc-usdt",
NormalizeByPair: &marketETHUSDT.Ticker.CurrencyPair,
})

s.Require().NoError(s.keeper.UpdateMarket(s.ctx, invalidMarket))
s.Require().Error(s.keeper.ValidateState(s.ctx, []types.Market{invalidMarket}))
}

func (s *KeeperTestSuite) TestInvalidCreateDisabledNormalizeBy() {
marketBTCUSDT := btcusdt
marketETHUSDT := ethusdt

// create a valid markets
marketBTCUSDT.Ticker.Enabled = true
marketETHUSDT.Ticker.Enabled = false

s.Require().NoError(s.keeper.CreateMarket(s.ctx, marketETHUSDT))

// invalid market with a normalize pair that is in state but disabled
invalidMarket := marketBTCUSDT
invalidMarket.ProviderConfigs = append(invalidMarket.ProviderConfigs, types.ProviderConfig{
Name: "huobi",
OffChainTicker: "btc-usdt",
NormalizeByPair: &marketETHUSDT.Ticker.CurrencyPair,
})

s.Require().NoError(s.keeper.CreateMarket(s.ctx, invalidMarket))
s.Require().Error(s.keeper.ValidateState(s.ctx, []types.Market{invalidMarket}))
}

func (s *KeeperTestSuite) TestDeleteMarket() {
// create a valid markets
s.Require().NoError(s.keeper.CreateMarket(s.ctx, btcusdt))
Expand Down
Loading
0