# standard imports import os import random import tempfile import unittest from cic.contract.components.attachment import Attachment from cic.contract.components.proof import Proof from cic.contract.processor import ContractProcessor # local imports from cic.writers import KVWriter # external imports from hexathon import add_0x test_base_dir = os.path.dirname(os.path.realpath(__file__)) test_data_dir = os.path.join(test_base_dir, "testdata") proof_hash = "0f6fc017f29caf512c0feaaf83bc10614b488311cace2973dc248dc24b01e04f" foo_hash = "2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae" bar_hash = "fcde2b2edba56bf408601fb721fe9b5c338d10ee429ea04fae5511b68fbf8fb9" root_merged_hash = "2a27a488377c753fffea58ad535cfdacc2fcb5cf0ae495ec71d88e31757ec0c3" root_unmerged_hash = "14dc271290eca763e99c2e7c21c541bded86fb803c6b01bac28cd367db34399c" class TestCICBase(unittest.TestCase): def setUp(self): super(TestCICBase, self).setUp() random.seed(42) f = open("/dev/urandom", "rb") addresses = [] for _i in range(3): address_bytes = f.read(32) addresses.append(add_0x(address_bytes.hex())) self.token_symbol = "FOO" token_address_bytes = f.read(20) token_index_address_bytes = f.read(20) address_declarator_address_bytes = f.read(20) self.token_address = add_0x(token_address_bytes.hex()) self.token_index_address = add_0x(token_index_address_bytes.hex()) self.address_declarator_address = add_0x(address_declarator_address_bytes.hex()) f.close() self.outputs_dir = tempfile.mkdtemp() self.outputs_writer = KVWriter(self.outputs_dir) self.core_processor = ContractProcessor(outputs_writer=self.outputs_writer) self.resources = { "token": { "reference": self.token_address, "key_address": addresses[0], }, "token_index": { "reference": self.token_index_address, "key_address": addresses[1], }, "address_declarator": { "reference": self.address_declarator_address, "key_address": addresses[2], }, } proof_dir = os.path.join(test_data_dir, "proof") attach = Attachment(path=proof_dir) attach.load() self.proofs = Proof(proof_dir, attachments=attach) self.proofs.load()