Esempio n. 1
0
class BatchCommitted(MessageBase):
    """
    Purpose: pass to Observable after each batch is committed
    (so that Observable can propagate the data to Observers using ObservedData msg)
    """
    typename = BATCH_COMMITTED
    schema = (
        (f.REQUESTS.nm,
         IterableField(
             ClientMessageValidator(
                 operation_schema_is_strict=OPERATION_SCHEMA_IS_STRICT))),
        (f.LEDGER_ID.nm, LedgerIdField()),
        (f.INST_ID.nm, NonNegativeNumberField()),
        (f.VIEW_NO.nm, NonNegativeNumberField()),
        (f.PP_SEQ_NO.nm, NonNegativeNumberField()),
        (f.PP_TIME.nm, TimestampField()),
        (f.STATE_ROOT.nm, MerkleRootField()),
        (f.TXN_ROOT.nm, MerkleRootField()),
        (f.SEQ_NO_START.nm, NonNegativeNumberField()),
        (f.SEQ_NO_END.nm, NonNegativeNumberField()),
        (f.AUDIT_TXN_ROOT_HASH.nm, MerkleRootField(nullable=True)),
        (f.PRIMARIES.nm,
         IterableField(LimitedLengthStringField(max_length=NAME_FIELD_LIMIT))),
        (f.ORIGINAL_VIEW_NO.nm, NonNegativeNumberField()),
    )
Esempio n. 2
0
class ThreePCState(MessageBase):
    typename = THREE_PC_STATE
    schema = (
        (f.INST_ID.nm, NonNegativeNumberField()),
        (f.MSGS.nm, IterableField(ClientMessageValidator(
            operation_schema_is_strict=True))),
    )
Esempio n. 3
0
class Propagate(MessageBase):
    typename = PROPAGATE
    schema = (
        (f.REQUEST.nm, ClientMessageValidator(
            operation_schema_is_strict=OPERATION_SCHEMA_IS_STRICT)),
        (f.SENDER_CLIENT.nm, LimitedLengthStringField(max_length=SENDER_CLIENT_FIELD_LIMIT, nullable=True)),
    )
Esempio n. 4
0
class Propagate(MessageBase):
    typename = PROPAGATE
    schema = (
        (f.REQUEST.nm,
         ClientMessageValidator(operation_schema_is_strict=True)),
        (f.SENDER_CLIENT.nm, NonEmptyStringField(nullable=True)),
    )
def test_client_req_not_strict_by_default():
    validator = ClientMessageValidator(operation_schema_is_strict=False)
    operation = {
        TXN_TYPE: NYM,
        TARGET_NYM: TEST_TARGET_NYM,
        VERKEY: TEST_VERKEY_ABBREVIATED,
        "some_new_field_op1": "some_new_value_op1",
        "some_new_field_op2": "some_new_value_op2"
    }
    req_dict = {f.IDENTIFIER.nm: "1" * 16,
                f.REQ_ID.nm: 1,
                OPERATION: operation,
                f.SIG.nm: "signature",
                f.PROTOCOL_VERSION.nm: CURRENT_PROTOCOL_VERSION,
                "some_new_field1": "some_new_value1",
                "some_new_field2": "some_new_value2"}
    validator.validate(req_dict)
def test_client_req_strict():
    validator = ClientMessageValidator(operation_schema_is_strict=True,
                                       schema_is_strict=True)
    operation = {
        TXN_TYPE: NYM,
        TARGET_NYM: TEST_TARGET_NYM,
        VERKEY: TEST_VERKEY_ABBREVIATED,
    }
    req_dict = {f.IDENTIFIER.nm: "1" * 16,
                f.REQ_ID.nm: 1,
                OPERATION: operation,
                f.SIG.nm: "signature",
                f.PROTOCOL_VERSION.nm: CURRENT_PROTOCOL_VERSION,
                "some_new_field": "some_new_value"}

    with pytest.raises(TypeError) as excinfo:
        validator.validate(req_dict)
    assert ("unknown field - some_new_field=some_new_value" in str(excinfo.value))
