Example #1
0
    def wrapped_getitem(s, key):
        data_iterator = original_getitem(s, key)
        max_resource_size = getattr(s, "max_resource_size", (20*1024*1024))
        data_iterator = check_resource_size(data_iterator, max_resource_size)

        # Calculate hash and save to temporary file
        hash_obj = hash_algorithm()
        data_iterator = calculate_hash(data_iterator, hash_obj)
        tmpfile = iterator_to_tempfile(data_iterator)

        # Verify hash
        try:
            digest = hash_encode(hash_obj.digest())
            if key != "urn:%s:%s" % (hash_name, digest):
                raise "URN given does not match content." # valueerror
        except:
            os.remove(tmpfile)
            raise

        return iterate_file_then_delete(tmpfile)
def test_check_resource_size():
    assert tuple(check_resource_size(iter(some_data), len(some_data))) is not None
    with pytest.raises(SizeTooLargeError):
        tuple(check_resource_size(iter(some_data), len(some_data) - 1))