github.com/ethereum-optimism/optimism@v1.7.2/op-node/p2p/store/ip_ban_book_test.go (about)

     1  package store
     2  
     3  import (
     4  	"context"
     5  	"net"
     6  	"testing"
     7  	"time"
     8  
     9  	"github.com/ethereum-optimism/optimism/op-service/clock"
    10  	"github.com/ethereum-optimism/optimism/op-service/testlog"
    11  	"github.com/ethereum/go-ethereum/log"
    12  	ds "github.com/ipfs/go-datastore"
    13  	"github.com/ipfs/go-datastore/sync"
    14  	"github.com/stretchr/testify/require"
    15  )
    16  
    17  func TestGetUnknownIPBan(t *testing.T) {
    18  	book := createMemoryIPBanBook(t)
    19  	defer book.Close()
    20  	exp, err := book.GetIPBanExpiration(net.IPv4(1, 2, 3, 4))
    21  	require.Same(t, UnknownBanErr, err)
    22  	require.Equal(t, time.Time{}, exp)
    23  }
    24  
    25  func TestRoundTripIPBan(t *testing.T) {
    26  	book := createMemoryIPBanBook(t)
    27  	defer book.Close()
    28  	expiry := time.Unix(2484924, 0)
    29  	ip := net.IPv4(1, 2, 3, 4)
    30  	require.NoError(t, book.SetIPBanExpiration(ip, expiry))
    31  	result, err := book.GetIPBanExpiration(ip)
    32  	require.NoError(t, err)
    33  	require.Equal(t, result, expiry)
    34  }
    35  
    36  func createMemoryIPBanBook(t *testing.T) *ipBanBook {
    37  	store := sync.MutexWrap(ds.NewMapDatastore())
    38  	logger := testlog.Logger(t, log.LevelInfo)
    39  	c := clock.NewDeterministicClock(time.UnixMilli(100))
    40  	book, err := newIPBanBook(context.Background(), logger, c, store)
    41  	require.NoError(t, err)
    42  	return book
    43  }