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
コード例 #2
0
ファイル: helper.py プロジェクト: hyperledger/indy-plenum
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
コード例 #3
0
ファイル: conftest.py プロジェクト: hyperledger/indy-plenum
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
コード例 #4
0
ファイル: helper.py プロジェクト: hyperledger/indy-plenum
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
        }
    }
コード例 #5
0
    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)
コード例 #6
0
 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)
コード例 #7
0
    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)
コード例 #8
0
ファイル: helper.py プロジェクト: hyperledger/indy-plenum
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)
    )
コード例 #9
0
ファイル: helper.py プロジェクト: hyperledger/indy-plenum
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)