Fix tests for unique inner ring invoke checker
This commit is contained in:
parent
dc84dde87b
commit
f10d346925
2 changed files with 17 additions and 2 deletions
|
@ -434,7 +434,7 @@ func delSerializedIR(ctx storage.Context, key string, value []byte) bool {
|
|||
return false
|
||||
}
|
||||
|
||||
// isInnerRingInvoker returns public key of inner ring node that invoked contract.
|
||||
// innerRingInvoker returns public key of inner ring node that invoked contract.
|
||||
func innerRingInvoker(ir []node) []byte {
|
||||
for i := 0; i < len(ir); i++ {
|
||||
node := ir[i]
|
||||
|
|
|
@ -44,6 +44,7 @@ func TestContract(t *testing.T) {
|
|||
contract := initGoContract(t, contractTemplate, nodeCount)
|
||||
|
||||
plug.cgas[contractStr] = util.Fixed8FromInt64(1000)
|
||||
plug.invokeKey = crypto.MarshalPublicKey(&contract.privs[0].PublicKey)
|
||||
|
||||
var args []interface{}
|
||||
for i := range contract.privs {
|
||||
|
@ -107,6 +108,7 @@ func TestContract(t *testing.T) {
|
|||
|
||||
// call it threshold amount of times
|
||||
for i := 0; i < 2*nodeCount/3+1; i++ {
|
||||
plug.invokeKey = crypto.MarshalPublicKey(&contract.privs[i].PublicKey)
|
||||
v := initVM(contract, plug)
|
||||
|
||||
loadArg(t, v, "Cheque", []interface{}{id, user, int(gas), lockAcc})
|
||||
|
@ -260,6 +262,7 @@ type storagePlugin struct {
|
|||
interops map[uint32]vm.InteropFunc
|
||||
storageOps []kv
|
||||
notify []interface{}
|
||||
invokeKey []byte
|
||||
}
|
||||
|
||||
func newStoragePlugin(t *testing.T) *storagePlugin {
|
||||
|
@ -290,6 +293,7 @@ func newStoragePlugin(t *testing.T) *storagePlugin {
|
|||
}
|
||||
s.interops[getID("System.ExecutionEngine.GetScriptContainer")] = s.GetScriptContainer
|
||||
s.interops[getID("Neo.Transaction.GetHash")] = s.GetHash
|
||||
s.interops[getID("Neo.Blockchain.GetHeight")] = s.GetHeight
|
||||
|
||||
return s
|
||||
}
|
||||
|
@ -402,7 +406,13 @@ func (s *storagePlugin) GetTrigger(v *vm.VM) error {
|
|||
}
|
||||
|
||||
func (s *storagePlugin) CheckWitness(v *vm.VM) error {
|
||||
v.Estack().PushVal(true)
|
||||
key := v.Estack().Pop().Value().([]byte)
|
||||
if bytes.Equal(key, s.invokeKey) {
|
||||
v.Estack().PushVal(true)
|
||||
} else {
|
||||
v.Estack().PushVal(false)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -423,6 +433,11 @@ func (s *storagePlugin) GetHash(v *vm.VM) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (s *storagePlugin) GetHeight(v *vm.VM) error {
|
||||
v.Estack().PushVal(42)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *storagePlugin) logStorage(op string, key, value []byte) {
|
||||
s.storageOps = append(s.storageOps, kv{
|
||||
Operation: op,
|
||||
|
|
Loading…
Reference in a new issue