github.com/nspcc-dev/neo-go@v0.105.2-0.20240517133400-6be757af3eba/pkg/core/storage/leveldb_store_test.go (about)

     1  package storage
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/nspcc-dev/neo-go/pkg/core/storage/dbconfig"
     7  	"github.com/stretchr/testify/require"
     8  	"github.com/syndtr/goleveldb/leveldb"
     9  )
    10  
    11  func newLevelDBForTesting(t testing.TB) Store {
    12  	ldbDir := t.TempDir()
    13  	opts := dbconfig.LevelDBOptions{
    14  		DataDirectoryPath: ldbDir,
    15  	}
    16  	newLevelStore, err := NewLevelDBStore(opts)
    17  	require.Nil(t, err, "NewLevelDBStore error")
    18  	return newLevelStore
    19  }
    20  
    21  func TestROLevelDB(t *testing.T) {
    22  	ldbDir := t.TempDir()
    23  	opts := dbconfig.LevelDBOptions{
    24  		DataDirectoryPath: ldbDir,
    25  		ReadOnly:          true,
    26  	}
    27  
    28  	// If DB doesn't exist, then error should be returned.
    29  	_, err := NewLevelDBStore(opts)
    30  	require.Error(t, err)
    31  
    32  	// Create the DB and try to open it in RO mode.
    33  	opts.ReadOnly = false
    34  	store, err := NewLevelDBStore(opts)
    35  	require.NoError(t, err)
    36  	require.NoError(t, store.Close())
    37  	opts.ReadOnly = true
    38  
    39  	store, err = NewLevelDBStore(opts)
    40  	require.NoError(t, err)
    41  	t.Cleanup(func() { require.NoError(t, store.Close()) })
    42  	// Changes must be prohibited.
    43  	putErr := store.PutChangeSet(map[string][]byte{"one": []byte("one")}, nil)
    44  	require.ErrorIs(t, putErr, leveldb.ErrReadOnly)
    45  }