You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: eth_test.go
    path of file: ./repos/chainlink/core/services/keystore
    
    the code of the file until where you have to start completion: package keystore_test

import (
	"fmt"
	"math/big"
	"sort"
	"sync/atomic"
	"testing"
	"time"

	"github.com/ethereum/go-ethereum/common"
	"github.com/stretchr/testify/assert"
	"github.com/stretchr/testify/requ
    
func Test_EthKeyStore_Disable(t *testing.T) {
	t.Parallel()

	db := pgtest.NewSqlxDB(t)
	cfg := configtest.NewTestGeneralConfig(t)
	keyStore := cltest.NewKeyStore(t, db, cfg.Database())
	ks := keyStore.Eth()

	t.Run("creates key, deletes it unsafely and then enable creates it again", func(t *testing.T) {
		ctx := testutils.Context(t)
		k, _ := cltest.MustInsertRandomKeyNoChains(t, ks)
		require.NoError(t, ks.Add(ctx, k.Address, testutils.SimulatedChainID))
		_, err := db.Exec("DELETE FROM evm.key_states WHERE address = $1", k.Address)
		require.NoError(t, err)
		require.NoError(t, ks.Disable(ctx, k.Address, testutils.SimulatedChainID))
		key, err := ks.GetState(ctx, k.Address.Hex(), testutils.SimulatedChainID)
		require.NoError(t, err)
		require.Equal(t, key.Disabled, true)
	})

	t.Run("creates key and enables it if it exists in the keystore, but is missing from key states db table", func(t *testing.T) {
		ctx := testutils.Context(t)
		k, _ := cltest.MustInsertRandomKeyNoChains(t, ks)
		require.NoError(t, ks.Disable(ctx, k.Address, testutils.SimulatedChainID))
		key, err := ks.GetState(ctx, k.Address.Hex(), testutils.SimulatedChainID)
		require.NoError(t, err)
		require.Equal(t, key.Disabled, true)
	})

	t.Run("errors if key is not present in keystore", func(t *testing.T) {
		ctx := testutils.Context(t)
		addrNotInKs := testutils.NewAddress()
		require.Error(t, ks.Disable(ctx, addrNotInKs, testutils.SimulatedChainID))
		_, err := ks.GetState(ctx, addrNotInKs.Hex(), testutils.SimulatedChainID)
		require.Error(t, err)
	})
}