github.com/igggame/nebulas-go@v2.1.0+incompatible/nf/nvm/engine_require_test.go (about) 1 package nvm 2 3 import ( 4 "io/ioutil" 5 "testing" 6 7 "github.com/nebulasio/go-nebulas/consensus/dpos" 8 "github.com/nebulasio/go-nebulas/core/state" 9 "github.com/nebulasio/go-nebulas/storage" 10 "github.com/stretchr/testify/assert" 11 ) 12 13 func TestRequireModule(t *testing.T) { 14 tests := []struct { 15 name string 16 contractPath string 17 sourceType string 18 initArgs string 19 }{ 20 {"deploy test_require_module.js", "./test/test_require_module.js", "js", ""}, 21 } 22 23 for _, tt := range tests { 24 t.Run(tt.name, func(t *testing.T) { 25 data, err := ioutil.ReadFile(tt.contractPath) 26 assert.Nil(t, err, "contract path read error") 27 28 mem, _ := storage.NewMemoryStorage() 29 context, _ := state.NewWorldState(dpos.NewDpos(), mem) 30 owner, err := context.GetOrCreateUserAccount([]byte("account1")) 31 assert.Nil(t, err) 32 owner.AddBalance(newUint128FromIntWrapper(10000000)) 33 contract, _ := context.CreateContractAccount([]byte("account2"), nil, nil) 34 35 ctx, err := NewContext(mockBlock(), mockTransaction(), contract, context) 36 engine := NewV8Engine(ctx) 37 engine.SetExecutionLimits(10000, 10000000) 38 _, err = engine.DeployAndInit(string(data), tt.sourceType, tt.initArgs) 39 assert.Nil(t, err) 40 engine.Dispose() 41 42 engine = NewV8Engine(ctx) 43 engine.SetExecutionLimits(10000, 10000000) 44 _, err = engine.Call(string(data), tt.sourceType, "requireNULL", "") 45 assert.NotNil(t, err) 46 engine.Dispose() 47 48 engine = NewV8Engine(ctx) 49 engine.SetExecutionLimits(10000, 10000000) 50 _, err = engine.Call(string(data), tt.sourceType, "requireNotExistPath", "") 51 assert.NotNil(t, err) 52 engine.Dispose() 53 54 engine = NewV8Engine(ctx) 55 engine.SetExecutionLimits(10000, 10000000) 56 _, err = engine.Call(string(data), tt.sourceType, "requireCurPath", "") 57 assert.NotNil(t, err) 58 engine.Dispose() 59 60 engine = NewV8Engine(ctx) 61 engine.SetExecutionLimits(10000, 10000000) 62 _, err = engine.Call(string(data), tt.sourceType, "requireNotExistFile", "") 63 assert.NotNil(t, err) 64 engine.Dispose() 65 }) 66 } 67 }