Add custom ordering token deploy test
This commit is contained in:
@@ -8,6 +8,13 @@ from chainlib.eth.tx import (
|
||||
TxFormat,
|
||||
receipt,
|
||||
)
|
||||
from chainlib.eth.contract import (
|
||||
abi_decode_single,
|
||||
ABIContractEncoder,
|
||||
ABIContractType,
|
||||
)
|
||||
from chainlib.jsonrpc import JSONRPCRequest
|
||||
from hexathon import add_0x
|
||||
|
||||
# local imports
|
||||
from cic.ext.eth import CICEth
|
||||
@@ -16,6 +23,7 @@ from cic.ext.eth import CICEth
|
||||
from tests.eth.base_eth import TestCICEthBase
|
||||
from tests.base_cic import test_data_dir
|
||||
from giftable_erc20_token import GiftableToken
|
||||
from eth_erc20 import ERC20
|
||||
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
logg = logging.getLogger()
|
||||
@@ -27,10 +35,13 @@ class TestCICEthToken(TestCICEthBase):
|
||||
super(TestCICEthToken, self).setUp()
|
||||
self.resources['token']['reference'] = None
|
||||
self.adapter = CICEth(self.chain_spec, self.resources, self.proofs)
|
||||
self.token_name = 'FOotoken'
|
||||
self.token_symbol = 'FOO'
|
||||
self.token_precision = 8
|
||||
|
||||
|
||||
def test_token_nobackend(self):
|
||||
self.adapter.prepare_token('FOoToken', 'FOO', 8, GiftableToken.bytecode())
|
||||
self.adapter.prepare_token(self.token_name, self.token_symbol, self.token_precision, GiftableToken.bytecode())
|
||||
v = self.adapter.process_token()
|
||||
|
||||
|
||||
@@ -51,6 +62,57 @@ class TestCICEthToken(TestCICEthBase):
|
||||
r = self.rpc.do(o)
|
||||
self.assertEqual(r['status'], 1)
|
||||
|
||||
|
||||
def test_token_weirdorder(self):
|
||||
weird_contract_bytecode_path = os.path.join(test_data_dir, 'contracts', 'WeirdPosToken.bin')
|
||||
f = open(weird_contract_bytecode_path, 'r')
|
||||
weird_bytecode = f.read()
|
||||
f.close()
|
||||
try:
|
||||
self.adapter.prepare_token(self.token_name, self.token_symbol, self.token_precision, weird_bytecode, extra=['0xdeadbeef'], extra_types=['bytes32'])
|
||||
except ValueError:
|
||||
v = self.adapter.process_token()
|
||||
self.adapter.prepare_token(self.token_name, self.token_symbol, self.token_precision, weird_bytecode, extra=['0xdeadbeef'], extra_types=['bytes32'], positions=[1, 2, 3, 0])
|
||||
self.adapter.signer = self.signer
|
||||
self.adapter.rpc = self.rpc
|
||||
self.adapter.tx_format = TxFormat.JSONRPC
|
||||
v = self.adapter.process_token()
|
||||
logg.debug('v {}'.format(v))
|
||||
o = receipt(v)
|
||||
r = self.rpc.do(o)
|
||||
self.assertEqual(r['status'], 1)
|
||||
contract_address = r['contract_address']
|
||||
|
||||
c = ERC20(self.chain_spec)
|
||||
|
||||
o = c.name(contract_address, sender_address=self.accounts[0])
|
||||
r = self.rpc.do(o)
|
||||
self.assertEqual(c.parse_name(r), self.token_name)
|
||||
|
||||
o = c.symbol(contract_address, sender_address=self.accounts[0])
|
||||
r = self.rpc.do(o)
|
||||
self.assertEqual(c.parse_symbol(r), self.token_symbol)
|
||||
|
||||
o = c.decimals(contract_address, sender_address=self.accounts[0])
|
||||
r = self.rpc.do(o)
|
||||
self.assertEqual(c.parse_decimals(r), self.token_precision)
|
||||
|
||||
j = JSONRPCRequest()
|
||||
o = j.template()
|
||||
o['method'] = 'eth_call'
|
||||
enc = ABIContractEncoder()
|
||||
enc.method('foo')
|
||||
data = add_0x(enc.get())
|
||||
tx = c.template(self.accounts[0], contract_address)
|
||||
tx = c.set_code(tx, data)
|
||||
o['params'].append(c.normalize(tx))
|
||||
o['params'].append('latest')
|
||||
o = j.finalize(o)
|
||||
|
||||
r = self.rpc.do(o)
|
||||
v = abi_decode_single(ABIContractType.BYTES32, r)
|
||||
self.assertEqual(v[-8:], 'deadbeef')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user