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.Nil(t, err)
55 assert.True(t, core.CheckBlockPoW(block, node.Bc.Difficulty))
56 assert.True(t, core.VerifyBlockSignature(&node.PrivK.PublicKey, block))
57}
58
59func TestBlockFromPendingTxsIteration(t *testing.T) {
60 dir, err := ioutil.TempDir("", "db")
61 assert.Nil(t, err)
62 db, err := db.New(dir)
63 assert.Nil(t, err)
64
65 node, err := NewNode(db, uint64(1))
66 assert.Nil(t, err)
67
68 addr0 := core.Address(core.HashBytes([]byte("addr0")))
69 addr1 := core.Address(core.HashBytes([]byte("addr1")))
70 for i := 0; i < 10; i++ {
71 tx := core.NewTx(addr0, addr1, []core.Input{}, []core.Output{})
72 node.AddToPendingTxs(*tx)
73 }
74 block, err := node.BlockFromPendingTxs()
75 assert.Nil(t, err)
76 assert.True(t, core.CheckBlockPoW(block, node.Bc.Difficulty))
77 assert.True(t, core.VerifyBlockSignature(&node.PrivK.PublicKey, block))
78}