Skip to content

Commit d1a9df7

Browse files
authored
Merge branch 'develop' into test/token-gated-communities
2 parents 99c06eb + 2e9f21e commit d1a9df7

File tree

4 files changed

+32
-17
lines changed

4 files changed

+32
-17
lines changed

services/connector/api.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,12 @@ func NewAPI(s *Service) *API {
3434
r.Register("eth_signTypedData_v4", commands.NewSignCommand(s.db, c))
3535

3636
// Accounts query and dapp permissions
37-
// NOTE: Some dApps expect same behavior for both eth_accounts and eth_requestAccounts
38-
accountsCommand := commands.NewRequestAccountsCommand(s.db, c)
37+
// NOTE: eth_accounts returns accounts only if already permitted, without user prompt
38+
// eth_requestAccounts always prompts the user for permission (EIP-1102)
39+
accountsCommand := commands.NewAccountsCommand(s.db)
40+
requestAccountsCommand := commands.NewRequestAccountsCommand(s.db, c)
3941
r.Register("eth_accounts", accountsCommand)
40-
r.Register("eth_requestAccounts", accountsCommand)
42+
r.Register("eth_requestAccounts", requestAccountsCommand)
4143

4244
// Active chain per dapp management
4345
defaultChainIDGetter := chainutils.NewNetworkManagerAdapter(s.nm)

services/connector/commands/accounts.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ func (c *AccountsCommand) Execute(ctx context.Context, request RPCRequest) (inte
3535
}
3636

3737
if dApp == nil {
38-
return "", ErrDAppIsNotPermittedByUser
38+
// Per EIP-1102, eth_accounts should return empty array if not permitted
39+
return []string{}, nil
3940
}
4041

4142
return FormatAccountAddressToResponse(dApp.SharedAccount), nil

services/connector/commands/accounts_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ func TestFailToGetAccountForUnpermittedDApp(t *testing.T) {
2929
assert.NoError(t, err)
3030

3131
result, err := state.cmd.Execute(state.ctx, request)
32-
assert.Equal(t, ErrDAppIsNotPermittedByUser, err)
33-
assert.Empty(t, result)
32+
assert.NoError(t, err)
33+
assert.Equal(t, []string{}, result)
3434
}
3535

3636
func TestGetAccountForPermittedDApp(t *testing.T) {

tests-functional/tests/test_status_connector.py

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,13 @@ def test_chain_id_resolved_before_connection(self, backend, connector):
5454
assert message.get("result") == hex(backend.network_id)
5555

5656
def test_connect_and_accounts(self, backend, connector, wallet_account):
57-
# Request accounts through connector
57+
# eth_accounts returns empty array when not connected (per EIP-1102)
5858
connector.eth_accounts()
59+
message = connector.receive()
60+
assert message.get("result") == []
61+
62+
# Use eth_requestAccounts to trigger connection request
63+
connector.eth_request_accounts()
5964
# And accept connection request
6065
accept_connector(backend, connector, wallet_account)
6166

@@ -66,6 +71,13 @@ def test_connect_and_accounts(self, backend, connector, wallet_account):
6671
assert len(accounts) == 1
6772
assert accounts[0] == wallet_account
6873

74+
# Now eth_accounts should return the connected account
75+
connector.eth_accounts()
76+
message = connector.receive()
77+
accounts = message.get("result")
78+
assert len(accounts) == 1
79+
assert accounts[0] == wallet_account
80+
6981
def test_connect_and_request_accounts(self, backend, connector, wallet_account):
7082
# Request accounts through connector using eth_requestAccounts
7183
connector.eth_request_accounts()
@@ -86,7 +98,7 @@ def test_block_number(self, backend, connector, wallet_account):
8698
connector.receive()
8799

88100
# Establish connection
89-
connector.eth_accounts()
101+
connector.eth_request_accounts()
90102
accept_connector(backend, connector, wallet_account)
91103
message = connector.receive()
92104
assert message.get("result") is not None
@@ -105,7 +117,7 @@ def test_get_balance(self, backend, connector, wallet_account):
105117
connector.receive()
106118

107119
# Establish connection
108-
connector.eth_accounts()
120+
connector.eth_request_accounts()
109121
accept_connector(backend, connector, wallet_account)
110122
message = connector.receive()
111123
assert message.get("result") is not None
@@ -124,7 +136,7 @@ def test_get_transaction_count(self, backend, connector, wallet_account):
124136
connector.receive()
125137

126138
# Establish connection
127-
connector.eth_accounts()
139+
connector.eth_request_accounts()
128140
accept_connector(backend, connector, wallet_account)
129141
message = connector.receive()
130142
assert message.get("result") is not None
@@ -144,7 +156,7 @@ def test_eth_call(self, backend, connector, wallet_account):
144156
connector.receive()
145157

146158
# Establish connection
147-
connector.eth_accounts()
159+
connector.eth_request_accounts()
148160
accept_connector(backend, connector, wallet_account)
149161
message = connector.receive()
150162
assert message.get("result") is not None
@@ -164,7 +176,7 @@ def test_estimate_gas_resolved(self, backend, connector, wallet_account):
164176
connector.receive()
165177

166178
# Establish connection
167-
connector.eth_accounts()
179+
connector.eth_request_accounts()
168180
accept_connector(backend, connector, wallet_account)
169181
message = connector.receive()
170182
assert message.get("result") is not None
@@ -184,7 +196,7 @@ def test_get_transaction_receipt(self, backend, connector, wallet_account):
184196
connector.receive()
185197

186198
# Establish connection
187-
connector.eth_accounts()
199+
connector.eth_request_accounts()
188200
accept_connector(backend, connector, wallet_account)
189201
message = connector.receive()
190202
assert message.get("result") is not None
@@ -206,7 +218,7 @@ def test_send_transaction_flow(self, backend, connector, wallet_account):
206218
connector.receive()
207219

208220
# Establish connection
209-
connector.eth_accounts()
221+
connector.eth_request_accounts()
210222
accept_connector(backend, connector, wallet_account)
211223
message = connector.receive()
212224
assert message.get("result") is not None
@@ -232,7 +244,7 @@ def test_switch_ethereum_chain(self, backend, connector, wallet_account):
232244
connector.receive()
233245

234246
# Establish connection
235-
connector.eth_accounts()
247+
connector.eth_request_accounts()
236248
accept_connector(backend, connector, wallet_account)
237249
message = connector.receive()
238250
assert message.get("result") is not None
@@ -249,7 +261,7 @@ def test_switch_ethereum_chain(self, backend, connector, wallet_account):
249261
def test_revoke_permissions_on_disconnect(self, backend, connector, wallet_account):
250262
# Request accounts through connector
251263
# And accept connection request
252-
connector.eth_accounts()
264+
connector.eth_request_accounts()
253265
accept_connector(backend, connector, wallet_account)
254266
message = connector.receive()
255267
assert message.get("result") is not None
@@ -266,7 +278,7 @@ def test_revoke_permissions_on_disconnect(self, backend, connector, wallet_accou
266278

267279
def test_unavailable_statusgo_method(self, backend, connector, wallet_account):
268280
# First, register the dApp by calling some proper command
269-
connector.eth_accounts()
281+
connector.eth_request_accounts()
270282
accept_connector(backend, connector, wallet_account)
271283
connector.receive() # Read out the message
272284

0 commit comments

Comments
 (0)