fix: DiffCollectionsMigration hash function not used correctly (#17143)
This commit is contained in:
parent
7daf40a270
commit
153af4c755
@ -66,9 +66,9 @@ func DiffCollectionsMigration(
|
||||
h.Write(it.Value())
|
||||
}
|
||||
|
||||
hash := sha256.Sum256(nil)
|
||||
if hex.EncodeToString(hash[:]) != targetHash {
|
||||
return fmt.Errorf("hashes don't match: %s != %s", hex.EncodeToString(hash[:]), targetHash)
|
||||
hash := h.Sum(nil)
|
||||
if hex.EncodeToString(hash) != targetHash {
|
||||
return fmt.Errorf("hashes don't match: %s != %s", hex.EncodeToString(hash), targetHash)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
54
testutil/collections_test.go
Normal file
54
testutil/collections_test.go
Normal file
@ -0,0 +1,54 @@
|
||||
package testutil_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
storetypes "cosmossdk.io/store/types"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/testutil"
|
||||
)
|
||||
|
||||
func TestDiffCollectionsMigration(t *testing.T) {
|
||||
key := storetypes.NewKVStoreKey("test")
|
||||
ctx := testutil.DefaultContext(key, storetypes.NewTransientStoreKey("transient"))
|
||||
|
||||
// First try with some invalid hash
|
||||
err := testutil.DiffCollectionsMigration(
|
||||
ctx,
|
||||
key,
|
||||
5,
|
||||
func(i int64) {
|
||||
ctx.KVStore(key).Set([]byte{byte(i)}, []byte{byte(i)})
|
||||
},
|
||||
"abcdef0123456789",
|
||||
)
|
||||
require.Error(t, err)
|
||||
|
||||
// Now reset and try with the correct hash
|
||||
ctx = testutil.DefaultContext(key, storetypes.NewTransientStoreKey("transient"))
|
||||
err = testutil.DiffCollectionsMigration(
|
||||
ctx,
|
||||
key,
|
||||
5,
|
||||
func(i int64) {
|
||||
ctx.KVStore(key).Set([]byte{byte(i)}, []byte{byte(i)})
|
||||
},
|
||||
"79541ed9da9c16cb7a1d43d5a3d5f6ee31a873c85a6cb4334fb99e021ee0e556",
|
||||
)
|
||||
require.NoError(t, err)
|
||||
|
||||
// Change the data a little and it will result in an error
|
||||
ctx = testutil.DefaultContext(key, storetypes.NewTransientStoreKey("transient"))
|
||||
err = testutil.DiffCollectionsMigration(
|
||||
ctx,
|
||||
key,
|
||||
5,
|
||||
func(i int64) {
|
||||
ctx.KVStore(key).Set([]byte{byte(i)}, []byte{byte(i + 1)})
|
||||
},
|
||||
"79541ed9da9c16cb7a1d43d5a3d5f6ee31a873c85a6cb4334fb99e021ee0e556",
|
||||
)
|
||||
require.Error(t, err)
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user