package node import ( "io/ioutil" "testing" "github.com/arnaucube/slowlorisdb/core" "github.com/arnaucube/slowlorisdb/db" "github.com/stretchr/testify/assert" ) func TestNode(t *testing.T) { dir, err := ioutil.TempDir("", "db") assert.Nil(t, err) db, err := db.New(dir) assert.Nil(t, err) node, err := NewNode(db, uint64(1)) assert.Nil(t, err) assert.Equal(t, node.Addr, core.AddressFromPrivK(node.PrivK)) } func TestNodeSignature(t *testing.T) { dir, err := ioutil.TempDir("", "db") assert.Nil(t, err) db, err := db.New(dir) assert.Nil(t, err) node, err := NewNode(db, uint64(1)) assert.Nil(t, err) m := []byte("test") sig, err := node.Sign(m) assert.Nil(t, err) pubK := node.PrivK.PublicKey assert.True(t, core.VerifySignature(&pubK, m, *sig)) } func TestBlockFromPendingTxs(t *testing.T) { dir, err := ioutil.TempDir("", "db") assert.Nil(t, err) db, err := db.New(dir) assert.Nil(t, err) node, err := NewNode(db, uint64(1)) assert.Nil(t, err) addr0 := core.Address(core.HashBytes([]byte("addr0"))) addr1 := core.Address(core.HashBytes([]byte("addr1"))) tx := core.NewTx(addr0, addr1, []core.Input{}, []core.Output{}) node.AddToPendingTxs(*tx) block, err := node.BlockFromPendingTxs() assert.Nil(t, err) assert.True(t, core.CheckBlockPoW(block, node.Bc.Difficulty)) assert.True(t, core.VerifyBlockSignature(&node.PrivK.PublicKey, block)) } func TestBlockFromPendingTxsIteration(t *testing.T) { dir, err := ioutil.TempDir("", "db") assert.Nil(t, err) db, err := db.New(dir) assert.Nil(t, err) node, err := NewNode(db, uint64(1)) assert.Nil(t, err) addr0 := core.Address(core.HashBytes([]byte("addr0"))) addr1 := core.Address(core.HashBytes([]byte("addr1"))) for i := 0; i < 10; i++ { tx := core.NewTx(addr0, addr1, []core.Input{}, []core.Output{}) node.AddToPendingTxs(*tx) } block, err := node.BlockFromPendingTxs() assert.Nil(t, err) assert.True(t, core.CheckBlockPoW(block, node.Bc.Difficulty)) assert.True(t, core.VerifyBlockSignature(&node.PrivK.PublicKey, block)) }