mirror of
https://github.com/tendermint/tendermint.git
synced 2026-08-31 21:27:04 +00:00
more cleanup rpc tests, testing namereg
This commit is contained in:
@@ -104,25 +104,38 @@ func defaultConfig(moniker string) (defaultConfig string) {
|
||||
return
|
||||
}
|
||||
|
||||
// priv keys generated deterministically eg rpc/tests/helpers.go
|
||||
var defaultGenesis = `{
|
||||
"chain_id" : "tendermint_test",
|
||||
"accounts": [
|
||||
{
|
||||
"address": "1D7A91CB32F758A02EBB9BE1FB6F8DEE56F90D42",
|
||||
"amount": 200000000
|
||||
"address": "E9B5D87313356465FAE33C406CE2C2979DE60BCB",
|
||||
"amount": 200000000
|
||||
},
|
||||
{
|
||||
"address": "AC89A6DDF4C309A89A2C4078CE409A5A7B282270",
|
||||
"amount": 200000000
|
||||
"address": "DFE4AFFA4CEE17CD01CB9E061D77C3ECED29BD88",
|
||||
"amount": 200000000
|
||||
},
|
||||
{
|
||||
"address": "F60D30722E7B497FA532FB3207C3FB29C31B1992",
|
||||
"amount": 200000000
|
||||
},
|
||||
{
|
||||
"address": "336CB40A5EB92E496E19B74FDFF2BA017C877FD6",
|
||||
"amount": 200000000
|
||||
},
|
||||
{
|
||||
"address": "D218F0F439BF0384F6F5EF8D0F8B398D941BD1DC",
|
||||
"amount": 200000000
|
||||
}
|
||||
],
|
||||
"validators": [
|
||||
{
|
||||
"pub_key": [1, "06FBAC4E285285D1D91FCBC7E91C780ADA11516F67462340B3980CE2B94940E8"],
|
||||
"pub_key": [1, "583779C3BFA3F6C7E23C7D830A9C3D023A216B55079AD38BFED1207B94A19548"],
|
||||
"amount": 1000000,
|
||||
"unbond_to": [
|
||||
{
|
||||
"address": "1D7A91CB32F758A02EBB9BE1FB6F8DEE56F90D42",
|
||||
"address": "E9B5D87313356465FAE33C406CE2C2979DE60BCB",
|
||||
"amount": 100000
|
||||
}
|
||||
]
|
||||
|
||||
@@ -50,7 +50,7 @@ func TestWSBlockchainGrowth(t *testing.T) {
|
||||
|
||||
// send a transaction and validate the events from listening for both sender and receiver
|
||||
func TestWSSend(t *testing.T) {
|
||||
toAddr := []byte{20, 143, 25, 63, 16, 177, 83, 29, 91, 91, 54, 23, 233, 46, 190, 121, 122, 34, 86, 54}
|
||||
toAddr := user[1].Address
|
||||
amt := uint64(100)
|
||||
|
||||
con := newWSCon(t)
|
||||
@@ -80,7 +80,7 @@ func TestWSDoubleFire(t *testing.T) {
|
||||
con.Close()
|
||||
}()
|
||||
amt := uint64(100)
|
||||
toAddr := []byte{20, 143, 25, 63, 16, 177, 83, 29, 91, 91, 54, 23, 233, 46, 190, 121, 122, 34, 86, 54}
|
||||
toAddr := user[1].Address
|
||||
// broadcast the transaction, wait to hear about it
|
||||
waitForEvent(t, con, eid, true, func() {
|
||||
tx := makeDefaultSendTxSigned(t, wsTyp, toAddr, amt)
|
||||
|
||||
+2
-10
@@ -2,7 +2,6 @@ package rpctest
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/hex"
|
||||
"strconv"
|
||||
"testing"
|
||||
"time"
|
||||
@@ -29,8 +28,7 @@ var (
|
||||
mempoolCount = 0
|
||||
|
||||
// make keys
|
||||
userPriv = "C453604BD6480D5538B4C6FD2E3E314B5BCE518D75ADE4DA3DA85AB8ADFD819606FBAC4E285285D1D91FCBC7E91C780ADA11516F67462340B3980CE2B94940E8"
|
||||
user = makeUsers(2)
|
||||
user = makeUsers(5)
|
||||
|
||||
chainID string
|
||||
|
||||
@@ -40,6 +38,7 @@ var (
|
||||
}
|
||||
)
|
||||
|
||||
// deterministic account generation, synced with genesis file in config/tendermint_test/config.go
|
||||
func makeUsers(n int) []*account.PrivAccount {
|
||||
accounts := []*account.PrivAccount{}
|
||||
for i := 0; i < n; i++ {
|
||||
@@ -47,13 +46,6 @@ func makeUsers(n int) []*account.PrivAccount {
|
||||
user := account.GenPrivAccountFromSecret(secret)
|
||||
accounts = append(accounts, user)
|
||||
}
|
||||
|
||||
// include our validator
|
||||
var byteKey [64]byte
|
||||
userPrivByteSlice, _ := hex.DecodeString(userPriv)
|
||||
copy(byteKey[:], userPrivByteSlice)
|
||||
privAcc := account.GenPrivAccountFromKey(byteKey)
|
||||
accounts[0] = privAcc
|
||||
return accounts
|
||||
}
|
||||
|
||||
|
||||
+35
-22
@@ -9,6 +9,8 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
var doNothing = func(eid string, b []byte) error { return nil }
|
||||
|
||||
func testStatus(t *testing.T, typ string) {
|
||||
client := clients[typ]
|
||||
resp, err := client.Status()
|
||||
@@ -44,13 +46,13 @@ func testGetAccount(t *testing.T, typ string) {
|
||||
|
||||
func testSignedTx(t *testing.T, typ string) {
|
||||
amt := uint64(100)
|
||||
toAddr := []byte{20, 143, 25, 63, 16, 177, 83, 29, 91, 91, 54, 23, 233, 46, 190, 121, 122, 34, 86, 54}
|
||||
toAddr := user[1].Address
|
||||
testOneSignTx(t, typ, toAddr, amt)
|
||||
|
||||
toAddr = []byte{20, 143, 24, 63, 16, 17, 83, 29, 90, 91, 52, 2, 0, 41, 190, 121, 122, 34, 86, 54}
|
||||
toAddr = user[2].Address
|
||||
testOneSignTx(t, typ, toAddr, amt)
|
||||
|
||||
toAddr = []byte{0, 0, 4, 0, 0, 4, 0, 0, 4, 91, 52, 2, 0, 41, 190, 121, 122, 34, 86, 54}
|
||||
toAddr = user[3].Address
|
||||
testOneSignTx(t, typ, toAddr, amt)
|
||||
}
|
||||
|
||||
@@ -71,7 +73,7 @@ func testOneSignTx(t *testing.T, typ string, addr []byte, amt uint64) {
|
||||
|
||||
func testBroadcastTx(t *testing.T, typ string) {
|
||||
amt := uint64(100)
|
||||
toAddr := []byte{20, 143, 25, 63, 16, 177, 83, 29, 91, 91, 54, 23, 233, 46, 190, 121, 122, 34, 86, 54}
|
||||
toAddr := user[1].Address
|
||||
tx := makeDefaultSendTxSigned(t, typ, toAddr, amt)
|
||||
receipt := broadcastTx(t, typ, tx)
|
||||
if receipt.CreatesContract > 0 {
|
||||
@@ -120,10 +122,7 @@ func testGetStorage(t *testing.T, typ string) {
|
||||
}
|
||||
|
||||
// allow it to get mined
|
||||
waitForEvent(t, con, eid, true, func() {
|
||||
}, func(eid string, b []byte) error {
|
||||
return nil
|
||||
})
|
||||
waitForEvent(t, con, eid, true, func() {}, doNothing)
|
||||
mempoolCount = 0
|
||||
|
||||
v := getStorage(t, typ, contractAddr, []byte{0x1})
|
||||
@@ -179,10 +178,7 @@ func testCall(t *testing.T, typ string) {
|
||||
}
|
||||
|
||||
// allow it to get mined
|
||||
waitForEvent(t, con, eid, true, func() {
|
||||
}, func(eid string, b []byte) error {
|
||||
return nil
|
||||
})
|
||||
waitForEvent(t, con, eid, true, func() {}, doNothing)
|
||||
mempoolCount = 0
|
||||
|
||||
// run a call through the contract
|
||||
@@ -192,6 +188,7 @@ func testCall(t *testing.T, typ string) {
|
||||
}
|
||||
|
||||
func testNameReg(t *testing.T, typ string) {
|
||||
client := clients[typ]
|
||||
con := newWSCon(t)
|
||||
eid := types.EventStringNewBlock()
|
||||
subscribe(t, con, eid)
|
||||
@@ -200,23 +197,39 @@ func testNameReg(t *testing.T, typ string) {
|
||||
con.Close()
|
||||
}()
|
||||
|
||||
// register a new name, check if its there
|
||||
amt, fee := uint64(6969), uint64(1000)
|
||||
// since entries ought to be unique and these run against different clients, we append the typ
|
||||
name := "ye-old-domain-name-" + typ
|
||||
data := "these are amongst the things I wish to bestow upon the youth of generations come: a safe supply of honey, and a better money. For what else shall they need?"
|
||||
name := "ye_old_domain_name_" + typ
|
||||
data := "these are amongst the things I wish to bestow upon the youth of generations come: a safe supply of honey, and a better money. For what else shall they need"
|
||||
|
||||
tx := makeDefaultNameTx(t, typ, name, data, amt, fee)
|
||||
broadcastTx(t, typ, tx)
|
||||
|
||||
// allow it to get mined
|
||||
waitForEvent(t, con, eid, true, func() {
|
||||
}, func(eid string, b []byte) error {
|
||||
return nil
|
||||
})
|
||||
|
||||
waitForEvent(t, con, eid, true, func() {}, doNothing)
|
||||
mempoolCount = 0
|
||||
entry := getNameRegEntry(t, typ, name)
|
||||
|
||||
if entry.Data != data {
|
||||
t.Fatal(fmt.Sprintf("Got %s, expected %s", entry.Data, data))
|
||||
}
|
||||
|
||||
// update the data as the owner, make sure still there
|
||||
data = "if not now, when"
|
||||
tx = makeDefaultNameTx(t, typ, name, data, amt, fee)
|
||||
broadcastTx(t, typ, tx)
|
||||
waitForEvent(t, con, eid, true, func() {}, doNothing)
|
||||
mempoolCount = 0
|
||||
entry = getNameRegEntry(t, typ, name)
|
||||
if entry.Data != data {
|
||||
t.Fatal(fmt.Sprintf("Got %s, expected %s", entry.Data, data))
|
||||
}
|
||||
|
||||
// try to update as non owner, should fail
|
||||
nonce := getNonce(t, typ, user[1].Address)
|
||||
data2 := "this is not my beautiful house"
|
||||
tx = types.NewNameTxWithNonce(user[1].PubKey, name, data2, amt, fee, nonce)
|
||||
tx.Sign(user[1])
|
||||
_, err := client.BroadcastTx(tx)
|
||||
if err == nil {
|
||||
t.Fatal("Expected error on NameTx")
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -527,7 +527,7 @@ func ExecTx(blockCache *BlockCache, tx_ types.Tx, runCall bool, evc events.Firea
|
||||
// ensure we are owner
|
||||
if bytes.Compare(entry.Owner, tx.Input.Address) != 0 {
|
||||
log.Debug(Fmt("Sender %X is trying to update a name (%s) for which he is not owner", tx.Input.Address, tx.Name))
|
||||
return types.ErrTxInvalidAddress // (?)
|
||||
return types.ErrIncorrectOwner
|
||||
}
|
||||
} else {
|
||||
expired = true
|
||||
|
||||
@@ -20,6 +20,7 @@ var (
|
||||
ErrTxInvalidPubKey = errors.New("Error invalid pubkey")
|
||||
ErrTxInvalidSignature = errors.New("Error invalid signature")
|
||||
ErrTxInvalidString = errors.New("Error invalid string")
|
||||
ErrIncorrectOwner = errors.New("Error incorrect owner")
|
||||
)
|
||||
|
||||
type ErrTxInvalidSequence struct {
|
||||
|
||||
Reference in New Issue
Block a user