Пример #1
0
class CatchupRep(MessageBase):
    typename = CATCHUP_REP
    schema = (
        (f.LEDGER_ID.nm, LedgerIdField()),
        # TODO: turn on validation, the cause is INDY-388
        # (f.TXNS.nm, MapField(key_field=StringifiedNonNegativeNumberField(),
        #                      value_field=ClientMessageValidator(operation_schema_is_strict=False))),
        (f.TXNS.nm, AnyValueField()),
        (f.CONS_PROOF.nm, IterableField(Base58Field(byte_lengths=(32, )))),
    )
Пример #2
0
class ClientNodeOperationData(MessageValidator):
    schema = (
        (NODE_IP, NetworkIpAddressField(optional=True)),
        (NODE_PORT, NetworkPortField(optional=True)),
        (CLIENT_IP, NetworkIpAddressField(optional=True)),
        (CLIENT_PORT, NetworkPortField(optional=True)),
        (ALIAS, LimitedLengthStringField(max_length=ALIAS_FIELD_LIMIT)),
        (SERVICES,
         IterableField(ChooseField(values=(VALIDATOR, )), optional=True)),
        (BLS_KEY, Base58Field(byte_lengths=(128, ), optional=True)),
        (BLS_KEY_PROOF, Base58Field(byte_lengths=(128, ), optional=True)),
    )

    def _validate_message(self, dct):
        # TODO: make ha fields truly optional (needs changes in stackHaChanged)
        required_ha_fields = {NODE_IP, NODE_PORT, CLIENT_IP, CLIENT_PORT}
        ha_fields = {f for f in required_ha_fields if f in dct}
        if ha_fields and len(ha_fields) != len(required_ha_fields):
            self._raise_missed_fields(*list(required_ha_fields - ha_fields))
Пример #3
0
def test_empty_string():
    assert not Base58Field().validate('')
    assert Base58Field(
        byte_lengths=(len(randomString()),)).validate('')
Пример #4
0
def test_non_empty_base58():
    for byte_len in range(1, 33):
        val = b58_by_len(byte_len)
        assert not Base58Field().validate(val)  # no decoded length constraints
        assert not Base58Field(byte_lengths=(byte_len, )).validate(val)
        assert Base58Field(byte_lengths=(byte_len - 1, )).validate(val)