forked from TrueCloudLab/neoneo-go
smartcontract: refactor manifest.FromStackItem test
We need a good case to ensure that error cases constructed well.
This commit is contained in:
parent
50fc9bf766
commit
efe9bee1ff
1 changed files with 27 additions and 47 deletions
|
@ -296,56 +296,36 @@ func TestManifestToStackItem(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestManifest_FromStackItemErrors(t *testing.T) {
|
func TestManifest_FromStackItemErrors(t *testing.T) {
|
||||||
|
name := stackitem.NewByteArray([]byte{})
|
||||||
|
groups := stackitem.NewArray([]stackitem.Item{})
|
||||||
|
features := stackitem.NewMap()
|
||||||
|
sStandards := stackitem.NewArray([]stackitem.Item{})
|
||||||
|
abi := stackitem.NewStruct([]stackitem.Item{stackitem.NewArray([]stackitem.Item{}), stackitem.NewArray([]stackitem.Item{})})
|
||||||
|
permissions := stackitem.NewArray([]stackitem.Item{})
|
||||||
|
trusts := stackitem.NewArray([]stackitem.Item{})
|
||||||
|
extra := stackitem.NewByteArray([]byte{})
|
||||||
|
|
||||||
|
// check OK
|
||||||
|
goodSI := []stackitem.Item{name, groups, features, sStandards, abi, permissions, trusts, extra}
|
||||||
|
m := new(Manifest)
|
||||||
|
require.NoError(t, m.FromStackItem(stackitem.NewStruct(goodSI)))
|
||||||
|
|
||||||
errCases := map[string]stackitem.Item{
|
errCases := map[string]stackitem.Item{
|
||||||
"not a struct": stackitem.NewArray([]stackitem.Item{}),
|
"not a struct": stackitem.NewArray([]stackitem.Item{}),
|
||||||
"invalid length": stackitem.NewStruct([]stackitem.Item{}),
|
"invalid length": stackitem.NewStruct([]stackitem.Item{}),
|
||||||
"invalid name type": stackitem.NewStruct([]stackitem.Item{stackitem.NewInterop(nil), stackitem.Null{}, stackitem.Null{}, stackitem.Null{}, stackitem.Null{}, stackitem.Null{}, stackitem.Null{}}),
|
"invalid name type": stackitem.NewStruct(append([]stackitem.Item{stackitem.NewInterop(nil)}, goodSI[1:]...)),
|
||||||
"invalid groups type": stackitem.NewStruct([]stackitem.Item{stackitem.NewByteArray([]byte{}), stackitem.Null{}, stackitem.Null{}, stackitem.Null{}, stackitem.Null{}, stackitem.Null{}, stackitem.Null{}}),
|
"invalid Groups type": stackitem.NewStruct(append([]stackitem.Item{name, stackitem.Null{}}, goodSI[2:]...)),
|
||||||
"invalid group": stackitem.NewStruct([]stackitem.Item{stackitem.NewByteArray([]byte{}), stackitem.NewArray([]stackitem.Item{stackitem.Null{}}), stackitem.Null{}, stackitem.Null{}, stackitem.Null{}, stackitem.Null{}, stackitem.Null{}}),
|
"invalid group": stackitem.NewStruct(append([]stackitem.Item{name, stackitem.NewArray([]stackitem.Item{stackitem.Null{}})}, goodSI[2:]...)),
|
||||||
"invalid supported standards type": stackitem.NewStruct([]stackitem.Item{stackitem.NewByteArray([]byte{}), stackitem.NewArray([]stackitem.Item{}), stackitem.Null{}, stackitem.Null{}, stackitem.Null{}, stackitem.Null{}, stackitem.Null{}}),
|
"invalid Features type": stackitem.NewStruct(append([]stackitem.Item{name, groups, stackitem.Null{}}, goodSI[3:]...)),
|
||||||
"invalid supported standard": stackitem.NewStruct([]stackitem.Item{stackitem.NewByteArray([]byte{}), stackitem.NewArray([]stackitem.Item{}), stackitem.NewArray([]stackitem.Item{stackitem.Null{}}), stackitem.Null{}, stackitem.Null{}, stackitem.Null{}, stackitem.Null{}}),
|
"invalid supported standards type": stackitem.NewStruct(append([]stackitem.Item{name, groups, features, stackitem.Null{}}, goodSI[4:]...)),
|
||||||
"invalid ABI": stackitem.NewStruct([]stackitem.Item{stackitem.NewByteArray([]byte{}), stackitem.NewArray([]stackitem.Item{}), stackitem.NewArray([]stackitem.Item{}), stackitem.Null{}, stackitem.Null{}, stackitem.Null{}, stackitem.Null{}}),
|
"invalid supported standard": stackitem.NewStruct(append([]stackitem.Item{name, groups, features, stackitem.NewArray([]stackitem.Item{stackitem.Null{}})}, goodSI[4:]...)),
|
||||||
"invalid Permissions type": stackitem.NewStruct([]stackitem.Item{
|
"invalid ABI": stackitem.NewStruct(append([]stackitem.Item{name, groups, features, sStandards, stackitem.Null{}}, goodSI[5:]...)),
|
||||||
stackitem.NewByteArray([]byte{}),
|
"invalid Permissions type": stackitem.NewStruct(append([]stackitem.Item{name, groups, features, sStandards, abi, stackitem.Null{}}, goodSI[6:]...)),
|
||||||
stackitem.NewArray([]stackitem.Item{}),
|
"invalid permission": stackitem.NewStruct(append([]stackitem.Item{name, groups, features, sStandards, abi, stackitem.NewArray([]stackitem.Item{stackitem.Null{}})}, goodSI[6:]...)),
|
||||||
stackitem.NewArray([]stackitem.Item{}),
|
"invalid Trusts type": stackitem.NewStruct(append([]stackitem.Item{name, groups, features, sStandards, abi, permissions, stackitem.NewInterop(nil)}, goodSI[7:]...)),
|
||||||
stackitem.NewStruct([]stackitem.Item{stackitem.NewArray([]stackitem.Item{}), stackitem.NewArray([]stackitem.Item{})}),
|
"invalid trust": stackitem.NewStruct(append([]stackitem.Item{name, groups, features, sStandards, abi, permissions, stackitem.NewArray([]stackitem.Item{stackitem.NewInterop(nil)})}, goodSI[7:]...)),
|
||||||
stackitem.Null{}, stackitem.Null{}, stackitem.Null{}}),
|
"invalid Uint160 trust": stackitem.NewStruct(append([]stackitem.Item{name, groups, features, sStandards, abi, permissions, stackitem.NewArray([]stackitem.Item{stackitem.NewByteArray([]byte{1, 2, 3})})}, goodSI[7:]...)),
|
||||||
"invalid permission": stackitem.NewStruct([]stackitem.Item{
|
"invalid extra type": stackitem.NewStruct([]stackitem.Item{name, groups, features, sStandards, abi, permissions, trusts, stackitem.Null{}}),
|
||||||
stackitem.NewByteArray([]byte{}),
|
|
||||||
stackitem.NewArray([]stackitem.Item{}),
|
|
||||||
stackitem.NewArray([]stackitem.Item{}),
|
|
||||||
stackitem.NewStruct([]stackitem.Item{stackitem.NewArray([]stackitem.Item{}), stackitem.NewArray([]stackitem.Item{})}),
|
|
||||||
stackitem.NewArray([]stackitem.Item{stackitem.Null{}}), stackitem.Null{}, stackitem.Null{}}),
|
|
||||||
"invalid Trusts type": stackitem.NewStruct([]stackitem.Item{
|
|
||||||
stackitem.NewByteArray([]byte{}),
|
|
||||||
stackitem.NewArray([]stackitem.Item{}),
|
|
||||||
stackitem.NewArray([]stackitem.Item{}),
|
|
||||||
stackitem.NewStruct([]stackitem.Item{stackitem.NewArray([]stackitem.Item{}), stackitem.NewArray([]stackitem.Item{})}),
|
|
||||||
stackitem.NewArray([]stackitem.Item{}),
|
|
||||||
stackitem.NewInterop(nil), stackitem.Null{}}),
|
|
||||||
"invalid trust": stackitem.NewStruct([]stackitem.Item{
|
|
||||||
stackitem.NewByteArray([]byte{}),
|
|
||||||
stackitem.NewArray([]stackitem.Item{}),
|
|
||||||
stackitem.NewArray([]stackitem.Item{}),
|
|
||||||
stackitem.NewStruct([]stackitem.Item{stackitem.NewArray([]stackitem.Item{}), stackitem.NewArray([]stackitem.Item{})}),
|
|
||||||
stackitem.NewArray([]stackitem.Item{}),
|
|
||||||
stackitem.NewArray([]stackitem.Item{stackitem.Null{}}), stackitem.Null{}}),
|
|
||||||
"invalid Uint160 trust": stackitem.NewStruct([]stackitem.Item{
|
|
||||||
stackitem.NewByteArray([]byte{}),
|
|
||||||
stackitem.NewArray([]stackitem.Item{}),
|
|
||||||
stackitem.NewArray([]stackitem.Item{}),
|
|
||||||
stackitem.NewStruct([]stackitem.Item{stackitem.NewArray([]stackitem.Item{}), stackitem.NewArray([]stackitem.Item{})}),
|
|
||||||
stackitem.NewArray([]stackitem.Item{}),
|
|
||||||
stackitem.NewArray([]stackitem.Item{stackitem.NewByteArray([]byte{1, 2, 3})}), stackitem.Null{}}),
|
|
||||||
"invalid extra type": stackitem.NewStruct([]stackitem.Item{
|
|
||||||
stackitem.NewByteArray([]byte{}),
|
|
||||||
stackitem.NewArray([]stackitem.Item{}),
|
|
||||||
stackitem.NewArray([]stackitem.Item{}),
|
|
||||||
stackitem.NewStruct([]stackitem.Item{stackitem.NewArray([]stackitem.Item{}), stackitem.NewArray([]stackitem.Item{})}),
|
|
||||||
stackitem.NewArray([]stackitem.Item{}),
|
|
||||||
stackitem.NewArray([]stackitem.Item{}),
|
|
||||||
stackitem.Null{}}),
|
|
||||||
}
|
}
|
||||||
for name, errCase := range errCases {
|
for name, errCase := range errCases {
|
||||||
t.Run(name, func(t *testing.T) {
|
t.Run(name, func(t *testing.T) {
|
||||||
|
|
Loading…
Reference in a new issue