Skip to content

Commit

Permalink
refactor: integration tests use gotest.tools/golden so that compiler …
Browse files Browse the repository at this point in the history
…tests can easily update values. Support Lima AEVM/FATE option.
  • Loading branch information
randomshinichi committed Sep 11, 2019
1 parent df1249b commit 8618d52
Show file tree
Hide file tree
Showing 13 changed files with 56 additions and 14 deletions.
30 changes: 22 additions & 8 deletions integration_test/compiler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,15 @@ import (
"testing"

"github.com/aeternity/aepp-sdk-go/aeternity"
"github.com/aeternity/aepp-sdk-go/golden"
"gotest.tools/golden"
)

func TestCompiler(t *testing.T) {
simplestorageSource := "simplestorage.aes"
simplestorageBytecode := "simplestorage_bytecode.txt"
simplestorageCalldata := "simplestorage_init42.txt"
identitySource := "identity.aes"

c := aeternity.NewCompiler("http://localhost:3080", false)
t.Run("APIVersion", func(t *testing.T) {
_, err := c.APIVersion()
Expand All @@ -16,26 +21,27 @@ func TestCompiler(t *testing.T) {
}
})
t.Run("CompileContract", func(t *testing.T) {
_, err := c.CompileContract("contract Identity =\n type state = ()\n entrypoint main(z : int) = z")
compiled, err := c.CompileContract(string(golden.Get(t, simplestorageSource)), aeternity.Config.Compiler.Backend)
if err != nil {
t.Error(err)
}
golden.Assert(t, compiled, simplestorageBytecode)
})
t.Run("DecodeCallResult", func(t *testing.T) {
// taken from contract_test.go
_, err := c.DecodeCallResult("ok", "cb_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACr8s/aY", "main", golden.IdentitySource)
_, err := c.DecodeCallResult("ok", "cb_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACr8s/aY", "main", string(golden.Get(t, identitySource)), aeternity.Config.Compiler.Backend)
if err != nil {
t.Error(err)
}
})
t.Run("DecodeCalldataBytecode", func(t *testing.T) {
_, err := c.DecodeCalldataBytecode(golden.SimpleStorageBytecode, golden.SimpleStorageCalldata)
_, err := c.DecodeCalldataBytecode(string(golden.Get(t, simplestorageBytecode)), string(golden.Get(t, simplestorageCalldata)), aeternity.Config.Compiler.Backend)
if err != nil {
t.Error(err)
}
})
t.Run("DecodeCalldataSource", func(t *testing.T) {
_, err := c.DecodeCalldataSource(golden.SimpleStorageSource, golden.SimpleStorageCalldata)
_, err := c.DecodeCalldataSource(string(golden.Get(t, simplestorageSource)), "init", string(golden.Get(t, simplestorageCalldata)), aeternity.Config.Compiler.Backend)
if err != nil {
t.Error(err)
}
Expand All @@ -47,14 +53,22 @@ func TestCompiler(t *testing.T) {
t.Error(err)
}
})
t.Run("EncodeCalldata", func(t *testing.T) {
_, err := c.EncodeCalldata(golden.SimpleStorageSource, "set", []string{"123"})
t.Run("EncodeCalldata SimpleStorage set(123)", func(t *testing.T) {
encodedCalldata, err := c.EncodeCalldata(string(golden.Get(t, simplestorageSource)), "set", []string{"123"}, aeternity.Config.Compiler.Backend)
if err != nil {
t.Error(err)
}
golden.Assert(t, encodedCalldata, "simplestorage_set123.txt")
})
t.Run("EncodeCalldata SimpleStorage init(42)", func(t *testing.T) {
encodedCalldata, err := c.EncodeCalldata(string(golden.Get(t, simplestorageSource)), "init", []string{"42"}, aeternity.Config.Compiler.Backend)
if err != nil {
t.Error(err)
}
golden.Assert(t, encodedCalldata, "simplestorage_init42.txt")
})
t.Run("GenerateACI", func(t *testing.T) {
_, err := c.GenerateACI(golden.SimpleStorageSource)
_, err := c.GenerateACI(string(golden.Get(t, simplestorageSource)), aeternity.Config.Compiler.Backend)
if err != nil {
t.Error(err)
}
Expand Down
9 changes: 6 additions & 3 deletions integration_test/contract_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import (
"testing"

"github.com/aeternity/aepp-sdk-go/aeternity"
"github.com/aeternity/aepp-sdk-go/golden"
"github.com/aeternity/aepp-sdk-go/utils"
"gotest.tools/golden"
)

func TestContracts(t *testing.T) {
Expand All @@ -18,7 +18,9 @@ func TestContracts(t *testing.T) {
var ctID string
var txHash string

create, err := contractsAlice.ContractCreateTx(golden.IdentityBytecode, golden.IdentityInitCalldata, aeternity.Config.Client.Contracts.VMVersion, aeternity.Config.Client.Contracts.ABIVersion, aeternity.Config.Client.Contracts.Deposit, aeternity.Config.Client.Contracts.Amount, *utils.NewIntFromUint64(1e5), aeternity.Config.Client.Contracts.GasPrice, *utils.NewIntFromUint64(564480000000000))
identityBytecode := string(golden.Get(t, "identity_bytecode.txt"))
identityInitCalldata := string(golden.Get(t, "identity_initcalldata.txt"))
create, err := contractsAlice.ContractCreateTx(identityBytecode, identityInitCalldata, aeternity.Config.Client.Contracts.VMVersion, aeternity.Config.Client.Contracts.ABIVersion, aeternity.Config.Client.Contracts.Deposit, aeternity.Config.Client.Contracts.Amount, *utils.NewIntFromUint64(1e5), aeternity.Config.Client.Contracts.GasPrice, *utils.NewIntFromUint64(564480000000000))
if err != nil {
t.Fatal(err)
}
Expand All @@ -42,7 +44,8 @@ func TestContracts(t *testing.T) {
}
delay(getContract)

callTx, err := contractsAlice.ContractCallTx(ctID, golden.IdentityCalldata, aeternity.Config.Client.Contracts.ABIVersion, aeternity.Config.Client.Contracts.Amount, *utils.NewIntFromUint64(1e5), aeternity.Config.Client.Contracts.GasPrice, *utils.NewIntFromUint64(665480000000000))
identityMain42Calldata := string(golden.Get(t, "identity_main42.txt"))
callTx, err := contractsAlice.ContractCallTx(ctID, identityMain42Calldata, aeternity.Config.Client.Contracts.ABIVersion, aeternity.Config.Client.Contracts.Amount, *utils.NewIntFromUint64(1e5), aeternity.Config.Client.Contracts.GasPrice, *utils.NewIntFromUint64(665480000000000))
if err != nil {
t.Fatal(err)
}
Expand Down
7 changes: 4 additions & 3 deletions integration_test/ga_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ import (
"testing"

"github.com/aeternity/aepp-sdk-go/aeternity"
"github.com/aeternity/aepp-sdk-go/golden"
"github.com/aeternity/aepp-sdk-go/utils"
rlp "github.com/randomshinichi/rlpae"
"gotest.tools/golden"
)

func EncodeRLPToBytes(tx rlp.Encoder) (b []byte, err error) {
Expand Down Expand Up @@ -37,12 +37,13 @@ func TestGeneralizedAccounts(t *testing.T) {
expected.Add(&bS, amount)
}

authorizeSource := string(golden.Get(t, "authorize.aes"))
// Read the auth contract from a file, compile and prepare its init() calldata
authBytecode, err := compiler.CompileContract(golden.AuthorizeSource)
authBytecode, err := compiler.CompileContract(authorizeSource, aeternity.Config.Compiler.Backend)
if err != nil {
t.Fatal(err)
}
authInitCalldata, err := compiler.EncodeCalldata(golden.AuthorizeSource, "init", []string{alice.Address})
authInitCalldata, err := compiler.EncodeCalldata(authorizeSource, "init", []string{alice.Address}, aeternity.Config.Compiler.Backend)
if err != nil {
t.Fatal(err)
}
Expand Down
10 changes: 10 additions & 0 deletions integration_test/testdata/authorize.aes
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
contract BlindAuth =
record state = { owner : address }
entrypoint init(owner' : address) = { owner = owner' }
stateful entrypoint authorize(r: int) : bool =
// r is a random number only used to make tx hashes unique
switch(Auth.tx_hash)
None => abort("Not in Auth context")
Some(tx_hash) => true
entrypoint to_sign(h : hash, n : int) : hash =
Crypto.blake2b((h, n))
1 change: 1 addition & 0 deletions integration_test/testdata/authorize_bytecode.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
cb_+QegRgKgOOZuRvAD/pZCyb5ecQ1p6GELFfi4tlz2cnV2M5iDqkL5BVH5AS+gRrV7nxBth7jGHEXDcLBgHqsprJbpyn+vdmx578COSuuJYXV0aG9yaXpluMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoP//////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD5AY6g3x9QvmHUCNlWpzjYO1II0nP3bjorZc38IBafRAUZKO+HdG9fc2lnbrkBIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA//////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPkCi6DiIx1s38k5Ft5Ms6mFe/Zc9A/CVvShSYs/fnyYDBmTRIRpbml0uMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoP//////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5AaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAP//////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGA//////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALkCIGIAAI9iAADCkYCAgFF/RrV7nxBth7jGHEXDcLBgHqsprJbpyn+vdmx578COSusUYgAA0ldQgIBRf98fUL5h1AjZVqc42DtSCNJz9246K2XN/CAWn0QFGSjvFGIAAVNXUIBRf+IjHWzfyTkW3kyzqYV79lz0D8JW9KFJiz9+fJgMGZNEFGIAAdhXUGABGVEAW2AAGVlgIAGQgVJgIJADYABZkIFSgVJZYCABkIFSYCCQA2ADgVKQWWAAUVlSYABSYADzW2AAgFJgAPNbYAD9kFCQVltgIAFRUZBQWVCAkVBQYABgAGAAYQH0WZCBUmAAYABa8YBRYAAUYgABDVeAUWABFGIAAUZXUGABGVEAW1B/Tm90IGluIEF1dGggY29udGV4dAAAAAAAAAAAAAAAAABZYCABkIFSYCCQA2ATgVKQUGIAAMpWW2AgAVFgAZBQkFCQVltgIAFRgFGQYCABUZFQWVCAgpJQklBQYABgAGAAg1lgIAGQgVJgIJADhYFSWWBAAZCBUmAgkANgABlZYCABkIFSYCCQA2AAWZCBUoFSWWAgAZCBUmAgkANgAFmQgVKBUllgIAGQgVJgIJADYAOBUoFSYCCQA2EBk4FSYABgAFrxkVBQkFZbYCABUVGDklCAkVBQgFmQgVJZYCABkIFSYCCQA2AAGVlgIAGQgVJgIJADYABZkIFSgVJZYCABkIFSYCCQA2ADgVKBUpBQkFaFMy4yLjB5ldjq
2 changes: 2 additions & 0 deletions integration_test/testdata/identity.aes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
contract Identity =
entrypoint main(z : int) = z
1 change: 1 addition & 0 deletions integration_test/testdata/identity_bytecode.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
cb_+QP1RgKgrAqzy8P9OGgz6wFSvRD4mtGDnvst1Wq0RUDBbMQm9w/5Avv5ASqgaPJnYzj/UIg5q6R3Se/6i+h+8oTyB/s9mZhwHNU4h8WEbWFpbrjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKD//////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+QHLoLnJVvKLMUmp9Zh6pQXz2hsiCcxXOSNABiu2wb2fn5nqhGluaXS4YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////////////7kBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA//////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////////////////////////////////////uMxiAABkYgAAhJGAgIBRf7nJVvKLMUmp9Zh6pQXz2hsiCcxXOSNABiu2wb2fn5nqFGIAAMBXUIBRf2jyZ2M4/1CIOaukd0nv+ovofvKE8gf7PZmYcBzVOIfFFGIAAK9XUGABGVEAW2AAGVlgIAGQgVJgIJADYAOBUpBZYABRWVJgAFJgAPNbYACAUmAA81tZWWAgAZCBUmAgkANgABlZYCABkIFSYCCQA2ADgVKBUpBWW2AgAVFRWVCAkVBQgJBQkFZbUFCCkVBQYgAAjFaFMy4yLjAR0UPb
1 change: 1 addition & 0 deletions integration_test/testdata/identity_initcalldata.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
cb_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACC5yVbyizFJqfWYeqUF89obIgnMVzkjQAYrtsG9n5+Z6gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnHQYrA==
1 change: 1 addition & 0 deletions integration_test/testdata/identity_main42.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
cb_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBo8mdjOP9QiDmrpHdJ7/qL6H7yhPIH+z2ZmHAc1TiHxQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACo7dbVl
5 changes: 5 additions & 0 deletions integration_test/testdata/simplestorage.aes
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
contract SimpleStorage =
record state = { data : int }
entrypoint init(value : int) : state = { data = value }
function get() : int = state.data
stateful function set(value : int) = put(state{data = value})
1 change: 1 addition & 0 deletions integration_test/testdata/simplestorage_bytecode.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
cb_+QOERgOgcPPaLbPhA5ZUYYI1viyMLIiudfF0RqUBtpvYh9wt5RL5Ao/5Aoyg4iMdbN/JORbeTLOphXv2XPQPwlb0oUmLP358mAwZk0SEaW5pdAC4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACg//////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALkBoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA//////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYD//////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuMJiAAA5YgAAbJGAgFF/4iMdbN/JORbeTLOphXv2XPQPwlb0oUmLP358mAwZk0QUYgAAsFdQYAEZUQBbYAAZWWAgAZCBUmAgkANgAFmQgVKBUllgIAGQgVJgIJADYAOBUpBZYABRWVJgAFJgAPNbYACAUmAA81uAWZCBUllgIAGQgVJgIJADYAAZWWAgAZCBUmAgkANgAFmQgVKBUllgIAGQgVJgIJADYAOBUoFSkFCQVltgIAFRUYOSUICRUFBiAAB0Vok0LjAuMC1yYzEAsRFc7A==
1 change: 1 addition & 0 deletions integration_test/testdata/simplestorage_init42.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
cb_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDiIx1s38k5Ft5Ms6mFe/Zc9A/CVvShSYs/fnyYDBmTRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACo7j+li
1 change: 1 addition & 0 deletions integration_test/testdata/simplestorage_set123.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
cb_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA6hZQte0c6B/XQTuHZwWpc6rFreRzqkolhGkTD+eW6BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHv2GVZ7

0 comments on commit 8618d52

Please sign in to comment.