Esempio n. 7
0
def test_client_req_not_strict_by_default():
    validator = ClientMessageValidator(operation_schema_is_strict=False)
    operation = {
        TXN_TYPE: NYM,
        TARGET_NYM: TEST_TARGET_NYM,
        VERKEY: TEST_VERKEY_ABBREVIATED,
        "some_new_field_op1": "some_new_value_op1",
        "some_new_field_op2": "some_new_value_op2"
    }
    req_dict = {
        f.IDENTIFIER.nm: "1" * 16,
        f.REQ_ID.nm: 1,
        OPERATION: operation,
        f.SIG.nm: "signature",
        f.PROTOCOL_VERSION.nm: CURRENT_PROTOCOL_VERSION,
        "some_new_field1": "some_new_value1",
        "some_new_field2": "some_new_value2"
    }
    validator.validate(req_dict)
Esempio n. 8
0
def test_client_req_strict_operation():
    validator = ClientMessageValidator(operation_schema_is_strict=True)
    operation = {
        TXN_TYPE: NYM,
        TARGET_NYM: TEST_TARGET_NYM,
        VERKEY: TEST_VERKEY_ABBREVIATED,
        "some_new_field_op": "some_new_value_op"
    }
    req_dict = {
        f.IDENTIFIER.nm: "1" * 16,
        f.REQ_ID.nm: 1,
        OPERATION: operation,
        f.SIG.nm: "signature",
        f.PROTOCOL_VERSION.nm: CURRENT_PROTOCOL_VERSION,
        "some_new_field": "some_new_value"
    }

    with pytest.raises(TypeError) as excinfo:
        validator.validate(req_dict)
    assert ("unknown field - some_new_field_op=some_new_value_op"
            in str(excinfo.value))
Esempio n. 9
0
class BatchCommitted(MessageBase):
    """
    Purpose: pass to Observable after each batch is committed
    (so that Observable can propagate the data to Observers using ObservedData msg)
    """
    typename = BATCH_COMMITTED
    schema = ((f.REQUESTS.nm,
               IterableField(
                   ClientMessageValidator(operation_schema_is_strict=True))),
              (f.LEDGER_ID.nm, LedgerIdField()),
              (f.PP_TIME.nm, TimestampField()), (f.STATE_ROOT.nm,
                                                 MerkleRootField()),
              (f.TXN_ROOT.nm, MerkleRootField()), (f.SEQ_NO_START.nm,
                                                   NonNegativeNumberField()),
              (f.SEQ_NO_END.nm, NonNegativeNumberField()))
Esempio n. 10
0
 def __init__(self, **kwargs):
     ClientMessageValidator.__init__(self,
                                     operation_schema_is_strict=OPERATION_SCHEMA_IS_STRICT)
     self.validate(kwargs)
     Request.__init__(self, **kwargs)
Esempio n. 11
0
def validator():
    return ClientMessageValidator(operation_schema_is_strict=True)
Esempio n. 12
0
def validator(request):
    operation_schema_is_strict = request.param == 'operation_schema_is_strict'
    schema_is_strict = request.param == 'schema_is_strict'
    return ClientMessageValidator(
        operation_schema_is_strict=operation_schema_is_strict,
        schema_is_strict=schema_is_strict)
Esempio n. 13
0
 def __init__(self, **kwargs):
     ClientMessageValidator.__init__(self,
                                     operation_schema_is_strict=False,
                                     schema_is_strict=False)
     self.validate(kwargs)
     Request.__init__(self, **kwargs)
Esempio n. 14
0
 def __init__(self, **kwargs):
     ClientMessageValidator.__init__(self,
                                     operation_schema_is_strict=OPERATION_SCHEMA_IS_STRICT)
     self.validate(kwargs)
     Request.__init__(self, **kwargs)