@Test
  public void testServerSideOnlyInfo() throws Exception {
    GetMapConfigurationRequest request = new GetMapConfigurationRequest();
    request.setApplicationId("appServerSideOnly");
    request.setMapId("mapServerSideOnly");
    GetMapConfigurationResponse response =
        (GetMapConfigurationResponse)
            dispatcher.execute(GetMapConfigurationRequest.COMMAND, request, null, "en");
    if (response.isError()) {
      response.getErrors().get(0).printStackTrace();
    }
    Assert.assertFalse(response.isError());
    ClientMapInfo mapInfo = response.getMapInfo();
    Assert.assertNotNull(mapInfo);

    // user data
    ClientUserDataInfo info = mapInfo.getUserData();
    Assert.assertNull(info);

    // widget data
    Assert.assertNotNull(mapInfo.getWidgetInfo());
    Assert.assertNull(mapInfo.getWidgetInfo("appDummy")); // not present
    Assert.assertNotNull(mapInfo.getWidgetInfo("layerTree")); // present
    Assert.assertNull(mapInfo.getWidgetInfo("mapDummy")); // filtered because ServerSideOnlyInfo

    // ViewBounds LimitOption
    Assert.assertEquals(
        BoundsLimitOption.COMPLETELY_WITHIN_MAX_BOUNDS, mapInfo.getViewBoundsLimitOption());
  }
 @Test
 public void testSearchByPoint() throws Exception {
   String layer = "layerWmsCountries";
   SearchByPointRequest request = new SearchByPointRequest();
   request.setBbox(
       new Bbox(-3211986.0066263545, 98246.25012821658, 1.065471024672729E7, 3365675.229452881));
   request.setCrs("EPSG:900913");
   Map<String, String> layers = new HashMap<String, String>();
   layers.put(layer, layer);
   request.setLayerMapping(layers);
   request.setLocation(new Coordinate(672238.022713162, 2554015.0948743597));
   request.setScale(1.022083167709322E-4);
   CommandResponse response =
       dispatcher.execute(SearchByPointRequest.COMMAND, request, null, "en");
   Assert.assertFalse(response.isError());
   Assert.assertTrue(response instanceof SearchByPointResponse);
   SearchByPointResponse sbp = (SearchByPointResponse) response;
   Map<String, List<Feature>> map = sbp.getFeatureMap();
   Assert.assertNotNull(map);
   List<Feature> features = map.get(layer);
   Assert.assertEquals(1, features.size());
   Feature feature = features.get(0);
   Assert.assertEquals("belt.2", feature.getId());
   Assert.assertEquals("Tropical", feature.getAttributes().get("BELT").getValue());
   Assert.assertEquals("2", feature.getAttributes().get("FID").getValue());
 }
 @Test
 public void testInvalidRequest() throws Exception {
   SearchByPointRequest request = new SearchByPointRequest();
   CommandResponse response =
       dispatcher.execute(SearchByPointRequest.COMMAND, request, null, "en");
   Assert.assertTrue(response.isError());
   List<Throwable> errors = response.getErrors();
   Assert.assertNotNull(errors);
   Assert.assertEquals(1, errors.size());
   Throwable error = errors.get(0);
   Assert.assertTrue(error instanceof GeomajasException);
   Assert.assertEquals(
       ExceptionCode.PARAMETER_MISSING, ((GeomajasException) error).getExceptionCode());
 }
  @Test
  public void testConvertMaxExtent() throws Exception {
    Layer layer = configurationService.getLayer("countries");
    Bbox configMaxExtent = layer.getLayerInfo().getMaxExtent();
    Assert.assertEquals(-85.05112877980659, configMaxExtent.getX(), DOUBLE_TOLERANCE);
    Assert.assertEquals(-85.05112877980659, configMaxExtent.getY(), DOUBLE_TOLERANCE);
    Assert.assertEquals(170.102257, configMaxExtent.getWidth(), DOUBLE_TOLERANCE);
    Assert.assertEquals(170.102257, configMaxExtent.getHeight(), DOUBLE_TOLERANCE);

    GetMapConfigurationRequest request = new GetMapConfigurationRequest();
    request.setApplicationId("simplevectors");
    request.setMapId("coordTestMap");
    GetMapConfigurationResponse response =
        (GetMapConfigurationResponse)
            dispatcher.execute(GetMapConfigurationRequest.COMMAND, request, null, "en");
    if (response.isError()) {
      response.getErrors().get(0).printStackTrace();
    }
    Assert.assertFalse(response.isError());
    ClientMapInfo mapInfo = response.getMapInfo();
    Assert.assertNotNull(mapInfo);
    Bbox mapMaxExtent = mapInfo.getLayers().get(0).getMaxExtent();
    // these values were registered during a first run, they have *not* been externally verified
    Assert.assertEquals(-9467848.347161204, mapMaxExtent.getX(), DOUBLE_TOLERANCE);
    Assert.assertEquals(-2.0037508342789236E7, mapMaxExtent.getY(), DOUBLE_TOLERANCE);
    Assert.assertEquals(1.8935696632026553E7, mapMaxExtent.getWidth(), DOUBLE_TOLERANCE);
    Assert.assertEquals(4.007501596344786E7, mapMaxExtent.getHeight(), DOUBLE_TOLERANCE);

    // user data
    ClientUserDataInfo info = mapInfo.getUserData();
    Assert.assertNotNull(info);
    Assert.assertTrue(info instanceof ClientApplicationInfo.DummyClientUserDataInfo);
    Assert.assertEquals(
        "some data", ((ClientApplicationInfo.DummyClientUserDataInfo) info).getDummy());

    // widget data
    Assert.assertNotNull(mapInfo.getWidgetInfo());
    Assert.assertNull(mapInfo.getWidgetInfo("mapSelect"));
    Assert.assertNotNull(mapInfo.getWidgetInfo("layerTree"));
    Assert.assertEquals(
        "layer1, layer2",
        ((ClientApplicationInfo.DummyClientWidgetInfo) mapInfo.getWidgetInfo("layerTree"))
            .getDummy());
    // Default value of ViewBounds LimitOption
    BoundsLimitOption boundsLimitOption = mapInfo.getViewBoundsLimitOption();
    Assert.assertNotNull(info);
    Assert.assertEquals(BoundsLimitOption.COMPLETELY_WITHIN_MAX_BOUNDS, boundsLimitOption);
  }
  @Test
  public void testViewBoundsLimitOption() throws Exception {
    GetMapConfigurationRequest request = new GetMapConfigurationRequest();
    request.setApplicationId("vectorsMapWithViewBoundsOption");
    request.setMapId("viewBoundsLimitTestMap");
    GetMapConfigurationResponse response =
        (GetMapConfigurationResponse)
            dispatcher.execute(GetMapConfigurationRequest.COMMAND, request, null, "en");
    if (response.isError()) {
      response.getErrors().get(0).printStackTrace();
    }
    Assert.assertFalse(response.isError());
    ClientMapInfo mapInfo = response.getMapInfo();
    Assert.assertNotNull(mapInfo);

    // ViewBounds LimitOption
    BoundsLimitOption boundsLimitOption = mapInfo.getViewBoundsLimitOption();
    Assert.assertNotNull(boundsLimitOption);
    Assert.assertEquals(BoundsLimitOption.CENTER_WITHIN_MAX_BOUNDS, boundsLimitOption);
  }