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))