github.com/linapex/ethereum-dpos-chinese@v0.0.0-20190316121959-b78b3a4a1ece/contracts/ens/ens_test.go (about)

     1  
     2  //<developer>
     3  //    <name>linapex 曹一峰</name>
     4  //    <email>linapex@163.com</email>
     5  //    <wx>superexc</wx>
     6  //    <qqgroup>128148617</qqgroup>
     7  //    <url>https://jsq.ink</url>
     8  //    <role>pku engineer</role>
     9  //    <date>2019-03-16 12:09:33</date>
    10  //</624342613939458048>
    11  
    12  
    13  package ens
    14  
    15  import (
    16  	"math/big"
    17  	"testing"
    18  
    19  	"github.com/ethereum/go-ethereum/accounts/abi/bind"
    20  	"github.com/ethereum/go-ethereum/accounts/abi/bind/backends"
    21  	"github.com/ethereum/go-ethereum/contracts/ens/contract"
    22  	"github.com/ethereum/go-ethereum/core"
    23  	"github.com/ethereum/go-ethereum/crypto"
    24  )
    25  
    26  var (
    27  	key, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291")
    28  	name   = "my name on ENS"
    29  	hash   = crypto.Keccak256Hash([]byte("my content"))
    30  	addr   = crypto.PubkeyToAddress(key.PublicKey)
    31  )
    32  
    33  func TestENS(t *testing.T) {
    34  	contractBackend := backends.NewSimulatedBackend(core.GenesisAlloc{addr: {Balance: big.NewInt(1000000000)}}, 10000000)
    35  	transactOpts := bind.NewKeyedTransactor(key)
    36  
    37  	ensAddr, ens, err := DeployENS(transactOpts, contractBackend)
    38  	if err != nil {
    39  		t.Fatalf("can't deploy root registry: %v", err)
    40  	}
    41  	contractBackend.Commit()
    42  
    43  //将自己设置为名称的所有者。
    44  	if _, err := ens.Register(name); err != nil {
    45  		t.Fatalf("can't register: %v", err)
    46  	}
    47  	contractBackend.Commit()
    48  
    49  //部署一个冲突解决程序并使其负责该名称。
    50  	resolverAddr, _, _, err := contract.DeployPublicResolver(transactOpts, contractBackend, ensAddr)
    51  	if err != nil {
    52  		t.Fatalf("can't deploy resolver: %v", err)
    53  	}
    54  	if _, err := ens.SetResolver(EnsNode(name), resolverAddr); err != nil {
    55  		t.Fatalf("can't set resolver: %v", err)
    56  	}
    57  	contractBackend.Commit()
    58  
    59  //设置名称的内容哈希。
    60  	if _, err = ens.SetContentHash(name, hash); err != nil {
    61  		t.Fatalf("can't set content hash: %v", err)
    62  	}
    63  	contractBackend.Commit()
    64  
    65  //尝试解析名称。
    66  	vhost, err := ens.Resolve(name)
    67  	if err != nil {
    68  		t.Fatalf("expected no error, got %v", err)
    69  	}
    70  	if vhost != hash {
    71  		t.Fatalf("resolve error, expected %v, got %v", hash.Hex(), vhost.Hex())
    72  	}
    73  }
    74