tendermint/state/genesis_test.go

88 lines
2.3 KiB
Go

package state
import (
"bytes"
"encoding/hex"
"fmt"
"testing"
tdb "github.com/tendermint/tendermint/db"
ptypes "github.com/tendermint/tendermint/permission/types"
. "github.com/tendermint/tendermint/state/types"
)
var chain_id = "lone_ranger"
var addr1, _ = hex.DecodeString("964B1493BBE3312278B7DEB94C39149F7899A345")
var send1, name1, call1 = 1, 1, 0
var perms, setbit = 66, 70
var accName = "me"
var roles1 = []string{"master", "universal-ruler"}
var amt1 int64 = 1000000
var g1 = fmt.Sprintf(`
{
"chain_id":"%s",
"accounts": [
{
"address": "%X",
"amount": %d,
"name": "%s",
"permissions": {
"base": {
"perms": %d,
"set": %d
},
"roles": [
"%s",
"%s"
]
}
}
],
"validators": [
{
"amount": 100000000,
"pub_key": [1,"F6C79CF0CB9D66B677988BCB9B8EADD9A091CD465A60542A8AB85476256DBA92"],
"unbond_to": [
{
"address": "964B1493BBE3312278B7DEB94C39149F7899A345",
"amount": 10000000
}
]
}
]
}
`, chain_id, addr1, amt1, accName, perms, setbit, roles1[0], roles1[1])
func TestGenesisReadable(t *testing.T) {
genDoc := GenesisDocFromJSON([]byte(g1))
if genDoc.ChainID != chain_id {
t.Fatalf("Incorrect chain id. Got %d, expected %d\n", genDoc.ChainID, chain_id)
}
acc := genDoc.Accounts[0]
if bytes.Compare(acc.Address, addr1) != 0 {
t.Fatalf("Incorrect address for account. Got %X, expected %X\n", acc.Address, addr1)
}
if acc.Amount != amt1 {
t.Fatalf("Incorrect amount for account. Got %d, expected %d\n", acc.Amount, amt1)
}
if acc.Name != accName {
t.Fatalf("Incorrect name for account. Got %s, expected %s\n", acc.Name, accName)
}
perm, _ := acc.Permissions.Base.Get(ptypes.Send)
if perm != (send1 > 0) {
t.Fatalf("Incorrect permission for send. Got %v, expected %v\n", perm, send1 > 0)
}
}
func TestGenesisMakeState(t *testing.T) {
genDoc := GenesisDocFromJSON([]byte(g1))
db := tdb.NewMemDB()
st := MakeGenesisState(db, genDoc)
acc := st.GetAccount(addr1)
v, _ := acc.Permissions.Base.Get(ptypes.Send)
if v != (send1 > 0) {
t.Fatalf("Incorrect permission for send. Got %v, expected %v\n", v, send1 > 0)
}
}