def test_get_blocks_with_time(self): """Tests the `blocks` endpoint. Check response for blocks with time""" for validator_id in range(self.network.validators_count()): host, public_port, private_port = self.network.api_address( validator_id) client = ExonumClient(host, public_port, private_port) blocks_response = client.get_blocks(count=1, add_blocks_time=True) self.assertEqual(blocks_response.status_code, 200) self.assertIsNotNone(blocks_response.json()['blocks'][0]['time'])
def test_get_only_non_empty_blocks(self): """Tests the `blocks` endpoint. Check response for only non empty blocks""" for validator_id in range(self.network.validators_count()): host, public_port, private_port = self.network.api_address( validator_id) client = ExonumClient(host, public_port, private_port) blocks_response = client.get_blocks(count=5, skip_empty_blocks=True) self.assertEqual(blocks_response.status_code, 200) self.assertEqual(len(blocks_response.json()['blocks']), 0)
def test_get_n_latest_blocks_negative(self): """Tests the `blocks` endpoint. Check response for N latest blocks if latest exceeds current height""" latest = 999 number_of_blocks = 6 for validator_id in range(self.network.validators_count()): host, public_port, private_port = self.network.api_address( validator_id) client = ExonumClient(host, public_port, private_port) blocks_response = client.get_blocks(count=number_of_blocks, latest=latest) self.assertEqual(blocks_response.status_code, 404)
def test_get_blocks_with_precommits(self): """Tests the `blocks` endpoint. Check response for blocks with precommits""" time.sleep(2) for validator_id in range(self.network.validators_count()): host, public_port, private_port = self.network.api_address( validator_id) client = ExonumClient(host, public_port, private_port) blocks_response = client.get_blocks(count=1, add_precommits=True) self.assertEqual(blocks_response.status_code, 200) self.assertEqual( len(blocks_response.json()['blocks'][0]['precommits']), 3)
def test_get_last_n_blocks(self): """Tests the `blocks` endpoint. Check response for last N blocks""" number_of_blocks = 5 time.sleep(5) for validator_id in range(self.network.validators_count()): host, public_port, private_port = self.network.api_address( validator_id) client = ExonumClient(host, public_port, private_port) blocks_response = client.get_blocks(count=number_of_blocks) self.assertEqual(blocks_response.status_code, 200) self.assertEqual(len(blocks_response.json()['blocks']), number_of_blocks)
def test_get_n_latest_blocks(self): """Tests the `blocks` endpoint. Check response for N latest blocks""" latest = 5 number_of_blocks = 15 time.sleep(5) for validator_id in range(self.network.validators_count()): height_counter = latest host, public_port, private_port = self.network.api_address( validator_id) client = ExonumClient(host, public_port, private_port) blocks_response = client.get_blocks(count=number_of_blocks, latest=latest) self.assertEqual(len(blocks_response.json()['blocks']), latest + 1) for block in blocks_response.json()['blocks']: self.assertEqual(int(block['height']), height_counter) height_counter -= 1
def test_get_n_earliest_blocks(self): """Tests the `blocks` endpoint. Check response for N earliest blocks""" earliest = 20 number_of_blocks = 15 time.sleep(5) for validator_id in range(self.network.validators_count()): height_counter = earliest host, public_port, private_port = self.network.api_address( validator_id) client = ExonumClient(host, public_port, private_port) blocks_response = client.get_blocks(count=number_of_blocks, earliest=earliest) latest_height = int(blocks_response.json()['blocks'][0]['height']) self.assertEqual(len(blocks_response.json()['blocks']), latest_height - earliest + 1) # blocks must be started from 'earliest' height for block in reversed(blocks_response.json()['blocks']): self.assertEqual(int(block['height']), height_counter) height_counter += 1