def test_get_allowance_callback(self, client: Client, token_contract: str, view): reset_viewer(client, view) client.fa12_get_allowance_callback(token_contract, 'bootstrap2', 'bootstrap3', view, BURN_CAP_ARGS) client.bake('bootstrap5', BAKE_ARGS) utils.assert_storage_contains(client, view, '0')
def test_vote_for_delegate_b4_vote_for_b5(self, client: Client): b_5 = IDENTITIES['bootstrap5']['identity'] client.transfer(0, "bootstrap4", "vote_for_delegate", ['-arg', f'(Some "{b_5}")', '--burn-cap', '10']) client.bake('bootstrap5', BAKE_ARGS) storage = client.get_storage('vote_for_delegate') assert re.search(b_5, storage)
def test_originate_contract_noop(self, client: Client): contract = path.join(CONTRACT_PATH, 'opcodes', 'noop.tz') client.remember('noop', contract) client.typecheck(contract) client.originate('noop', 1000, 'bootstrap1', contract, ['--burn-cap', '0.295']) client.bake('bootstrap1', BAKE_ARGS)
def test_approve(self, client: Client, token_contract: str): client.fa12_approve(token_contract, 20, 'bootstrap2', 'bootstrap3', BURN_CAP_ARGS) client.bake('bootstrap5', BAKE_ARGS) assert check_expected_allowance(client, token_contract, 'bootstrap2', 'bootstrap3', 20)
def test_chain_id_authentication_origination(self, client: Client, session): path = os.path.join(CONTRACT_PATH, 'mini_scenarios', 'authentication.tz') pubkey = IDENTITIES['bootstrap1']['public'] originate(client, session, path, f'Pair 0 "{pubkey}"', 1000) client.bake('bootstrap5', BAKE_ARGS)
def test_deploy_multisig(self, client: Client, session: dict): keys = session['keys'] deployment = client.deploy_msig( 'msig2', 100, 'bootstrap1', 2, keys, ['--burn-cap', '100'] ) session['msig'] = deployment.contract client.bake('bootstrap1', BAKE_ARGS)
def test_manager_withdraw_delegate(self, client: Client): client.withdraw_delegate('manager', []) client.bake('bootstrap5', BAKE_ARGS) client.withdraw_delegate('delegatable_target', []) client.bake('bootstrap5', BAKE_ARGS) assert client.get_delegate('manager', []).delegate is None assert client.get_delegate('delegatable_target', []).delegate is None
def test_bake_last_block_of_proposal_period(self, client: Client): client.bake('bootstrap1', BAKE_ARGS) period_info = client.get_current_period() metadata = client.get_metadata() meta_level = metadata["level"] level_info = metadata["level_info"] meta_period_info = metadata["voting_period_info"] expected_commitment = meta_level["expected_commitment"] deprecated_period_kind = metadata["voting_period_kind"] period_index = metadata["level"]["voting_period"] period_position = metadata["level"]["voting_period_position"] level = client.get_current_level() # check if metadata has the same value as the level and voting period, # see inline comment in alpha apply.ml. This is tested here because the # level of metadata and current level use the compatibility encoding # that contains the voting period information assert meta_level == level assert level["level"] == level_info["level"] assert level["level_position"] == level_info["level_position"] assert level["cycle"] == level_info["cycle"] assert level["cycle_position"] == level_info["cycle_position"] assert expected_commitment == level_info["expected_commitment"] assert period_index == period_info["voting_period"]["index"] assert deprecated_period_kind == "testing_vote" assert period_position == period_info["position"] assert level["level_position"] == 7 assert period_info["voting_period"]["index"] == 1 assert period_info["voting_period"]["kind"] == "proposal" assert period_info["voting_period"]["start_position"] == 4 assert period_info["position"] == 3 assert period_info["remaining"] == 0 assert meta_period_info == period_info
def test_transfer_from_manager_to_no_default_with_args( self, client: Client): arg = 'Left Unit' client.transfer(0, 'manager', 'target_no_default', ['--arg', arg]) client.bake('bootstrap5', BAKE_ARGS) client.call('manager', 'target_no_default', ['--arg', arg]) client.bake('bootstrap5', BAKE_ARGS)
def test_call(self, client: Client, session: dict): contract = session['contract'] bootstrap3 = '"tz1faswCTDciRzE4oJ9jn2Vm2dvjeyA9fUzU"' transfer = client.call('bootstrap2', contract, ['--arg', bootstrap3]) client.bake('bootstrap5', BAKE_ARGS) assert utils.check_block_contains_operations(client, [transfer.operation_hash])
def test_bake_one_block(self, client: Client): client.bake('bootstrap1', BAKE_ARGS) period_info = client.get_current_period() assert period_info["voting_period"]["index"] == 1 assert period_info["voting_period"]["kind"] == "proposal" assert period_info["voting_period"]["start_position"] == 4 assert period_info["position"] == 1 assert period_info["remaining"] == 2
def test_operation_size_originate_munch_contract(self, client: Client): contract = path.join(CONTRACT_PATH, 'opcodes', 'munch.tz') client.remember('munch', contract) client.typecheck(contract) client.originate( 'munch', 1000, 'bootstrap1', contract, ['--burn-cap', '0.295'] ) client.bake('bootstrap1', BAKE_ARGS)
def test_get_total_supply_callback(self, client: Client, token_contract: str, view): reset_viewer(client, view) client.fa12_get_total_supply_callback(token_contract, 'bootstrap2', view, BURN_CAP_ARGS) client.bake('bootstrap5', BAKE_ARGS) expected = '20000' utils.assert_storage_contains(client, view, expected)
def test_delegate_withdraw(self, client: Client, session: dict): sig0 = client.msig_sign_withdrawing_delegate('msig', session['keys'][0]) to_sign = client.msig_prepare_withdrawing_delegate( 'msig', ['--bytes-only']) sig1 = client.sign_bytes(to_sign, session['keys'][1]) client.msig_withdrawing_delegate('msig', 'bootstrap1', [sig0, sig1]) client.bake('bootstrap1', BAKE_ARGS)
def test_transfer(self, client: Client, token_contract: str): client.fa12_transfer(token_contract, 100, 'bootstrap2', 'bootstrap3', BURN_CAP_ARGS) client.bake('bootstrap5', BAKE_ARGS) assert check_expected_balance(client, token_contract, 'bootstrap2', 19900) and check_expected_balance( client, token_contract, 'bootstrap3', 100)
def test_good_preimage_and_signature(self, client: Client): byt = ('0x050100000027566f756c657a2d766f757320636f7563' + '6865722061766563206d6f692c20636520736f6972203f') sign = ('p2sigsceCzcDw2AeYDzUonj4JT341WC9Px4wdhHBxbZcG1F' + 'hfqFVuG7f2fGCzrEHSAZgrsrQWpxduDPk9qZRgrpzwJnSHC3gZJ') arg = f'(Pair {byt} "{sign}")' client.transfer(0, "bootstrap1", "reveal_signed_preimage", ['-arg', arg, '--burn-cap', '10']) client.bake('bootstrap5', BAKE_ARGS)
def test_originate_simple_entrypoints(self, session: dict, client: Client): '''originates the contract simple_entrypoints.tz with entrypoint %A of type unit used in test_simple_entrypoints''' contract_target = os.path.join(CONTRACT_PATH, 'entrypoints', 'simple_entrypoints.tz') originate(client, session, contract_target, 'Unit', 0) client.bake('bootstrap5', BAKE_ARGS)
def test_transfer_success(self, client: Client, session: dict): client.msig_transfer( 'msig', 10, 'bootstrap2', 'bootstrap1', [session['sig0'], session['sig2']], ) client.bake('bootstrap1', BAKE_ARGS)
def test_last_block_of_proposal_period(self, client: Client): # last block of voting period 0 client.bake('bootstrap1', BAKE_ARGS) period_info = client.get_current_period() assert period_info["voting_period"]["index"] == 0 assert period_info["voting_period"]["kind"] == "proposal" assert period_info["voting_period"]["start_position"] == 0 assert period_info["position"] == 3 assert period_info["remaining"] == 0
def test_delegate_change(self, client: Client, session: dict): sig0 = client.msig_sign_set_delegate('msig', 'bootstrap5', session['keys'][0]) to_sign = client.msig_prepare_set_delegate('msig', 'bootstrap5', ['--bytes-only']) sig2 = client.sign_bytes(to_sign, session['keys'][2]) client.msig_set_delegate('msig', 'bootstrap5', 'bootstrap1', [sig0, sig2]) client.bake('bootstrap1', BAKE_ARGS)
def test_transfer_from_manager_to_rooted_target_with_args( self, client: Client): arg = 'Left Unit' client.transfer(0, 'manager', 'rooted_target', ['--arg', arg, '--entrypoint', 'root']) client.bake('bootstrap5', BAKE_ARGS) client.call('manager', 'rooted_target', ['--arg', arg, '--entrypoint', 'root']) client.bake('bootstrap5', BAKE_ARGS)
def test_activate_accounts(self, client: Client, session): account = f"{ACCOUNT_PATH}/king_commitment.json" session['keys'] += ['king', 'queen'] client.activate_account(session['keys'][3], account) client.bake('bootstrap1', BAKE_ARGS) account = f"{ACCOUNT_PATH}/queen_commitment.json" client.activate_account(session['keys'][4], account) client.bake('bootstrap1', BAKE_ARGS) assert client.get_balance(session['keys'][3]) == 23932454.669343 assert client.get_balance(session['keys'][4]) == 72954577.464032
def test_default_account_transfer_then_bake(self, client: Client): tz1 = IDENTITIES['bootstrap4']['identity'] client.transfer(0, "bootstrap1", "default_account", ['-arg', f'"{tz1}"', '--burn-cap', '10']) client.bake('bootstrap5', BAKE_ARGS) account = 'tz1SuakBpFdG9b4twyfrSMqZzruxhpMeSrE5' client.transfer(0, "bootstrap1", "default_account", ['-arg', f'"{account}"', '--burn-cap', '10']) client.bake('bootstrap5', BAKE_ARGS) assert client.get_balance(account) == 100
def test_change_keys_and_threshold(self, client: Client, session: dict): keys = session['keys'] sig0 = client.msig_sign_setting_threshold('msig', keys[0], 2, [keys[0], keys[2]]) to_sign = client.msig_prepare_setting_threshold( 'msig', 2, [keys[0], keys[2]], ['--bytes-only']) sig2 = client.sign_bytes(to_sign, session['keys'][2]) client.msig_run_transaction('msig', to_sign, 'bootstrap1', [sig0, sig2]) client.bake('bootstrap1', BAKE_ARGS)
def view(client: Client, session: dict): # Only deploy once, it can be used by any fa1.2 contract contract_alias = 'nat-viewer' args = ['--init', '0', '--burn-cap', '0.08'] viewer = "parameter nat; storage nat; code { CAR; NIL operation; PAIR; }" origination = client.originate(contract_alias, 0, 'bootstrap1', viewer, args) session['contract'] = origination.contract client.bake('bootstrap5', BAKE_ARGS) return contract_alias
def test_create_contract_perform_creation(self, client: Client): transfer_result = client.transfer(0, "bootstrap1", "create_contract", ['-arg', 'None', '--burn-cap', '10']) client.bake('bootstrap5', BAKE_ARGS) pattern = r"New contract (\w*) originated" match = re.search(pattern, transfer_result.client_output) assert match is not None kt_1 = match.groups()[0] assert client.get_storage(kt_1) == '"abcdefg"' assert client.get_balance(kt_1) == 100 assert client.get_balance('create_contract') == 900
def test_change_keys_and_threshold(self, client: Client, session: dict): # test changing the keys and threshold with `set threshold of multisig` keys = session['keys'] new_keys = [keys[0], keys[2]] sig0 = client.msig_sign_setting_threshold('msig', keys[0], 2, new_keys) to_sign = client.msig_prepare_setting_threshold( 'msig', 2, new_keys, ['--bytes-only']) sig2 = client.sign_bytes(to_sign, session['keys'][2]) client.msig_set_threshold('msig', 2, new_keys, 'bootstrap1', [sig0, sig2]) client.bake('bootstrap1', BAKE_ARGS)
def test_operation_size_with_list_ok(self, client: Client): # Each element in the list takes 2 bytes so about 30KB in total big_arg = "{" + ("0; " * 15 * 1024) + "}" client.transfer( 10, 'bootstrap1', 'munch', ['--arg', big_arg, "--entrypoint", "list_nat"], ) client.bake('bootstrap1', BAKE_ARGS)
def test_bake_first_block_of_testing_vote_period(self, client: Client): # using the client it's not possible to add voting operation on the # first block of a voting period. This is to be fixed in a futur # protocol client.bake('bootstrap1', BAKE_ARGS) period_info = client.get_current_period() assert period_info["voting_period"]["index"] == 2 assert period_info["voting_period"]["kind"] == "testing_vote" assert period_info["voting_period"]["start_position"] == 8 assert period_info["position"] == 0 assert period_info["remaining"] == 3
def test_bake_two_blocks(self, client: Client): client.bake('bootstrap1', BAKE_ARGS) client.bake('bootstrap1', BAKE_ARGS) period_info = client.get_current_period() level = client.get_current_level() assert level["level_position"] == 2 assert period_info["voting_period"]["index"] == 0 assert period_info["voting_period"]["kind"] == "proposal" assert period_info["voting_period"]["start_position"] == 0 assert period_info["position"] == 2 assert period_info["remaining"] == 1