Make Web3.isConnected() work

This commit is contained in:
Pi Delport 2016-07-14 17:17:39 +02:00
parent 77787f8307
commit 1da5f3589a
3 changed files with 39 additions and 2 deletions

View File

@ -16,3 +16,28 @@ def test_setProvider(disconnected_provider):
web3.setProvider(None)
assert web3.currentProvider is None
assert web3._requestManager.provider is None
def test_isConnected(web3):
"""
Web3.isConnected() returns True when connected to a node.
"""
assert web3.isConnected() is True
def test_isConnected_no_provider():
"""
Web3.isConnected() returns False when not configured with a provider.
"""
web3 = Web3(None)
assert web3.isConnected() is False
def test_isConnected_disconnected(disconnected_provider):
"""
Web3.isConnected() returns False when configured with a provider
that's not connected to a node.
"""
web3 = Web3(disconnected_provider)
assert web3.isConnected() is False

View File

@ -98,7 +98,7 @@ class Web3(object):
return self._requestManager.request_blocking('web3_sha3', [hex_string])
def isConnected(self):
return self.currentProvider and self.currentProvider.isConnected()
return self.currentProvider is not None and self.currentProvider.isConnected()
def createBatch(self):
raise NotImplementedError("Not Implemented")

View File

@ -6,7 +6,7 @@ import itertools
from web3.utils.encoding import (
force_bytes,
force_obj_to_text,
)
force_text)
class BaseProvider(object):
@ -23,3 +23,15 @@ class BaseProvider(object):
"params": params or [],
"id": next(self.request_counter),
})))
def isConnected(self):
try:
response_raw = self.make_request('web3_clientVersion', [])
response = json.loads(force_text(response_raw))
except IOError:
return False
else:
assert response['jsonrpc'] == '2.0'
assert 'error' not in response
return True
assert False