def test_compose(cube, release_cube_dummy, mocker, test_args, expect): mocker.patch('datacube_wms.data.get_cube', cube) mocker.patch('datacube_wms.wms_layers.get_cube', cube) mocker.patch('datacube_wms.data.release_cube', release_cube_dummy) mocker.patch('datacube_wms.wms_layers.release_cube', release_cube_dummy) # stacker = DataStacker('s2b_nrt_granule', None, '2008-01-01') app = flask.Flask( "test", root_path=os.path.dirname(os.path.realpath(__file__) + "/../..")) with app.test_request_context('/?GetFeatureInfo'): result = json.loads(feature_info(test_args)[0]) assert result["type"] == expect["type"] assert len(result["features"]) == 1 feature = result["features"][0] expected_feature = expect["features"][0] properties = feature["properties"] expected_properties = expected_feature["properties"] bands = properties["bands"] expected_bands = expected_properties["bands"] assert properties["lon"] == expected_properties["lon"] assert properties["lat"] == expected_properties["lat"] assert properties["time"] == expected_properties["time"] assert bands["blue"] == expected_bands["blue"] assert bands["green"] == expected_bands["green"] assert bands["red"] == expected_bands["red"] assert bands["nir"] == expected_bands["nir"] assert bands["swir1"] == expected_bands["swir1"] assert bands["swir2"] == expected_bands["swir2"] assert properties["data_available_for_dates"][ 0] == expected_properties["data_available_for_dates"][0] assert properties["data_links"][0] == expected_properties[ "data_links"][0]
def wms_impl(): nocase_args = lower_get_args() service = nocase_args.get("service", "").upper() operation = nocase_args.get("request", "").upper() try: if service == "WMS": # WMS operation Map if not operation: raise WMSException("No operation specified", locator="Request parameter") elif operation == "GETCAPABILITIES": return get_capabilities(nocase_args) elif operation == "GETMAP": return get_map(nocase_args) elif operation == "GETFEATUREINFO": return feature_info(nocase_args) else: raise WMSException("Unrecognised operation: %s" % operation, WMSException.OPERATION_NOT_SUPPORTED, "Request parameter") else: raise WMSException("Invalid service", locator="Service parameter") except WMSException as e: return wms_exception(e) except Exception as e: tb = sys.exc_info()[2] wms_e = WMSException("Unexpected server error: %s" % str(e), http_response=500) return wms_exception(wms_e, traceback=traceback.extract_tb(tb))
def get_feature_info(args): wms_args = wmts_args_to_wms(args) wms_args["query_layers"] = wms_args["layers"] try: return feature_info(wms_args) except WMSException as wmse: first_error = wmse.errors[0] e = WMTSException(first_error["msg"], code=first_error["code"], locator=first_error["locator"], http_response=wmse.http_response) for error in wmse.errors[1:]: e.add_error(error["msg"], code=error["code"], locator=error["locator"]) raise e
def handle_wms(nocase_args): operation = nocase_args.get("request", "").upper() # WMS operation Map if not operation: raise WMSException("No operation specified", locator="Request parameter") elif operation == "GETCAPABILITIES": return get_capabilities(nocase_args) elif operation == "GETMAP": return get_map(nocase_args) elif operation == "GETFEATUREINFO": return feature_info(nocase_args) else: raise WMSException("Unrecognised operation: %s" % operation, WMSException.OPERATION_NOT_SUPPORTED, "Request parameter")
def wms_impl(): nocase_args = lower_get_args() operation = nocase_args.get("request") try: if not operation: raise WMSException("No operation specified", locator="Request parameter") elif operation == "GetCapabilities": return get_capabilities(nocase_args) elif operation == "GetMap": return get_map(nocase_args) elif operation == "GetFeatureInfo": return feature_info(nocase_args) else: raise WMSException("Unrecognised operation: %s" % operation, WMSException.OPERATION_NOT_SUPPORTED, "Request parameter") except WMSException as e: return wms_exception(e) except Exception as e: tb = sys.exc_info()[2] wms_e = WMSException("Unexpected server error: %s" % str(e), http_response=500) return wms_exception(wms_e, traceback=traceback.extract_tb(tb))
def handle_wms(nocase_args): operation = nocase_args.get("request", "").upper() # WMS operation Map if not operation: raise WMSException("No operation specified", locator="Request parameter") elif operation == "GETCAPABILITIES": return get_capabilities(nocase_args) elif operation == "GETMAP": return get_map(nocase_args) elif operation == "GETFEATUREINFO": return feature_info(nocase_args) elif operation == "GETLEGENDGRAPHIC": response = legend_graphic(nocase_args) if response is None: raise WMSException( "Operation GetLegendGraphic not supported for this product and style", WMSException.OPERATION_NOT_SUPPORTED, "Request parameter") else: return response else: raise WMSException("Unrecognised operation: %s" % operation, WMSException.OPERATION_NOT_SUPPORTED, "Request parameter")