arnaucube
arnaucube/slowlorisdbPublic Self-hosted repository
slowlorisdb/node/node_test.go
node/node_test.goRaw
 1package node
 2
 3import (
 4	"io/ioutil"
 5	"testing"
 6
 7	"github.com/arnaucube/slowlorisdb/core"
 8	"github.com/arnaucube/slowlorisdb/db"
 9	"github.com/stretchr/testify/assert"
10)
11
12func TestNode(t *testing.T) {
13	dir, err := ioutil.TempDir("", "db")
14	assert.Nil(t, err)
15	db, err := db.New(dir)
16	assert.Nil(t, err)
17
18	node, err := NewNode(db, uint64(1))
19	assert.Nil(t, err)
20
21	assert.Equal(t, node.Addr, core.AddressFromPrivK(node.PrivK))
22}
23
24func TestNodeSignature(t *testing.T) {
25	dir, err := ioutil.TempDir("", "db")
26	assert.Nil(t, err)
27	db, err := db.New(dir)
28	assert.Nil(t, err)
29
30	node, err := NewNode(db, uint64(1))
31	assert.Nil(t, err)
32
33	m := []byte("test")
34	sig, err := node.Sign(m)
35	assert.Nil(t, err)
36	pubK := node.PrivK.PublicKey
37	assert.True(t, core.VerifySignature(&pubK, m, *sig))
38}
39
40func TestBlockFromPendingTxs(t *testing.T) {
41	dir, err := ioutil.TempDir("", "db")
42	assert.Nil(t, err)
43	db, err := db.New(dir)
44	assert.Nil(t, err)
45
46	node, err := NewNode(db, uint64(1))
47	assert.Nil(t, err)
48
49	addr0 := core.Address(core.HashBytes([]byte("addr0")))
50	addr1 := core.Address(core.HashBytes([]byte("addr1")))
51	tx := core.NewTx(addr0, addr1, []core.Input{}, []core.Output{})
52	node.AddToPendingTxs(*tx)
53	block, err := node.BlockFromPendingTxs()
54	assert.True(t, core.CheckBlockPoW(block, node.Bc.Difficulty))
55	// TODO add VerifyBlockSignature
56}
57
58// func TestBlockFromPendingTxsIteration(t *testing.T) {
59//         dir, err := ioutil.TempDir("", "db")
60//         assert.Nil(t, err)
61//         db, err := db.New(dir)
62//         assert.Nil(t, err)
63//
64//         node, err := NewNode(db, uint64(1))
65//         assert.Nil(t, err)
66//
67//         addr0 := core.Address(core.HashBytes([]byte("addr0")))
68//         addr1 := core.Address(core.HashBytes([]byte("addr1")))
69//         for i := 0; i < 10; i++ {
70//                 tx := core.NewTx(addr0, addr1, []core.Input{}, []core.Output{})
71//
72//         }
73// }