Esempio n. 1
0
def test_TilerFactory(set_env):
    """Test TilerFactory class."""
    from titiler.dependencies import TMSParams
    from titiler.endpoints import factory

    app = factory.TilerFactory(reader=COGReader)
    assert len(app.router.routes) == 19
    assert app.tms_dependency == TMSParams

    app = factory.TilerFactory(reader=COGReader, add_preview=False, add_part=False)
    assert len(app.router.routes) == 16
Esempio n. 2
0
def test_CustomRender():
    """Test Custom Render Params dependency."""
    app = FastAPI()
    cog = factory.TilerFactory(render_dependency=CustomRenderParams)
    app.include_router(cog.router)
    client = TestClient(app)

    response = client.get(f"/tiles/8/87/48.tif?url={DATA_DIR}/cog.tif")
    assert response.status_code == 200
    assert response.headers[
        "content-type"] == "image/tiff; application=geotiff"
    meta = parse_img(response.content)
    assert meta["driver"] == "GTiff"
    assert meta["nodata"] is None
    assert meta["count"] == 2
    assert not meta.get("compress")

    response = client.get(
        f"/tiles/8/87/48.tif?url={DATA_DIR}/cog.tif&return_mask=false&output_nodata=0&output_compression=deflate"
    )
    assert response.status_code == 200
    assert response.headers[
        "content-type"] == "image/tiff; application=geotiff"
    meta = parse_img(response.content)
    assert meta["driver"] == "GTiff"
    assert meta["nodata"] == 0
    assert meta["count"] == 1
    assert meta["compress"] == "deflate"
Esempio n. 3
0
def test_TilerFactory():
    """Test TilerFactory class."""
    cog = factory.TilerFactory()
    assert len(cog.router.routes) == 21
    assert cog.tms_dependency == TMSParams

    cog = factory.TilerFactory(add_preview=False, add_part=False)
    assert len(cog.router.routes) == 17

    app = FastAPI()
    cog = factory.TilerFactory(optional_headers=[OptionalHeaders.server_timing])
    app.include_router(cog.router)
    client = TestClient(app)

    response = client.get(f"/tiles/8/87/48?url={DATA_DIR}/cog.tif&rescale=0,1000")
    assert response.status_code == 200
    assert response.headers["content-type"] == "image/jpeg"
    timing = response.headers["server-timing"]
    assert "dataread;dur" in timing
    assert "postprocess;dur" in timing
    assert "format;dur" in timing

    response = client.get(
        f"/preview?url={DATA_DIR}/cog.tif&rescale=0,1000&max_size=256"
    )
    assert response.status_code == 200
    assert response.headers["content-type"] == "image/jpeg"
    timing = response.headers["server-timing"]
    assert "dataread;dur" in timing
    assert "postprocess;dur" in timing
    assert "format;dur" in timing

    response = client.get(
        f"/crop/-56.228,72.715,-54.547,73.188.png?url={DATA_DIR}/cog.tif&rescale=0,1000&max_size=256"
    )
    assert response.status_code == 200
    assert response.headers["content-type"] == "image/png"
    timing = response.headers["server-timing"]
    assert "dataread;dur" in timing
    assert "postprocess;dur" in timing
    assert "format;dur" in timing

    response = client.get(f"/point/-56.228,72.715?url={DATA_DIR}/cog.tif")
    assert response.status_code == 200
    assert response.headers["content-type"] == "application/json"
    timing = response.headers["server-timing"]
    assert "dataread;dur" in timing
Esempio n. 4
0
def test_CustomPath():
    """Test Custom Render Params dependency."""
    app = FastAPI()

    cog = factory.TilerFactory(path_dependency=CustomPathParams)
    app.include_router(cog.router)
    client = TestClient(app)

    response = client.get("/preview.png?url=cog.tif&rescale=0,10000")
    assert response.status_code == 200
    assert response.headers["content-type"] == "image/png"

    response = client.get("/preview.png?url=somethingelse.tif&rescale=0,10000")
    assert response.status_code == 400
Esempio n. 5
0
def test_CustomCmap():
    """Test Custom Render Params dependency."""
    app = FastAPI()
    cog = factory.TilerFactory(colormap_dependency=ColorMapParams)
    app.include_router(cog.router)
    client = TestClient(app)

    response = client.get(
        f"/preview.npy?url={DATA_DIR}/above_cog.tif&bidx=1&colormap_name=cmap1"
    )
    assert response.status_code == 200
    assert response.headers["content-type"] == "application/x-binary"
    data = numpy.load(BytesIO(response.content))
    assert 4 in data[0]
    assert 5 in data[1]
    assert 6 in data[2]

    response = client.get(
        f"/preview.npy?url={DATA_DIR}/above_cog.tif&bidx=1&colormap_name=another_cmap"
    )
    assert response.status_code == 422