From 53e2f7cd46df9f26601262a0f79e6d56a7ca9788 Mon Sep 17 00:00:00 2001 From: Nguyen Sy Thanh Son Date: Mon, 16 Apr 2018 12:04:27 +0000 Subject: [PATCH] add deploy script and test --- contracts/validator/validator.go | 41 +++++++++++++++++++++++++++ contracts/validator/validator_test.go | 32 +++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 contracts/validator/validator.go create mode 100644 contracts/validator/validator_test.go diff --git a/contracts/validator/validator.go b/contracts/validator/validator.go new file mode 100644 index 0000000000..2f13600620 --- /dev/null +++ b/contracts/validator/validator.go @@ -0,0 +1,41 @@ +package validator + +import ( + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/contracts/validator/contract" +) + +type Validator struct { + *contract.TomoValidatorSession + contractBackend bind.ContractBackend +} + +func NewValidator(transactOpts *bind.TransactOpts, contractAddr common.Address, contractBackend bind.ContractBackend) (*Validator, error) { + validator, err := contract.NewTomoValidator(contractAddr, contractBackend) + if err != nil { + return nil, err + } + + return &Validator{ + &contract.TomoValidatorSession{ + Contract: validator, + TransactOpts: *transactOpts, + }, + contractBackend, + }, nil +} + +func DeployValidator(transactOpts *bind.TransactOpts, contractBackend bind.ContractBackend) (common.Address, *Validator, error) { + validatorAddr, _, _, err := contract.DeployTomoValidator(transactOpts, contractBackend, nil, nil) + if err != nil { + return validatorAddr, nil, err + } + + validator, err := NewValidator(transactOpts, validatorAddr, contractBackend) + if err != nil { + return validatorAddr, nil, err + } + + return validatorAddr, validator, nil +} diff --git a/contracts/validator/validator_test.go b/contracts/validator/validator_test.go new file mode 100644 index 0000000000..ef3124fa83 --- /dev/null +++ b/contracts/validator/validator_test.go @@ -0,0 +1,32 @@ +package validator + +import ( + "math/big" + "testing" + + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/accounts/abi/bind/backends" + "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/crypto" +) + +var ( + key, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291") + addr = crypto.PubkeyToAddress(key.PublicKey) +) + +func TestENS(t *testing.T) { + contractBackend := backends.NewSimulatedBackend(core.GenesisAlloc{addr: {Balance: big.NewInt(1000000000)}}) + transactOpts := bind.NewKeyedTransactor(key) + + _, validator, err := DeployValidator(transactOpts, contractBackend) + if err != nil { + t.Fatalf("can't deploy root registry: %v", err) + } + contractBackend.Commit() + + if _, err := validator.GetValidators(); err != nil { + t.Fatalf("can't get validators: %v", err) + } + contractBackend.Commit() +}