From e9a62021be528a1b7753853aba98f081cc22eb81 Mon Sep 17 00:00:00 2001
From: Benjamin Bollen <ben@erisindustries.com>
Date: Fri, 27 May 2016 19:50:48 +0200
Subject: [PATCH] copy @silasdavis corrections from state into
 manager/eris-mint/state

---
 manager/eris-mint/state/genesis_test.go     | 73 ++++++++++++++++++++-
 manager/eris-mint/state/permissions_test.go | 21 +++---
 manager/eris-mint/state/tx_cache_test.go    |  3 +-
 3 files changed, 84 insertions(+), 13 deletions(-)

diff --git a/manager/eris-mint/state/genesis_test.go b/manager/eris-mint/state/genesis_test.go
index 304ed79c..fba281c3 100644
--- a/manager/eris-mint/state/genesis_test.go
+++ b/manager/eris-mint/state/genesis_test.go
@@ -4,11 +4,17 @@ import (
 	"bytes"
 	"encoding/hex"
 	"fmt"
+	"sort"
 	"testing"
+	"time"
 
+	acm "github.com/eris-ltd/eris-db/manager/eris-mint/account"
 	ptypes "github.com/eris-ltd/eris-db/permission/types"
 	. "github.com/eris-ltd/eris-db/manager/eris-mint/state/types"
+
+	. "github.com/tendermint/go-common"
 	tdb "github.com/tendermint/go-db"
+	"github.com/tendermint/tendermint/types"
 )
 
 var chain_id = "lone_ranger"
