def test_file_accessor_nonexistent_directory(): a = FileAccessor("/nonexistent/directory") with pytest.raises(DataAccessError): a.fetch_file("info") with pytest.raises(DataAccessError): a.store_file("info", b"") chunk_coords = (0, 1, 0, 1, 0, 1) with pytest.raises(DataAccessError): a.fetch_chunk("key", chunk_coords) with pytest.raises(DataAccessError): a.store_chunk(b"", "key", chunk_coords)
def test_file_accessor_errors(tmpdir): # tmpdir from pytest is missing features of pathlib tmpdir = pathlib.Path(str(tmpdir)) a = FileAccessor(str(tmpdir)) chunk_coords = (0, 1, 0, 1, 0, 1) with pytest.raises(DataAccessError): a.fetch_file("info") with pytest.raises(DataAccessError): a.fetch_chunk("key", chunk_coords) inaccessible_file = tmpdir / "inaccessible" inaccessible_file.touch(mode=0o000, exist_ok=False) with pytest.raises(DataAccessError): a.fetch_file("inaccessible") inaccessible_chunk = tmpdir / "inaccessible_key" / "0-1_0-1_0-1" inaccessible_chunk.parent.mkdir(mode=0o000) with pytest.raises(DataAccessError): a.fetch_chunk("inaccessible_key", chunk_coords) with pytest.raises(DataAccessError): a.store_chunk(b"", "inaccessible_key", chunk_coords) with pytest.raises(DataAccessError): a.file_exists("inaccessible_key/dummy") with pytest.raises(DataAccessError): a.store_file("inaccessible_key/dummy", b"") invalid_gzip_file = tmpdir / "invalid.gz" with invalid_gzip_file.open("w") as f: f.write("not gzip compressed") with pytest.raises(DataAccessError): print(a.fetch_file("invalid")) a.store_file("existing", b"") with pytest.raises(DataAccessError): a.store_file("existing", b"", overwrite=False) a.store_file("existing", b"", overwrite=True) with pytest.raises(ValueError): a.file_exists("../forbidden") with pytest.raises(ValueError): a.fetch_file("../forbidden") with pytest.raises(ValueError): a.store_file("../forbidden", b"")
def test_file_accessor_file_exists(tmpdir): a = FileAccessor(str(tmpdir)) assert a.file_exists("nonexistent_file") is False (tmpdir / "real_file").open("w") # create an empty file assert a.file_exists("real_file") is True assert a.file_exists("nonexistent_dir/file") is False
def test_file_accessor_roundtrip(tmpdir, gzip, flat): a = FileAccessor(str(tmpdir), gzip=gzip, flat=flat) fake_info = b'{"scales": [{"key": "key"}]}' fake_chunk_buf = b"d a t a" chunk_coords = (0, 1, 0, 1, 0, 1) a.store_file("info", fake_info, mime_type="application/json") assert a.fetch_file("info") == fake_info a.store_chunk(fake_chunk_buf, "key", chunk_coords, mime_type="application/octet-stream") assert a.fetch_chunk("key", chunk_coords) == fake_chunk_buf chunk_coords2 = (0, 1, 0, 1, 1, 2) a.store_chunk(fake_chunk_buf, "key", chunk_coords2, mime_type="image/jpeg") assert a.fetch_chunk("key", chunk_coords2) == fake_chunk_buf