Beispiel #1
0
def validate_task_to_compute(task_to_compute: message.TaskToCompute) -> None:
    if not isinstance(task_to_compute, message.TaskToCompute):
        raise ConcentValidationError(
            f"Expected TaskToCompute instead of {type(task_to_compute).__name__}.",
            error_code=ErrorCode.MESSAGE_INVALID,
        )

    if any(
            map(lambda x: x is None, [
                getattr(task_to_compute, attribute) for attribute in [
                    'compute_task_def', 'provider_public_key',
                    'requestor_public_key'
                ]
            ])):
        raise ConcentValidationError(
            "Invalid TaskToCompute",
            error_code=ErrorCode.MESSAGE_WRONG_FIELDS,
        )
    if not task_to_compute.verify_all_promissory_notes(
            deposit_contract_address=settings.GNT_DEPOSIT_CONTRACT_ADDRESS):
        raise ConcentValidationError(
            "The signature of the PromissiryNote for the Provider, which should be signed by Requestor is incorrect",
            error_code=ErrorCode.MESSAGE_INVALID,
        )

    validate_compute_task_def(task_to_compute.compute_task_def)
    validate_hex_public_key(task_to_compute.provider_public_key,
                            'provider_public_key')
    validate_hex_public_key(task_to_compute.requestor_public_key,
                            'requestor_public_key')
    validate_secure_hash_algorithm(task_to_compute.package_hash)
    validate_positive_task_price(task_to_compute.price)
Beispiel #2
0
def validate_task_to_compute(task_to_compute: message.TaskToCompute) -> None:
    if not isinstance(task_to_compute, message.TaskToCompute):
        raise ConcentValidationError(
            f"Expected TaskToCompute instead of {type(task_to_compute).__name__}.",
            error_code=ErrorCode.MESSAGE_INVALID,
        )

    if any(
            map(lambda x: x is None, [
                getattr(task_to_compute, attribute) for attribute in [
                    'compute_task_def', 'provider_public_key',
                    'requestor_public_key'
                ]
            ])):
        raise ConcentValidationError(
            "Invalid TaskToCompute",
            error_code=ErrorCode.MESSAGE_WRONG_FIELDS,
        )

    validate_compute_task_def(task_to_compute.compute_task_def)

    validate_hex_public_key(task_to_compute.provider_public_key,
                            'provider_public_key')
    validate_hex_public_key(task_to_compute.requestor_public_key,
                            'requestor_public_key')
    validate_secure_hash_algorithm(task_to_compute.package_hash)
    validate_positive_integer_value(task_to_compute.price)
Beispiel #3
0
 def test_that_validation_should_raise_exception_when_checksum_is_invalid(self):
     invalid_values_with_expected_error_code = {
         123456789: ErrorCode.MESSAGE_FILES_CHECKSUM_WRONG_TYPE,
         '': ErrorCode.MESSAGE_FILES_CHECKSUM_EMPTY,
         'sha14452d71687b6bc2c9389c3349fdc17fbd73b833b': ErrorCode.MESSAGE_FILES_CHECKSUM_WRONG_FORMAT,
         'sha2:4452d71687b6bc2c9389c3349fdc17fbd73b833b': ErrorCode.MESSAGE_FILES_CHECKSUM_INVALID_ALGORITHM,
         'sha1:xyz2d71687b6bc2c9389c3349fdc17fbd73b833b': ErrorCode.MESSAGE_FILES_CHECKSUM_INVALID_SHA1_HASH,
         'sha1:': ErrorCode.MESSAGE_FILES_CHECKSUM_INVALID_SHA1_HASH,
     }
     for invalid_value, error_code in invalid_values_with_expected_error_code.items():
         with self.assertRaises(HashingAlgorithmError) as context:
             validate_secure_hash_algorithm(invalid_value)
         self.assertEqual(context.exception.error_code, error_code)