github.com/status-im/status-go@v1.1.0/services/ens/api_test.go (about)

     1  package ens
     2  
     3  import (
     4  	"context"
     5  	"database/sql"
     6  	"testing"
     7  	"time"
     8  
     9  	"github.com/golang/mock/gomock"
    10  	"github.com/stretchr/testify/require"
    11  
    12  	"github.com/ethereum/go-ethereum/common"
    13  	gethrpc "github.com/ethereum/go-ethereum/rpc"
    14  	"github.com/status-im/status-go/appdatabase"
    15  	"github.com/status-im/status-go/params"
    16  	statusRPC "github.com/status-im/status-go/rpc"
    17  	"github.com/status-im/status-go/t/helpers"
    18  	"github.com/status-im/status-go/t/utils"
    19  	"github.com/status-im/status-go/transactions/fake"
    20  )
    21  
    22  func createDB(t *testing.T) (*sql.DB, func()) {
    23  	db, cleanup, err := helpers.SetupTestSQLDB(appdatabase.DbInitializer{}, "service-ens-tests-")
    24  	require.NoError(t, err)
    25  	return db, func() { require.NoError(t, cleanup()) }
    26  }
    27  
    28  func setupTestAPI(t *testing.T) (*API, func()) {
    29  	db, cancel := createDB(t)
    30  
    31  	// Creating a dummy status node to simulate what it's done in get_status_node.go
    32  	upstreamConfig := params.UpstreamRPCConfig{
    33  		URL:     "https://mainnet.infura.io/v3/800c641949d64d768a5070a1b0511938",
    34  		Enabled: true,
    35  	}
    36  
    37  	txServiceMockCtrl := gomock.NewController(t)
    38  	server, _ := fake.NewTestServer(txServiceMockCtrl)
    39  	client := gethrpc.DialInProc(server)
    40  
    41  	_ = client
    42  
    43  	rpcClient, err := statusRPC.NewClient(nil, 1, upstreamConfig, nil, db, nil)
    44  	require.NoError(t, err)
    45  
    46  	// import account keys
    47  	utils.Init()
    48  	require.NoError(t, utils.ImportTestAccount(t.TempDir(), utils.GetAccount1PKFile()))
    49  
    50  	return NewAPI(rpcClient, nil, nil, nil, db, time.Now, nil), cancel
    51  }
    52  
    53  func TestResolver(t *testing.T) {
    54  	t.Skip("skip test using infura")
    55  	api, cancel := setupTestAPI(t)
    56  	defer cancel()
    57  
    58  	r, err := api.Resolver(context.Background(), 1, "rramos.eth")
    59  	require.NoError(t, err)
    60  	require.Equal(t, "0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41", r.String())
    61  }
    62  
    63  func TestGetName(t *testing.T) {
    64  	t.Skip("skip test using infura")
    65  	api, cancel := setupTestAPI(t)
    66  	defer cancel()
    67  
    68  	r, err := api.GetName(context.Background(), 1, common.HexToAddress("0x7d28Ab6948F3Db2F95A43742265D382a4888c120"))
    69  	require.NoError(t, err)
    70  	require.Equal(t, "rramos.eth", r)
    71  }
    72  
    73  func TestOwnerOf(t *testing.T) {
    74  	t.Skip("skip test using infura")
    75  	api, cancel := setupTestAPI(t)
    76  	defer cancel()
    77  
    78  	r, err := api.OwnerOf(context.Background(), 1, "rramos.eth")
    79  	require.NoError(t, err)
    80  	require.Equal(t, "0x7d28Ab6948F3Db2F95A43742265D382a4888c120", r.String())
    81  }
    82  
    83  func TestContentHash(t *testing.T) {
    84  	t.Skip("skip test using infura")
    85  	api, cancel := setupTestAPI(t)
    86  	defer cancel()
    87  
    88  	r, err := api.ContentHash(context.Background(), 1, "simpledapp.eth")
    89  	require.NoError(t, err)
    90  	require.Equal(t, []byte{0xe3, 0x1, 0x1, 0x70, 0x12, 0x20, 0x79, 0x5c, 0x1e, 0xa0, 0xce, 0xaf, 0x4c, 0xee, 0xdc, 0x98, 0x96, 0xf1, 0x4b, 0x73, 0xbb, 0x30, 0xe9, 0x78, 0xe4, 0x85, 0x5e, 0xe2, 0x21, 0xb9, 0xa5, 0x7f, 0x5a, 0x93, 0x42, 0x68, 0x28, 0xe}, r)
    91  }
    92  
    93  func TestPublicKeyOf(t *testing.T) {
    94  	t.Skip("skip test using infura")
    95  	api, cancel := setupTestAPI(t)
    96  	defer cancel()
    97  
    98  	pubKey, err := api.PublicKeyOf(context.Background(), 1, "rramos.eth")
    99  	require.NoError(t, err)
   100  	require.Equal(
   101  		t,
   102  		"0x04e25da6994ea2dc4ac70727e07eca153ae92bf7609db7befb7ebdceaad348f4fc55bbe90abf9501176301db5aa103fc0eb3bc3750272a26c424a10887db2a7ea8",
   103  		pubKey,
   104  	)
   105  }
   106  
   107  func TestAddressOf(t *testing.T) {
   108  	t.Skip("skip test using infura")
   109  	api, cancel := setupTestAPI(t)
   110  	defer cancel()
   111  
   112  	r, err := api.AddressOf(context.Background(), 1, "rramos.eth")
   113  	require.NoError(t, err)
   114  	require.Equal(t, "0x7d28Ab6948F3Db2F95A43742265D382a4888c120", r.String())
   115  }
   116  
   117  func TestExpireAt(t *testing.T) {
   118  	t.Skip("skip test using infura")
   119  	api, cancel := setupTestAPI(t)
   120  	defer cancel()
   121  
   122  	r, err := api.ExpireAt(context.Background(), 1, "rramos")
   123  	require.NoError(t, err)
   124  	require.Equal(t, "5db32cb7", r)
   125  }
   126  
   127  func TestPrice(t *testing.T) {
   128  	t.Skip("skip test using infura")
   129  	api, cancel := setupTestAPI(t)
   130  	defer cancel()
   131  
   132  	r, err := api.Price(context.Background(), 1)
   133  	require.NoError(t, err)
   134  	require.Equal(t, "8ac7230489e80000", r)
   135  }
   136  
   137  func TestResourceURL(t *testing.T) {
   138  	t.Skip("skip test using infura")
   139  	api, cancel := setupTestAPI(t)
   140  	defer cancel()
   141  
   142  	uri, err := api.ResourceURL(context.Background(), 1, "simpledapp.eth")
   143  	require.NoError(t, err)
   144  	require.Equal(t, "https", uri.Scheme)
   145  	require.Equal(t, "bafybeidzlqpkbtvpjtxnzgew6ffxhozq5f4ojbk64iq3tjl7lkjue2biby", uri.Host)
   146  	require.Equal(t, "", uri.Path)
   147  
   148  	//fixme: this block is the broken part
   149  	uri, err = api.ResourceURL(context.Background(), 1, "swarm.eth")
   150  	require.NoError(t, err)
   151  	require.Equal(t, "https", uri.Scheme)
   152  	require.Equal(t, "swarm-gateways.net", uri.Host)
   153  	require.Equal(t, "/bzz:/b7976f7fabd7ba88a897452a2860228dcefec427302a3dedae164b51c780a5b8/", uri.Path)
   154  
   155  	uri, err = api.ResourceURL(context.Background(), 1, "noahzinsmeister.eth")
   156  	require.NoError(t, err)
   157  	require.Equal(t, "https", uri.Scheme)
   158  	require.Equal(t, "noahzinsmeister.com", uri.Host)
   159  	require.Equal(t, "", uri.Path)
   160  }