github.com/arieschain/arieschain@v0.0.0-20191023063405-37c074544356/contracts/ens/ens_test.go (about)

     1  package ens
     2  
     3  import (
     4  	"math/big"
     5  	"testing"
     6  
     7  	"github.com/quickchainproject/quickchain/accounts/abi/bind"
     8  	"github.com/quickchainproject/quickchain/accounts/abi/bind/backends"
     9  	"github.com/quickchainproject/quickchain/contracts/ens/contract"
    10  	"github.com/quickchainproject/quickchain/core"
    11  	"github.com/quickchainproject/quickchain/crypto"
    12  )
    13  
    14  var (
    15  	key, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291")
    16  	name   = "my name on ENS"
    17  	hash   = crypto.Keccak256Hash([]byte("my content"))
    18  	addr   = crypto.PubkeyToAddress(key.PublicKey)
    19  )
    20  
    21  func TestENS(t *testing.T) {
    22  	contractBackend := backends.NewSimulatedBackend(core.GenesisAlloc{addr: {Balance: big.NewInt(1000000000)}})
    23  	transactOpts := bind.NewKeyedTransactor(key)
    24  
    25  	ensAddr, ens, err := DeployENS(transactOpts, contractBackend)
    26  	if err != nil {
    27  		t.Fatalf("can't deploy root registry: %v", err)
    28  	}
    29  	contractBackend.Commit()
    30  
    31  	// Set ourself as the owner of the name.
    32  	if _, err := ens.Register(name); err != nil {
    33  		t.Fatalf("can't register: %v", err)
    34  	}
    35  	contractBackend.Commit()
    36  
    37  	// Deploy a resolver and make it responsible for the name.
    38  	resolverAddr, _, _, err := contract.DeployPublicResolver(transactOpts, contractBackend, ensAddr)
    39  	if err != nil {
    40  		t.Fatalf("can't deploy resolver: %v", err)
    41  	}
    42  	if _, err := ens.SetResolver(ensNode(name), resolverAddr); err != nil {
    43  		t.Fatalf("can't set resolver: %v", err)
    44  	}
    45  	contractBackend.Commit()
    46  
    47  	// Set the content hash for the name.
    48  	if _, err = ens.SetContentHash(name, hash); err != nil {
    49  		t.Fatalf("can't set content hash: %v", err)
    50  	}
    51  	contractBackend.Commit()
    52  
    53  	// Try to resolve the name.
    54  	vhost, err := ens.Resolve(name)
    55  	if err != nil {
    56  		t.Fatalf("expected no error, got %v", err)
    57  	}
    58  	if vhost != hash {
    59  		t.Fatalf("resolve error, expected %v, got %v", hash.Hex(), vhost.Hex())
    60  	}
    61  }