forked from TrueCloudLab/frostfs-sdk-go
[#42] Add ResolveContractHash method
Signed-off-by: Pavel Pogodaev <p.pogodaev@yadro.com>
This commit is contained in:
parent
998fe1a7ab
commit
b9afe7a2f9
2 changed files with 127 additions and 0 deletions
|
@ -154,3 +154,86 @@ func TestNNS_ResolveContainerDomain(t *testing.T) {
|
|||
require.Equal(t, id, res)
|
||||
})
|
||||
}
|
||||
|
||||
func TestNNS_ResolveContractHash(t *testing.T) {
|
||||
var testContainerDomain container.Domain
|
||||
testContainerDomain.SetName("some_container")
|
||||
|
||||
var nnsContract util.Uint160
|
||||
|
||||
rand.Read(nnsContract[:])
|
||||
|
||||
testC := &testNeoClient{
|
||||
t: t,
|
||||
expectedContract: nnsContract,
|
||||
}
|
||||
|
||||
n := NNS{
|
||||
nnsContract: nnsContract,
|
||||
invoker: testC,
|
||||
}
|
||||
|
||||
t.Run("invocation failure", func(t *testing.T) {
|
||||
err1 := errors.New("invoke err")
|
||||
testC.err = err1
|
||||
|
||||
_, err2 := n.ResolveContractHash(testContainerDomain)
|
||||
require.ErrorIs(t, err2, err1)
|
||||
})
|
||||
|
||||
testC.err = nil
|
||||
|
||||
t.Run("fault exception", func(t *testing.T) {
|
||||
_, err := n.ResolveContractHash(testContainerDomain)
|
||||
require.Error(t, err)
|
||||
})
|
||||
|
||||
testC.res.State = vmstate.Halt.String()
|
||||
|
||||
t.Run("empty stack", func(t *testing.T) {
|
||||
_, err := n.ResolveContractHash(testContainerDomain)
|
||||
require.Error(t, err)
|
||||
})
|
||||
|
||||
testC.res.Stack = make([]stackitem.Item, 1)
|
||||
|
||||
t.Run("non-array last stack item", func(t *testing.T) {
|
||||
testC.res.Stack[0] = stackitem.NewBigInteger(big.NewInt(11))
|
||||
|
||||
_, err := n.ResolveContractHash(testContainerDomain)
|
||||
require.Error(t, err)
|
||||
})
|
||||
|
||||
t.Run("null array", func(t *testing.T) {
|
||||
testC.res.Stack[0] = stackitem.Null{}
|
||||
|
||||
_, err := n.ResolveContractHash(testContainerDomain)
|
||||
require.ErrorIs(t, err, errNotFound)
|
||||
})
|
||||
|
||||
t.Run("array stack item with non-slice value", func(t *testing.T) {
|
||||
testC.res.Stack[0] = brokenArrayStackItem{}
|
||||
|
||||
_, err := n.ResolveContractHash(testContainerDomain)
|
||||
require.Error(t, err)
|
||||
})
|
||||
|
||||
arr := make([]stackitem.Item, 2)
|
||||
testC.res.Stack[0] = stackitem.NewArray(arr)
|
||||
|
||||
t.Run("non-bytes array element", func(t *testing.T) {
|
||||
arr[0] = stackitem.NewArray(nil)
|
||||
|
||||
_, err := n.ResolveContractHash(testContainerDomain)
|
||||
require.Error(t, err)
|
||||
})
|
||||
|
||||
arr[0] = stackitem.NewByteArray([]byte("some byte array 1"))
|
||||
|
||||
t.Run("non-container array elements", func(t *testing.T) {
|
||||
arr[1] = stackitem.NewByteArray([]byte("some byte array 2"))
|
||||
|
||||
_, err := n.ResolveContractHash(testContainerDomain)
|
||||
require.Error(t, err)
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue