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 }