def get_result(self, request: Request):
        version = request.operation.get(GET_TXN_AUTHOR_AGREEMENT_AML_VERSION)
        timestamp = request.operation.get(
            GET_TXN_AUTHOR_AGREEMENT_AML_TIMESTAMP)

        if version is not None:
            path = StaticTAAHelper.state_path_taa_aml_version(version)
            data, proof = self._get_value_from_state(path, with_proof=True)
            return self._return_txn_author_agreement_aml(request,
                                                         proof,
                                                         data=data)

        if timestamp is not None:
            head_hash = self.database_manager.ts_store.get_equal_or_prev(
                timestamp, CONFIG_LEDGER_ID)
            if head_hash is None:
                return self._return_txn_author_agreement_aml(request, None)
            head_hash = head_hash if head_hash else self.state.committedHeadHash
            data, proof = self._get_value_from_state(
                StaticTAAHelper.state_path_taa_aml_latest(),
                head_hash,
                with_proof=True)
            return self._return_txn_author_agreement_aml(request,
                                                         proof,
                                                         data=data)

        path = StaticTAAHelper.state_path_taa_aml_latest()
        data, proof = self._get_value_from_state(path, with_proof=True)
        return self._return_txn_author_agreement_aml(request, proof, data=data)
Beispiel #2
0
 def _update_txn_author_agreement_acceptance_mechanisms(
         self, payload, seq_no, txn_time):
     serialized_data = encode_state_value(
         payload, seq_no, txn_time, serializer=config_state_serializer)
     version = payload[AML_VERSION]
     self.state.set(StaticTAAHelper.state_path_taa_aml_latest(),
                    serialized_data)
     self.state.set(StaticTAAHelper.state_path_taa_aml_version(version),
                    serialized_data)
 def update_state(self, txn, prev_result, request, is_committed=False):
     self._validate_txn_type(txn)
     payload = get_payload_data(txn)
     seq_no = get_seq_no(txn)
     txn_time = get_txn_time(txn)
     serialized_data = encode_state_value(payload, seq_no, txn_time, serializer=config_state_serializer)
     version = payload[AML_VERSION]
     self.state.set(StaticTAAHelper.state_path_taa_aml_latest(), serialized_data)
     self.state.set(StaticTAAHelper.state_path_taa_aml_version(version), serialized_data)
def test_dynamic_validation_with_not_unique_aml(
        txn_author_agreement_aml_handler, aml_request):
    version = aml_request.operation[AML_VERSION]
    txn_author_agreement_aml_handler.state.set(
        StaticTAAHelper.state_path_taa_aml_version(version), "{}")
    with pytest.raises(
            InvalidClientRequest,
            match="Version of TAA AML must be unique and it cannot be modified"
    ):
        txn_author_agreement_aml_handler.dynamic_validation(aml_request)
def test_update_state(txn_author_agreement_aml_handler, domain_state,
                      aml_request):
    seq_no = 1
    txn_time = 1560241033
    txn_id = "id"
    txn = reqToTxn(aml_request)
    payload = get_payload_data(txn)
    version = payload[AML_VERSION]
    append_txn_metadata(txn, seq_no, txn_time, txn_id)

    txn_author_agreement_aml_handler.update_state(txn, None, aml_request)

    assert txn_author_agreement_aml_handler.get_from_state(
        StaticTAAHelper.state_path_taa_aml_latest()) == (payload, seq_no,
                                                         txn_time)
    assert txn_author_agreement_aml_handler.get_from_state(
        StaticTAAHelper.state_path_taa_aml_version(version)) == (payload,
                                                                 seq_no,
                                                                 txn_time)