Add capped interface, python interface and test for capped, expire

This commit is contained in:
lash
2023-06-06 14:46:55 +01:00
parent c10d2c46f1
commit 220b8afbeb
29 changed files with 559 additions and 5 deletions

View File

@@ -0,0 +1 @@
from .interface import TestEthCappedInterface

View File

@@ -0,0 +1,67 @@
# standard imports
import os
import logging
# external imports
from chainlib.eth.unittest.ethtester import EthTesterCase
from chainlib.connection import RPCConnection
from chainlib.eth.nonce import RPCNonceOracle
from chainlib.eth.tx import receipt
from chainlib.eth.tx import TxFactory
from chainlib.eth.tx import TxFormat
from chainlib.eth.contract import ABIContractEncoder
from chainlib.eth.contract import ABIContractType
# local imports
from eth_capped import EthCapped
script_dir = os.path.dirname(os.path.realpath(__file__))
contract_dir = os.path.join(script_dir, '..', '..', 'solidity')
logg = logging.getLogger(__name__)
class TestEthCapped(EthTesterCase):
def setUp(self):
super(TestEthCapped, self).setUp()
self.set_method = None
self.conn = RPCConnection.connect(self.chain_spec, 'default')
nonce_oracle = RPCNonceOracle(self.accounts[0], self.conn)
f = open(os.path.join(contract_dir, 'CappedTest.bin'))
code = f.read()
f.close()
txf = TxFactory(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle)
tx = txf.template(self.accounts[0], None, use_nonce=True)
self.max_supply_value = 1024
enc = ABIContractEncoder()
enc.uint256(self.max_supply_value)
args = enc.get()
tx = txf.set_code(tx, code + args)
(tx_hash_hex, o) = txf.build(tx)
self.conn.do(o)
o = receipt(tx_hash_hex)
r = self.conn.do(o)
self.assertEqual(r['status'], 1)
self.address = r['contract_address']
logg.debug('published capped test contract with hash {}'.format(r))
def set_max_supply(self, contract_address, sender_address, v, tx_format=TxFormat.JSONRPC):
nonce_oracle = RPCNonceOracle(self.accounts[0], self.conn)
txf = TxFactory(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle)
enc = ABIContractEncoder()
enc.method('setMaxSupply')
enc.typ(ABIContractType.UINT256)
enc.uint256(v)
data = enc.get()
tx = txf.template(sender_address, contract_address, use_nonce=True)
tx = txf.set_code(tx, data)
tx = txf.finalize(tx, tx_format)
return tx

View File

@@ -0,0 +1,38 @@
# external imports
from chainlib.eth.tx import receipt
# local imports
from eth_capped import EthCapped
class TestEthCappedInterface:
def __init__(self):
self.set_method = None
self.max_supply_value = 0
def test_supply(self):
if self.max_supply_value == 0:
return
c = EthCapped(self.chain_spec)
o = c.max_supply(self.address, sender_address=self.accounts[0])
r = self.rpc.do(o)
self.assertEqual(self.max_supply_value, int(r, 16))
def test_supply_change(self):
if self.set_method == None:
return
self.max_supply_value = 2048
(tx_hash_hex, o) = self.set_method(self.address, self.accounts[0], self.max_supply_value)
self.rpc.do(o)
o = receipt(tx_hash_hex)
r = self.conn.do(o)
self.assertEqual(r['status'], 1)
c = EthCapped(self.chain_spec)
o = c.max_supply(self.address, sender_address=self.accounts[0])
r = self.rpc.do(o)
self.assertEqual(self.max_supply_value, int(r, 16))