forked from TrueCloudLab/neoneo-go
47 lines
1.7 KiB
Go
47 lines
1.7 KiB
Go
package native_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/nspcc-dev/neo-go/pkg/core/native/nativenames"
|
|
"github.com/nspcc-dev/neo-go/pkg/core/native/noderoles"
|
|
"github.com/nspcc-dev/neo-go/pkg/crypto/keys"
|
|
"github.com/nspcc-dev/neo-go/pkg/neotest"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func newDesignateClient(t *testing.T) *neotest.ContractInvoker {
|
|
return newNativeClient(t, nativenames.Designation)
|
|
}
|
|
|
|
func TestDesignate_DesignateAsRole(t *testing.T) {
|
|
c := newDesignateClient(t)
|
|
e := c.Executor
|
|
designateInvoker := c.WithSigners(c.Committee)
|
|
|
|
priv, err := keys.NewPrivateKey()
|
|
require.NoError(t, err)
|
|
pubs := keys.PublicKeys{priv.PublicKey()}
|
|
|
|
setNodesByRole(t, designateInvoker, false, 0xFF, pubs)
|
|
setNodesByRole(t, designateInvoker, true, noderoles.Oracle, pubs)
|
|
index := e.Chain.BlockHeight() + 1
|
|
checkNodeRoles(t, designateInvoker, false, 0xFF, 0, nil)
|
|
checkNodeRoles(t, designateInvoker, false, noderoles.Oracle, 100500, nil)
|
|
checkNodeRoles(t, designateInvoker, true, noderoles.Oracle, 0, keys.PublicKeys{}) // returns an empty list
|
|
checkNodeRoles(t, designateInvoker, true, noderoles.Oracle, index, pubs) // returns pubs
|
|
|
|
priv1, err := keys.NewPrivateKey()
|
|
require.NoError(t, err)
|
|
pubs = keys.PublicKeys{priv1.PublicKey()}
|
|
setNodesByRole(t, designateInvoker, true, noderoles.StateValidator, pubs)
|
|
checkNodeRoles(t, designateInvoker, true, noderoles.StateValidator, e.Chain.BlockHeight()+1, pubs)
|
|
|
|
t.Run("neofs", func(t *testing.T) {
|
|
priv, err := keys.NewPrivateKey()
|
|
require.NoError(t, err)
|
|
pubs = keys.PublicKeys{priv.PublicKey()}
|
|
setNodesByRole(t, designateInvoker, true, noderoles.NeoFSAlphabet, pubs)
|
|
checkNodeRoles(t, designateInvoker, true, noderoles.NeoFSAlphabet, e.Chain.BlockHeight()+1, pubs)
|
|
})
|
|
}
|