def test_update_state(txn_author_agreement_handler, taa_request): seq_no = 1 txn_time = 1560241033 txn_id = "id" txn = reqToTxn(taa_request) payload = get_payload_data(txn) text = payload[TXN_AUTHOR_AGREEMENT_TEXT] version = payload[TXN_AUTHOR_AGREEMENT_VERSION] digest = StaticTAAHelper.taa_digest(text, version) append_txn_metadata(txn, seq_no, txn_time, txn_id) state_value = { TXN_AUTHOR_AGREEMENT_TEXT: text, TXN_AUTHOR_AGREEMENT_VERSION: version } txn_author_agreement_handler.update_state(txn, None, taa_request) assert txn_author_agreement_handler.get_from_state( StaticTAAHelper.state_path_taa_digest(digest)) == (state_value, seq_no, txn_time) assert txn_author_agreement_handler.state.get( StaticTAAHelper.state_path_taa_latest()) == digest assert txn_author_agreement_handler.state.get( StaticTAAHelper.state_path_taa_version(version)) == digest
def expected_data(data: TaaData): return { TXN_AUTHOR_AGREEMENT_TEXT: data.text, TXN_AUTHOR_AGREEMENT_VERSION: data.version, TXN_AUTHOR_AGREEMENT_DIGEST: StaticTAAHelper.taa_digest(data.text, data.version), TXN_AUTHOR_AGREEMENT_RATIFICATION_TS: data.txn_time }, data.seq_no, data.txn_time
def taa_input_data(): input_data = [] for n in range(10): text, version = gen_random_txn_author_agreement(32, 8) input_data.append( TaaData(text, version, n, n + 10, StaticTAAHelper.taa_digest(text, version))) return input_data
def expected_state_data(data: TaaData) -> Dict: return { 'lsn': data.seq_no, 'lut': data.txn_time, 'val': { TXN_AUTHOR_AGREEMENT_TEXT: data.text, TXN_AUTHOR_AGREEMENT_VERSION: data.version, TXN_AUTHOR_AGREEMENT_DIGEST: StaticTAAHelper.taa_digest(data.text, data.version), TXN_AUTHOR_AGREEMENT_RATIFICATION_TS: data.txn_time } }
def _update_txn_author_agreement(self, seq_no, txn_time, text, version): digest = StaticTAAHelper.taa_digest(text, version) data = encode_state_value( { TXN_AUTHOR_AGREEMENT_TEXT: text, TXN_AUTHOR_AGREEMENT_VERSION: version }, seq_no, txn_time, serializer=config_state_serializer) self.state.set(StaticTAAHelper.state_path_taa_digest(digest), data) self.state.set(StaticTAAHelper.state_path_taa_latest(), digest) self.state.set(StaticTAAHelper.state_path_taa_version(version), digest)
def update_state(self, txn, prev_result, request, is_committed=False): self._validate_txn_type(txn) payload = get_payload_data(txn) text = payload.get(TXN_AUTHOR_AGREEMENT_TEXT) version = payload[TXN_AUTHOR_AGREEMENT_VERSION] retired = payload.get(TXN_AUTHOR_AGREEMENT_RETIREMENT_TS) ratified = payload.get(TXN_AUTHOR_AGREEMENT_RATIFICATION_TS) seq_no = get_seq_no(txn) txn_time = get_txn_time(txn) digest = StaticTAAHelper.get_taa_digest(self.state, version, isCommitted=False) if digest is None: digest = StaticTAAHelper.taa_digest(text, version) self._add_taa_to_state(digest, seq_no, txn_time, text, version, ratified) else: self._update_taa_to_state(digest, seq_no, txn_time, retired)
def update_state(self, txn, prev_result, request, is_committed=False): self._validate_txn_type(txn) payload = get_payload_data(txn) text = payload[TXN_AUTHOR_AGREEMENT_TEXT] version = payload[TXN_AUTHOR_AGREEMENT_VERSION] seq_no = get_seq_no(txn) txn_time = get_txn_time(txn) digest = StaticTAAHelper.taa_digest(text, version) data = encode_state_value({ TXN_AUTHOR_AGREEMENT_TEXT: text, TXN_AUTHOR_AGREEMENT_VERSION: version }, seq_no, txn_time, serializer=config_state_serializer) self.state.set(StaticTAAHelper.state_path_taa_digest(digest), data) self.state.set(StaticTAAHelper.state_path_taa_latest(), digest) self.state.set(StaticTAAHelper.state_path_taa_version(version), digest)
def set_txn_author_agreement( looper, sdk_pool_handle, sdk_wallet, text: str, version: str, ratified: int, retired: Optional[int] ) -> TaaData: reply = sdk_send_txn_author_agreement(looper, sdk_pool_handle, sdk_wallet, version, text, ratified=ratified, retired=retired)[1] assert reply[OP_FIELD_NAME] == REPLY result = reply[f.RESULT.nm] return TaaData( text, version, seq_no=result[TXN_METADATA][TXN_METADATA_SEQ_NO], txn_time=result[TXN_METADATA][TXN_METADATA_TIME], # TODO: Add ratified? digest=StaticTAAHelper.taa_digest(text, version) )
def create_taa_txn(taa_request, taa_pp_time): taa_seq_no = 1 taa_txn_time = taa_pp_time txn_id = "id" taa_txn = reqToTxn(taa_request) payload = get_payload_data(taa_txn) text = payload[TXN_AUTHOR_AGREEMENT_TEXT] version = payload[TXN_AUTHOR_AGREEMENT_VERSION] ratified = payload[TXN_AUTHOR_AGREEMENT_RATIFICATION_TS] retired = payload.get(TXN_AUTHOR_AGREEMENT_RETIREMENT_TS) digest = StaticTAAHelper.taa_digest(text, version) append_txn_metadata(taa_txn, taa_seq_no, taa_txn_time, txn_id) state_value = { TXN_AUTHOR_AGREEMENT_TEXT: text, TXN_AUTHOR_AGREEMENT_VERSION: version, TXN_AUTHOR_AGREEMENT_RATIFICATION_TS: ratified, TXN_AUTHOR_AGREEMENT_DIGEST: digest } if retired: state_value[TXN_AUTHOR_AGREEMENT_RETIREMENT_TS] = retired return taa_txn, digest, (state_value, taa_seq_no, taa_txn_time)