package cryptostore
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
cmn "github.com/tendermint/tmlibs/common"
|
|
|
|
crypto "github.com/tendermint/go-crypto"
|
|
keys "github.com/tendermint/go-crypto/keys"
|
|
)
|
|
|
|
func TestSortKeys(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
gen := func() crypto.PrivKey {
|
|
key, _ := GenEd25519.Generate(cmn.RandBytes(16))
|
|
return key
|
|
}
|
|
assert.NotEqual(gen(), gen())
|
|
|
|
// alphabetical order is n3, n1, n2
|
|
n1, n2, n3 := "john", "mike", "alice"
|
|
infos := keys.Infos{
|
|
info(n1, gen()),
|
|
info(n2, gen()),
|
|
info(n3, gen()),
|
|
}
|
|
|
|
// make sure they are initialized unsorted
|
|
assert.Equal(n1, infos[0].Name)
|
|
assert.Equal(n2, infos[1].Name)
|
|
assert.Equal(n3, infos[2].Name)
|
|
|
|
// now they are sorted
|
|
infos.Sort()
|
|
assert.Equal(n3, infos[0].Name)
|
|
assert.Equal(n1, infos[1].Name)
|
|
assert.Equal(n2, infos[2].Name)
|
|
|
|
// make sure info put some real data there...
|
|
assert.NotEmpty(infos[0].PubKey)
|
|
assert.NotEmpty(infos[0].PubKey.Address())
|
|
assert.NotEmpty(infos[1].PubKey)
|
|
assert.NotEmpty(infos[1].PubKey.Address())
|
|
assert.NotEqual(infos[0].PubKey, infos[1].PubKey)
|
|
}
|