@@ -41,7 +47,7 @@ var g1 = fmt.Sprintf(`
     "validators": [
         {
             "amount": 100000000,
-            "pub_key": "F6C79CF0CB9D66B677988BCB9B8EADD9A091CD465A60542A8AB85476256DBA92",
+            "pub_key": [1,"F6C79CF0CB9D66B677988BCB9B8EADD9A091CD465A60542A8AB85476256DBA92"],
             "unbond_to": [
                 {
                     "address": "964B1493BBE3312278B7DEB94C39149F7899A345",
@@ -85,3 +91,68 @@ func TestGenesisMakeState(t *testing.T) {
 		t.Fatalf("Incorrect permission for send. Got %v, expected %v\n", v, send1 > 0)
 	}
 }
+
+//-------------------------------------------------------
+
+func RandGenesisState(numAccounts int, randBalance bool, minBalance int64, numValidators int, randBonded bool, minBonded int64) (*State, []*acm.PrivAccount, []*types.PrivValidator) {
+	db := tdb.NewMemDB()
+	genDoc, privAccounts, privValidators := RandGenesisDoc(numAccounts, randBalance, minBalance, numValidators, randBonded, minBonded)
+	s0 := MakeGenesisState(db, genDoc)
+	s0.Save()
+	return s0, privAccounts, privValidators
+}
+
+func RandAccount(randBalance bool, minBalance int64) (*acm.Account, *acm.PrivAccount) {
+	privAccount := acm.GenPrivAccount()
+	perms := ptypes.DefaultAccountPermissions
+	acc := &acm.Account{
+		Address:     privAccount.PubKey.Address(),
+		PubKey:      privAccount.PubKey,
+		Sequence:    RandInt(),
+		Balance:     minBalance,
+		Permissions: perms,
+	}
+	if randBalance {
+		acc.Balance += int64(RandUint32())
+	}
+	return acc, privAccount
+}
+
+func RandGenesisDoc(numAccounts int, randBalance bool, minBalance int64, numValidators int, randBonded bool, minBonded int64) (*GenesisDoc, []*acm.PrivAccount, []*types.PrivValidator) {
+	accounts := make([]GenesisAccount, numAccounts)
+	privAccounts := make([]*acm.PrivAccount, numAccounts)
+	defaultPerms := ptypes.DefaultAccountPermissions
+	for i := 0; i < numAccounts; i++ {
+		account, privAccount := RandAccount(randBalance, minBalance)
+		accounts[i] = GenesisAccount{
+			Address:     account.Address,
+			Amount:      account.Balance,
+			Permissions: &defaultPerms, // This will get copied into each state.Account.
+		}
+		privAccounts[i] = privAccount
+	}
+	validators := make([]GenesisValidator, numValidators)
+	privValidators := make([]*types.PrivValidator, numValidators)
+	for i := 0; i < numValidators; i++ {
+		valInfo, privVal := types.RandValidator(randBonded, minBonded)
+		validators[i] = GenesisValidator{
+			PubKey: valInfo.PubKey,
+			Amount: valInfo.VotingPower,
+			UnbondTo: []BasicAccount{
+				{
+					Address: valInfo.PubKey.Address(),
+					Amount:  valInfo.VotingPower,
+				},
+			},
+		}
+		privValidators[i] = privVal
+	}
+	sort.Sort(types.PrivValidatorsByAddress(privValidators))
+	return &GenesisDoc{
+		GenesisTime: time.Now(),
+		ChainID:     "tendermint_test",
+		Accounts:    accounts,
+		Validators:  validators,
+	}, privAccounts, privValidators
+
+}
diff --git a/manager/eris-mint/state/permissions_test.go b/manager/eris-mint/state/permissions_test.go
index 6b18854e..3331a4f7 100644
--- a/manager/eris-mint/state/permissions_test.go
+++ b/manager/eris-mint/state/permissions_test.go
@@ -9,6 +9,7 @@ import (
 	"time"
 
 	acm "github.com/eris-ltd/eris-db/manager/eris-mint/account"
+	"github.com/eris-ltd/eris-db/manager/eris-mint/evm"
 	ptypes "github.com/eris-ltd/eris-db/permission/types"
 	. "github.com/eris-ltd/eris-db/manager/eris-mint/state/types"
 	"github.com/eris-ltd/eris-db/txs"
@@ -142,7 +143,7 @@ func newBaseGenDoc(globalPerm, accountPerm ptypes.AccountPermissions) GenesisDoc
 }
 
 func TestSendFails(t *testing.T) {
-	stateDB := dbm.GetDB("state", dbBackend, dbDir)
+	stateDB := dbm.NewDB("state", dbBackend, dbDir)
 	genDoc := newBaseGenDoc(PermsAllFalse, PermsAllFalse)
 	genDoc.Accounts[1].Permissions.Base.Set(ptypes.Send, true)
 	genDoc.Accounts[2].Permissions.Base.Set(ptypes.Call, true)
@@ -210,7 +211,7 @@ func TestSendFails(t *testing.T) {
 }
 
 func TestName(t *testing.T) {
-	stateDB := dbm.GetDB("state", dbBackend, dbDir)
+	stateDB := dbm.NewDB("state", dbBackend, dbDir)
 	genDoc := newBaseGenDoc(PermsAllFalse, PermsAllFalse)
 	genDoc.Accounts[0].Permissions.Base.Set(ptypes.Send, true)
 	genDoc.Accounts[1].Permissions.Base.Set(ptypes.Name, true)
@@ -244,7 +245,7 @@ func TestName(t *testing.T) {
 }
 
 func TestCallFails(t *testing.T) {
-	stateDB := dbm.GetDB("state", dbBackend, dbDir)
+	stateDB := dbm.NewDB("state", dbBackend, dbDir)
 	genDoc := newBaseGenDoc(PermsAllFalse, PermsAllFalse)
 	genDoc.Accounts[1].Permissions.Base.Set(ptypes.Send, true)
 	genDoc.Accounts[2].Permissions.Base.Set(ptypes.Call, true)
@@ -314,7 +315,7 @@ func TestCallFails(t *testing.T) {
 }
 
 func TestSendPermission(t *testing.T) {
-	stateDB := dbm.GetDB("state", dbBackend, dbDir)
+	stateDB := dbm.NewDB("state", dbBackend, dbDir)
 	genDoc := newBaseGenDoc(PermsAllFalse, PermsAllFalse)
 	genDoc.Accounts[0].Permissions.Base.Set(ptypes.Send, true) // give the 0 account permission
 	st := MakeGenesisState(stateDB, &genDoc)
@@ -350,7 +351,7 @@ func TestSendPermission(t *testing.T) {
 }
 
 func TestCallPermission(t *testing.T) {
-	stateDB := dbm.GetDB("state", dbBackend, dbDir)
+	stateDB := dbm.NewDB("state", dbBackend, dbDir)
 	genDoc := newBaseGenDoc(PermsAllFalse, PermsAllFalse)
 	genDoc.Accounts[0].Permissions.Base.Set(ptypes.Call, true) // give the 0 account permission
 	st := MakeGenesisState(stateDB, &genDoc)
@@ -472,7 +473,7 @@ func TestCallPermission(t *testing.T) {
 }
 
 func TestCreatePermission(t *testing.T) {
-	stateDB := dbm.GetDB("state", dbBackend, dbDir)
+	stateDB := dbm.NewDB("state", dbBackend, dbDir)
 	genDoc := newBaseGenDoc(PermsAllFalse, PermsAllFalse)
 	genDoc.Accounts[0].Permissions.Base.Set(ptypes.CreateContract, true) // give the 0 account permission
 	genDoc.Accounts[0].Permissions.Base.Set(ptypes.Call, true)           // give the 0 account permission
@@ -590,7 +591,7 @@ func TestCreatePermission(t *testing.T) {
 
 /* TODO
 func TestBondPermission(t *testing.T) {
-	stateDB := dbm.GetDB("state",dbBackend,dbDir)
+	stateDB := dbm.NewDB("state",dbBackend,dbDir)
 	genDoc := newBaseGenDoc(PermsAllFalse, PermsAllFalse)
 	st := MakeGenesisState(stateDB, &genDoc)
 	blockCache := NewBlockCache(st)
@@ -714,7 +715,7 @@ func TestBondPermission(t *testing.T) {
 */
 
 func TestCreateAccountPermission(t *testing.T) {
-	stateDB := dbm.GetDB("state", dbBackend, dbDir)
+	stateDB := dbm.NewDB("state", dbBackend, dbDir)
 	genDoc := newBaseGenDoc(PermsAllFalse, PermsAllFalse)
 	genDoc.Accounts[0].Permissions.Base.Set(ptypes.Send, true)          // give the 0 account permission
 	genDoc.Accounts[1].Permissions.Base.Set(ptypes.Send, true)          // give the 0 account permission
@@ -857,7 +858,7 @@ func TestCreateAccountPermission(t *testing.T) {
 var DougAddress = append([]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, []byte("THISISDOUG")...)
 
 func TestSNativeCALL(t *testing.T) {
-	stateDB := dbm.GetDB("state", dbBackend, dbDir)
+	stateDB := dbm.NewDB("state", dbBackend, dbDir)
 	genDoc := newBaseGenDoc(PermsAllFalse, PermsAllFalse)
 	genDoc.Accounts[0].Permissions.Base.Set(ptypes.Call, true) // give the 0 account permission
 	genDoc.Accounts[3].Permissions.Base.Set(ptypes.Bond, true) // some arbitrary permission to play with
@@ -991,7 +992,7 @@ func TestSNativeCALL(t *testing.T) {
 }
 
 func TestSNativeTx(t *testing.T) {
-	stateDB := dbm.GetDB("state", dbBackend, dbDir)
+	stateDB := dbm.NewDB("state", dbBackend, dbDir)
 	genDoc := newBaseGenDoc(PermsAllFalse, PermsAllFalse)
 	genDoc.Accounts[0].Permissions.Base.Set(ptypes.Call, true) // give the 0 account permission
 	genDoc.Accounts[3].Permissions.Base.Set(ptypes.Bond, true) // some arbitrary permission to play with
diff --git a/manager/eris-mint/state/tx_cache_test.go b/manager/eris-mint/state/tx_cache_test.go
index bc0a3c0f..a943ec72 100644
--- a/manager/eris-mint/state/tx_cache_test.go
+++ b/manager/eris-mint/state/tx_cache_test.go
@@ -4,12 +4,11 @@ import (
 	"bytes"
 	"testing"
 
-
 	"github.com/tendermint/go-wire"
 )
 
 func TestStateToFromVMAccount(t *testing.T) {
-	acmAcc1, _ := stypes.RandAccount(true, 456)
+	acmAcc1, _ := RandAccount(true, 456)
 	vmAcc := toVMAccount(acmAcc1)
 	acmAcc2 := toStateAccount(vmAcc)
 
-- 
GitLab