arnaucube
arnaucube/slowlorisdbPublic Self-hosted repository
slowlorisdb/node/node_test.go
node/node_test.goRaw
  1package node
  2
  3import (
  4	"fmt"
  5	"io/ioutil"
  6	"testing"
  7
  8	"github.com/arnaucube/slowlorisdb/core"
  9	"github.com/arnaucube/slowlorisdb/db"
 10	"github.com/stretchr/testify/assert"
 11)
 12
 13func TestNode(t *testing.T) {
 14	dir, err := ioutil.TempDir("", "db")
 15	assert.Nil(t, err)
 16	db, err := db.New(dir)
 17	assert.Nil(t, err)
 18
 19	privK, err := core.NewKey()
 20	assert.Nil(t, err)
 21
 22	dif := uint64(1)
 23	bc := core.NewBlockchain(db, dif)
 24	node, err := NewNode(privK, bc, true)
 25	assert.Nil(t, err)
 26
 27	assert.Equal(t, node.Addr, core.AddressFromPrivK(node.PrivK))
 28}
 29
 30func TestNodeSignature(t *testing.T) {
 31	dir, err := ioutil.TempDir("", "db")
 32	assert.Nil(t, err)
 33	db, err := db.New(dir)
 34	assert.Nil(t, err)
 35
 36	privK, err := core.NewKey()
 37	assert.Nil(t, err)
 38
 39	dif := uint64(1)
 40	bc := core.NewBlockchain(db, dif)
 41	node, err := NewNode(privK, bc, true)
 42	assert.Nil(t, err)
 43
 44	m := []byte("test")
 45	sig, err := node.Sign(m)
 46	assert.Nil(t, err)
 47	pubK := node.PrivK.PublicKey
 48	assert.True(t, core.VerifySignature(&pubK, m, *sig))
 49}
 50
 51func TestBlockFromPendingTxs(t *testing.T) {
 52	dir, err := ioutil.TempDir("", "db")
 53	assert.Nil(t, err)
 54	db, err := db.New(dir)
 55	assert.Nil(t, err)
 56
 57	privK, err := core.NewKey()
 58	assert.Nil(t, err)
 59
 60	dif := uint64(1)
 61	bc := core.NewBlockchain(db, dif)
 62	node, err := NewNode(privK, bc, true)
 63	assert.Nil(t, err)
 64
 65	addr0 := core.Address(core.HashBytes([]byte("addr0")))
 66	addr1 := core.Address(core.HashBytes([]byte("addr1")))
 67	tx := core.NewTx(addr0, addr1, []core.Input{}, []core.Output{})
 68	node.AddToPendingTxs(*tx)
 69	block, err := node.BlockFromPendingTxs()
 70	assert.Nil(t, err)
 71	fmt.Println("h", block.Hash)
 72	assert.True(t, core.CheckBlockPoW(block, node.Bc.Difficulty))
 73	assert.True(t, node.Bc.VerifyBlock(block))
 74}
 75
 76func TestBlockFromPendingTxsIteration(t *testing.T) {
 77	dir, err := ioutil.TempDir("", "db")
 78	assert.Nil(t, err)
 79	db, err := db.New(dir)
 80	assert.Nil(t, err)
 81
 82	privK, err := core.NewKey()
 83	assert.Nil(t, err)
 84
 85	dif := uint64(1)
 86	bc := core.NewBlockchain(db, dif)
 87	node, err := NewNode(privK, bc, true)
 88	assert.Nil(t, err)
 89
 90	addr0 := core.Address(core.HashBytes([]byte("addr0")))
 91	addr1 := core.Address(core.HashBytes([]byte("addr1")))
 92	for i := 0; i < 10; i++ {
 93		tx := core.NewTx(addr0, addr1, []core.Input{}, []core.Output{})
 94		node.AddToPendingTxs(*tx)
 95	}
 96	block, err := node.BlockFromPendingTxs()
 97	assert.Nil(t, err)
 98	assert.True(t, core.CheckBlockPoW(block, node.Bc.Difficulty))
 99	assert.True(t, node.Bc.VerifyBlock(block))
100}