def test_right_suffix(self): ''' Правильный суффикс принимается сервером и включается в отдачу Чтобы тест не зависео от времени - он должен сам майнить... это медленно, поэтому мы проверяем здесь и тот факт, что сервер зафиксировал у себя результат нашей работы. ''' info = APP.test_client().get('/') score = JsonScore(info.json.get('score')) prefix = str(ScoreHash(score, APP.config)) suffix = next( (xs for xs in (hex(s) for s in range(0xffffffffffffffff)) if hashlib.sha256((prefix + ' ' + xs).encode( 'ascii')).hexdigest().endswith('0' * APP.config['STRENGTH']))) response = APP.test_client().post('/score', json={'suffix': suffix}) assert response.status_code == status.HTTP_200_OK assert suffix in JsonScore( APP.test_client().get('/').json.get('score')).suffixes()
def test_json(self): ''' Тестируем выбор правильного core ''' score = StrongestScore( [JsonScore(self.EMPTY), JsonScore(self.STRONGEST)], {'STRENGTH': 6}) assert score.json()['invoice'] == '2X8kfnzk@9a856dac7d475014'
def test_as_string(self): ''' Проверяем, как JsonScore превращается в строку ''' assert str(JsonScore(self.FULL)) == ( '2018-06-19T14:17:22Z 185.180.196.2 4096 2X8kfnzk@9a856dac7d475014 ' '1e2434e de5407 14d43e4 30a7d 11afbbf 4cd950')
def test_full_hash(self): ''' Тест ха хеш полного score''' assert str(ScoreHash(JsonScore(self.FULL), {'STRENGTH': 6})) == ( 'b7948e996c6765c1d625dafbb6d3aa5fabddc7232cdec19430c8d0960e000000' )
def test_empty_hash(self): ''' Тест на хеш пустого Score, а хеш у него - префиксная часть ''' assert str(ScoreHash(JsonScore(self.EMPTY), {'STRENGTH': 6})) == ( '2018-06-20T20:01:32Z 178.128.169.239 4096 Rg3XJle8@48b368ce23ed97fe' )
def test_value_empty(self): ''' Размер пустого JsonScore ''' assert int(ScoreValue(JsonScore(self.EMPTY), {'STRENGTH': 6})) == 0
def test_value(self): ''' размер JsonScore ''' assert int(ScoreValue(JsonScore(self.FULL), {'STRENGTH': 6})) == 21
def test_return_score(self): ''' В ответе сервер указывает свой score ''' response = self.put_wallet(FakeWallet()) assert ScoreValid(JsonScore(response.json['score']), APP.config)