diff --git a/state/permissions_test.go b/state/permissions_test.go index dc3484791..eca9820c0 100644 --- a/state/permissions_test.go +++ b/state/permissions_test.go @@ -75,6 +75,7 @@ x - roles: has, add, rm // keys var user = makeUsers(10) +var chainID = "testchain" func makeUsers(n int) []*account.PrivAccount { accounts := []*account.PrivAccount{} @@ -102,6 +103,7 @@ func newBaseGenDoc(globalPerm, accountPerm *ptypes.AccountPermissions) GenesisDo return GenesisDoc{ GenesisTime: time.Now(), + ChainID: chainID, Params: &GenesisParams{ GlobalPermissions: globalPerm, }, @@ -138,7 +140,7 @@ func TestSendFails(t *testing.T) { t.Fatal(err) } tx.AddOutput(user[1].Address, 5) - tx.SignInput(0, user[0]) + tx.SignInput(chainID, 0, user[0]) if err := ExecTx(blockCache, tx, true, nil); err == nil { t.Fatal("Expected error") } else { @@ -151,7 +153,7 @@ func TestSendFails(t *testing.T) { t.Fatal(err) } tx.AddOutput(user[4].Address, 5) - tx.SignInput(0, user[2]) + tx.SignInput(chainID, 0, user[2]) if err := ExecTx(blockCache, tx, true, nil); err == nil { t.Fatal("Expected error") } else { @@ -164,7 +166,7 @@ func TestSendFails(t *testing.T) { t.Fatal(err) } tx.AddOutput(user[4].Address, 5) - tx.SignInput(0, user[3]) + tx.SignInput(chainID, 0, user[3]) if err := ExecTx(blockCache, tx, true, nil); err == nil { t.Fatal("Expected error") } else { @@ -180,7 +182,7 @@ func TestSendFails(t *testing.T) { t.Fatal(err) } tx.AddOutput(user[6].Address, 5) - tx.SignInput(0, user[3]) + tx.SignInput(chainID, 0, user[3]) if err := ExecTx(blockCache, tx, true, nil); err == nil { t.Fatal("Expected error") } else { @@ -202,7 +204,7 @@ func TestCallFails(t *testing.T) { // simple call tx should fail tx, _ := types.NewCallTx(blockCache, user[0].PubKey, user[4].Address, nil, 100, 100, 100) - tx.Sign(user[0]) + tx.Sign(chainID, user[0]) if err := ExecTx(blockCache, tx, true, nil); err == nil { t.Fatal("Expected error") } else { @@ -211,7 +213,7 @@ func TestCallFails(t *testing.T) { // simple call tx with send permission should fail tx, _ = types.NewCallTx(blockCache, user[1].PubKey, user[4].Address, nil, 100, 100, 100) - tx.Sign(user[1]) + tx.Sign(chainID, user[1]) if err := ExecTx(blockCache, tx, true, nil); err == nil { t.Fatal("Expected error") } else { @@ -220,7 +222,7 @@ func TestCallFails(t *testing.T) { // simple call tx with create permission should fail tx, _ = types.NewCallTx(blockCache, user[3].PubKey, user[4].Address, nil, 100, 100, 100) - tx.Sign(user[3]) + tx.Sign(chainID, user[3]) if err := ExecTx(blockCache, tx, true, nil); err == nil { t.Fatal("Expected error") } else { @@ -232,7 +234,7 @@ func TestCallFails(t *testing.T) { // simple call create tx should fail tx, _ = types.NewCallTx(blockCache, user[0].PubKey, nil, nil, 100, 100, 100) - tx.Sign(user[0]) + tx.Sign(chainID, user[0]) if err := ExecTx(blockCache, tx, true, nil); err == nil { t.Fatal("Expected error") } else { @@ -241,7 +243,7 @@ func TestCallFails(t *testing.T) { // simple call create tx with send perm should fail tx, _ = types.NewCallTx(blockCache, user[1].PubKey, nil, nil, 100, 100, 100) - tx.Sign(user[1]) + tx.Sign(chainID, user[1]) if err := ExecTx(blockCache, tx, true, nil); err == nil { t.Fatal("Expected error") } else { @@ -250,7 +252,7 @@ func TestCallFails(t *testing.T) { // simple call create tx with call perm should fail tx, _ = types.NewCallTx(blockCache, user[2].PubKey, nil, nil, 100, 100, 100) - tx.Sign(user[2]) + tx.Sign(chainID, user[2]) if err := ExecTx(blockCache, tx, true, nil); err == nil { t.Fatal("Expected error") } else { @@ -271,7 +273,7 @@ func TestSendPermission(t *testing.T) { t.Fatal(err) } tx.AddOutput(user[1].Address, 5) - tx.SignInput(0, user[0]) + tx.SignInput(chainID, 0, user[0]) if err := ExecTx(blockCache, tx, true, nil); err != nil { t.Fatal("Transaction failed", err) } @@ -285,8 +287,8 @@ func TestSendPermission(t *testing.T) { t.Fatal(err) } tx.AddOutput(user[2].Address, 10) - tx.SignInput(0, user[0]) - tx.SignInput(1, user[1]) + tx.SignInput(chainID, 0, user[0]) + tx.SignInput(chainID, 1, user[1]) if err := ExecTx(blockCache, tx, true, nil); err == nil { t.Fatal("Expected error") } else { @@ -319,7 +321,7 @@ func TestCallPermission(t *testing.T) { // A single input, having the permission, should succeed tx, _ := types.NewCallTx(blockCache, user[0].PubKey, simpleContractAddr, nil, 100, 100, 100) - tx.Sign(user[0]) + tx.Sign(chainID, user[0]) if err := ExecTx(blockCache, tx, true, nil); err != nil { t.Fatal("Transaction failed", err) } @@ -343,7 +345,7 @@ func TestCallPermission(t *testing.T) { // A single input, having the permission, but the contract doesn't have permission tx, _ = types.NewCallTx(blockCache, user[0].PubKey, caller1ContractAddr, nil, 100, 10000, 100) - tx.Sign(user[0]) + tx.Sign(chainID, user[0]) // we need to subscribe to the Receive event to detect the exception _, exception := execTxWaitEvent(t, blockCache, tx, types.EventStringAccReceive(caller1ContractAddr)) // @@ -359,7 +361,7 @@ func TestCallPermission(t *testing.T) { caller1Acc.Permissions.Base.Set(ptypes.Call, true) blockCache.UpdateAccount(caller1Acc) tx, _ = types.NewCallTx(blockCache, user[0].PubKey, caller1ContractAddr, nil, 100, 10000, 100) - tx.Sign(user[0]) + tx.Sign(chainID, user[0]) // we need to subscribe to the Receive event to detect the exception _, exception = execTxWaitEvent(t, blockCache, tx, types.EventStringAccReceive(caller1ContractAddr)) // @@ -389,7 +391,7 @@ func TestCallPermission(t *testing.T) { blockCache.UpdateAccount(caller2Acc) tx, _ = types.NewCallTx(blockCache, user[0].PubKey, caller2ContractAddr, nil, 100, 10000, 100) - tx.Sign(user[0]) + tx.Sign(chainID, user[0]) // we need to subscribe to the Receive event to detect the exception _, exception = execTxWaitEvent(t, blockCache, tx, types.EventStringAccReceive(caller1ContractAddr)) // @@ -407,7 +409,7 @@ func TestCallPermission(t *testing.T) { blockCache.UpdateAccount(caller1Acc) tx, _ = types.NewCallTx(blockCache, user[0].PubKey, caller2ContractAddr, nil, 100, 10000, 100) - tx.Sign(user[0]) + tx.Sign(chainID, user[0]) // we need to subscribe to the Receive event to detect the exception _, exception = execTxWaitEvent(t, blockCache, tx, types.EventStringAccReceive(caller1ContractAddr)) // @@ -433,7 +435,7 @@ func TestCreatePermission(t *testing.T) { // A single input, having the permission, should succeed tx, _ := types.NewCallTx(blockCache, user[0].PubKey, nil, createCode, 100, 100, 100) - tx.Sign(user[0]) + tx.Sign(chainID, user[0]) if err := ExecTx(blockCache, tx, true, nil); err != nil { t.Fatal("Transaction failed", err) } @@ -458,7 +460,7 @@ func TestCreatePermission(t *testing.T) { // A single input, having the permission, should succeed tx, _ = types.NewCallTx(blockCache, user[0].PubKey, nil, createFactoryCode, 100, 100, 100) - tx.Sign(user[0]) + tx.Sign(chainID, user[0]) if err := ExecTx(blockCache, tx, true, nil); err != nil { t.Fatal("Transaction failed", err) } @@ -478,7 +480,7 @@ func TestCreatePermission(t *testing.T) { // A single input, having the permission, should succeed tx, _ = types.NewCallTx(blockCache, user[0].PubKey, contractAddr, createCode, 100, 100, 100) - tx.Sign(user[0]) + tx.Sign(chainID, user[0]) // we need to subscribe to the Receive event to detect the exception _, exception := execTxWaitEvent(t, blockCache, tx, types.EventStringAccReceive(contractAddr)) // if exception == "" { @@ -494,7 +496,7 @@ func TestCreatePermission(t *testing.T) { // A single input, having the permission, should succeed tx, _ = types.NewCallTx(blockCache, user[0].PubKey, contractAddr, createCode, 100, 100, 100) - tx.Sign(user[0]) + tx.Sign(chainID, user[0]) // we need to subscribe to the Receive event to detect the exception _, exception = execTxWaitEvent(t, blockCache, tx, types.EventStringAccReceive(contractAddr)) // if exception != "" { @@ -521,7 +523,7 @@ func TestCreatePermission(t *testing.T) { // this should call the 0 address but not create ... tx, _ = types.NewCallTx(blockCache, user[0].PubKey, contractAddr, createCode, 100, 10000, 100) - tx.Sign(user[0]) + tx.Sign(chainID, user[0]) // we need to subscribe to the Receive event to detect the exception _, exception = execTxWaitEvent(t, blockCache, tx, types.EventStringAccReceive(zeroAddr)) // if exception != "" { @@ -547,8 +549,8 @@ func TestBondPermission(t *testing.T) { t.Fatal(err) } tx.AddOutput(user[1].Address, 5) - tx.SignInput(0, user[1]) - tx.SignBond(user[1]) + tx.SignInput(chainID, 0, user[1]) + tx.SignBond(chainID, user[1]) if err := ExecTx(blockCache, tx, true, nil); err == nil { t.Fatal("Expected error") } else { @@ -578,8 +580,8 @@ func TestBondPermission(t *testing.T) { t.Fatal(err) } tx.AddOutput(user[1].Address, 5) - tx.SignInput(0, user[2]) - tx.SignBond(user[1]) + tx.SignInput(chainID, 0, user[2]) + tx.SignBond(chainID, user[1]) if err := ExecTx(blockCache, tx, true, nil); err == nil { t.Fatal("Expected error") } else { @@ -603,8 +605,8 @@ func TestBondPermission(t *testing.T) { t.Fatal(err) } tx.AddOutput(user[1].Address, 5) - tx.SignInput(0, user[2]) - tx.SignBond(user[1]) + tx.SignInput(chainID, 0, user[2]) + tx.SignBond(chainID, user[1]) if err := ExecTx(blockCache, tx, true, nil); err != nil { t.Fatal("Unexpected error", err) } @@ -625,8 +627,8 @@ func TestBondPermission(t *testing.T) { t.Fatal(err) } tx.AddOutput(user[1].Address, 5) - tx.SignInput(0, user[2]) - tx.SignBond(user[1]) + tx.SignInput(chainID, 0, user[2]) + tx.SignBond(chainID, user[1]) if err := ExecTx(blockCache, tx, true, nil); err != nil { t.Fatal("Unexpected error", err) } @@ -648,9 +650,9 @@ func TestBondPermission(t *testing.T) { t.Fatal(err) } tx.AddOutput(user[1].Address, 5) - tx.SignInput(0, user[1]) - tx.SignInput(1, user[2]) - tx.SignBond(user[1]) + tx.SignInput(chainID, 0, user[1]) + tx.SignInput(chainID, 1, user[2]) + tx.SignBond(chainID, user[1]) if err := ExecTx(blockCache, tx, true, nil); err == nil { t.Fatal("Expected error") } @@ -674,7 +676,7 @@ func TestCreateAccountPermission(t *testing.T) { t.Fatal(err) } tx.AddOutput(user[6].Address, 5) - tx.SignInput(0, user[0]) + tx.SignInput(chainID, 0, user[0]) if err := ExecTx(blockCache, tx, true, nil); err != nil { t.Fatal("Transaction failed", err) } @@ -688,8 +690,8 @@ func TestCreateAccountPermission(t *testing.T) { t.Fatal(err) } tx.AddOutput(user[7].Address, 10) - tx.SignInput(0, user[0]) - tx.SignInput(1, user[1]) + tx.SignInput(chainID, 0, user[0]) + tx.SignInput(chainID, 1, user[1]) if err := ExecTx(blockCache, tx, true, nil); err == nil { t.Fatal("Expected error") } else { @@ -706,8 +708,8 @@ func TestCreateAccountPermission(t *testing.T) { } tx.AddOutput(user[7].Address, 4) tx.AddOutput(user[4].Address, 6) - tx.SignInput(0, user[0]) - tx.SignInput(1, user[1]) + tx.SignInput(chainID, 0, user[0]) + tx.SignInput(chainID, 1, user[1]) if err := ExecTx(blockCache, tx, true, nil); err == nil { t.Fatal("Expected error") } else { @@ -726,8 +728,8 @@ func TestCreateAccountPermission(t *testing.T) { t.Fatal(err) } tx.AddOutput(user[7].Address, 10) - tx.SignInput(0, user[0]) - tx.SignInput(1, user[1]) + tx.SignInput(chainID, 0, user[0]) + tx.SignInput(chainID, 1, user[1]) if err := ExecTx(blockCache, tx, true, nil); err != nil { t.Fatal("Unexpected error", err) } @@ -742,8 +744,8 @@ func TestCreateAccountPermission(t *testing.T) { } tx.AddOutput(user[7].Address, 7) tx.AddOutput(user[4].Address, 3) - tx.SignInput(0, user[0]) - tx.SignInput(1, user[1]) + tx.SignInput(chainID, 0, user[0]) + tx.SignInput(chainID, 1, user[1]) if err := ExecTx(blockCache, tx, true, nil); err != nil { t.Fatal("Unexpected error", err) } @@ -771,7 +773,7 @@ func TestCreateAccountPermission(t *testing.T) { // A single input, having the permission, but the contract doesn't have permission txCall, _ := types.NewCallTx(blockCache, user[0].PubKey, caller1ContractAddr, nil, 100, 10000, 100) - txCall.Sign(user[0]) + txCall.Sign(chainID, user[0]) // we need to subscribe to the Receive event to detect the exception _, exception := execTxWaitEvent(t, blockCache, txCall, types.EventStringAccReceive(caller1ContractAddr)) // @@ -786,7 +788,7 @@ func TestCreateAccountPermission(t *testing.T) { blockCache.UpdateAccount(caller1Acc) // A single input, having the permission, but the contract doesn't have permission txCall, _ = types.NewCallTx(blockCache, user[0].PubKey, caller1ContractAddr, nil, 100, 10000, 100) - txCall.Sign(user[0]) + txCall.Sign(chainID, user[0]) // we need to subscribe to the Receive event to detect the exception _, exception = execTxWaitEvent(t, blockCache, txCall, types.EventStringAccReceive(caller1ContractAddr)) // @@ -1106,7 +1108,7 @@ func testSNativeCALLExpectPass(t *testing.T, blockCache *BlockCache, doug *accou addr = snativeAddress } tx, _ := types.NewCallTx(blockCache, user[0].PubKey, addr, data, 100, 10000, 100) - tx.Sign(user[0]) + tx.Sign(chainID, user[0]) ev, exception := execTxWaitEvent(t, blockCache, tx, types.EventStringAccReceive(snativeAddress)) // if exception != "" { t.Fatal("Unexpected exception", exception) @@ -1130,7 +1132,7 @@ func testSNativeCALLExpectFail(t *testing.T, blockCache *BlockCache, doug *accou addr = snativeAddress } tx, _ := types.NewCallTx(blockCache, user[0].PubKey, addr, data, 100, 10000, 100) - tx.Sign(user[0]) + tx.Sign(chainID, user[0]) fmt.Println("subscribing to", types.EventStringAccReceive(snativeAddress)) _, exception := execTxWaitEvent(t, blockCache, tx, types.EventStringAccReceive(snativeAddress)) if exception == "" {