mirror of https://github.com/ConsenSys/mythril
blockchainethereumsmart-contractssoliditysecurityprogram-analysissecurity-analysissymbolic-execution
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
1.1 KiB
32 lines
1.1 KiB
from mythril.ether.contractstorage import get_persistent_storage
|
|
import os
|
|
from tests import BaseTestCase
|
|
|
|
class GetAndSearchContractTestCase(BaseTestCase):
|
|
|
|
def setUp(self):
|
|
super(GetAndSearchContractTestCase, self).setUp()
|
|
script_path = os.path.dirname(os.path.realpath(__file__))
|
|
storage_dir = os.path.join(script_path, 'teststorage')
|
|
self.storage, self.db = get_persistent_storage(storage_dir)
|
|
|
|
def tearDown(self):
|
|
self.db.close()
|
|
super(GetAndSearchContractTestCase, self).tearDown()
|
|
|
|
def mockCallback(self, code_hash, code, addresses, balances):
|
|
self.code_hash = code_hash
|
|
self.isFound = True
|
|
pass
|
|
|
|
def runTest(self):
|
|
contract = self.storage.get_contract_by_hash(bytes.fromhex("ea061445eacbe86b7ffed2bb9e52075e"))
|
|
|
|
self.assertTrue("0x60606040" in contract.code, 'error reading contract code from database')
|
|
|
|
self.isFound = False
|
|
|
|
self.storage.search("code#PUSH1#", self.mockCallback)
|
|
|
|
self.assertTrue(self.isFound, 'storage search error')
|
|
self.assertEqual(self.code_hash, 'ea061445eacbe86b7ffed2bb9e52075e', 'storage search error')
|
|
|