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, )))), )
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))
def test_empty_string(): assert not Base58Field().validate('') assert Base58Field( byte_lengths=(len(randomString()),)).validate('')
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)