Package org.vfny.geoserver.wms.requests

Source Code of org.vfny.geoserver.wms.requests.DescribeLayerKvpRequestReaderTest

/* Copyright (c) 2001 - 2008 TOPP - www.openplans.org.  All rights reserved.
* This code is licensed under the GPL 2.0 license, availible at the root
* application directory.
*/
package org.vfny.geoserver.wms.requests;

import java.util.HashMap;
import java.util.Map;

import junit.framework.TestCase;

import org.geoserver.catalog.impl.CatalogImpl;
import org.geoserver.catalog.impl.CoverageInfoImpl;
import org.geoserver.catalog.impl.CoverageStoreInfoImpl;
import org.geoserver.catalog.impl.DataStoreInfoImpl;
import org.geoserver.catalog.impl.FeatureTypeInfoImpl;
import org.geoserver.catalog.impl.LayerInfoImpl;
import org.geoserver.catalog.impl.NamespaceInfoImpl;
import org.geoserver.catalog.impl.WorkspaceInfoImpl;
import org.geoserver.config.impl.GeoServerImpl;
import org.geoserver.platform.ServiceException;
import org.geoserver.wms.WMS;
import org.geoserver.wms.WMSInfoImpl;
import org.vfny.geoserver.wms.WmsException;

import com.mockrunner.mock.web.MockHttpServletRequest;

/**
* Unit test suite for {@link DescribeLayerKvpRequestReader}
*
* @author Gabriel Roldan
* @version $Id: DescribeLayerKvpRequestReaderTest.java 13349 2009-09-17 08:31:10Z aaime $
*/
public class DescribeLayerKvpRequestReaderTest extends TestCase {

  private GeoServerImpl geoServerImpl;

  private WMS wms;

  private MockHttpServletRequest request;

  private Map<String, String> params;

  protected void setUp() throws Exception {
    geoServerImpl = new GeoServerImpl();
    geoServerImpl.add(new WMSInfoImpl());
    wms = new WMS(geoServerImpl);
    request = new MockHttpServletRequest();
    params = new HashMap<String, String>();
  }

  protected void tearDown() throws Exception {
    wms = null;
    request = null;
    params = null;
  }

  private DescribeLayerRequest getRequest(Map<String, String> params)
      throws ServiceException {

    DescribeLayerKvpRequestReader reader = new DescribeLayerKvpRequestReader(
        params, wms);
    return (DescribeLayerRequest) reader.getRequest(request);
  }

  public void testGetRequestNullHttpReq() {
    try {
      getRequest(null);
      fail("expected NPE on null request");
    } catch (NullPointerException e) {
      assertTrue(true);
    }
  }

  public void testGetRequestNoVersion() {
    params.put("LAYERS", "topp:states");
    try {
      getRequest(params);
      fail("expected ServiceException if version is not provided");
    } catch (WmsException e) {
      assertEquals("NoVersionInfo", e.getCode());
    }
  }

  public void testGetRequestInvalidVersion() {
    params.put("LAYERS", "topp:states");
    params.put("VERSION", "fakeVersion");
    try {
      getRequest(params);
      fail("expected ServiceException if the wrong version is requested");
    } catch (WmsException e) {
      assertEquals("InvalidVersion", e.getCode());
    }
  }

  public void testGetRequestNoLayerRequested() {
    params.put("VERSION", "1.1.1");
    try {
      getRequest(params);
      fail("expected ServiceException if no layer is requested");
    } catch (WmsException e) {
      assertEquals("NoLayerRequested", e.getCode());
    }
  }

  public void testGetRequestLayerNotDefined() {
    CatalogImpl catalog = new CatalogImpl();
    geoServerImpl.setCatalog(catalog);
    NamespaceInfoImpl ns = new NamespaceInfoImpl();
    ns.setPrefix("topp");
    ns.setURI("http//www.geoserver.org");
    catalog.add(ns);

    params.put("VERSION", "1.1.1");
    params.put("LAYERS", "topp:states");
    try {
      getRequest(params);
      fail("expected ServiceException if no layer is requested");
    } catch (WmsException e) {
      assertEquals("LayerNotDefined", e.getCode());
    }
  }

  public void testGetRequest() {
    CatalogImpl catalog = new CatalogImpl();
    geoServerImpl.setCatalog(catalog);
    NamespaceInfoImpl ns = new NamespaceInfoImpl();
    ns.setPrefix("topp");
    ns.setURI("http//www.geoserver.org");

    WorkspaceInfoImpl workspace = new WorkspaceInfoImpl();
    workspace.setId("fakeWs");
    workspace.setName("fakeWs");

    DataStoreInfoImpl dataStoreInfo = new DataStoreInfoImpl(catalog);
    dataStoreInfo.setName("fakeDs");
    dataStoreInfo.setId("fakeDs");
    dataStoreInfo.setWorkspace(workspace);

    FeatureTypeInfoImpl featureTypeInfo = new FeatureTypeInfoImpl(catalog);
    featureTypeInfo.setNamespace(ns);
    featureTypeInfo.setName("states");
    featureTypeInfo.setStore(dataStoreInfo);

    LayerInfoImpl layerInfo = new LayerInfoImpl();
    layerInfo.setResource(featureTypeInfo);
    layerInfo.setId("states");
    layerInfo.setName("states");

    catalog.add(ns);
    catalog.add(workspace);
    catalog.add(dataStoreInfo);
    catalog.add(featureTypeInfo);
    catalog.add(layerInfo);

    params.put("VERSION", "1.1.1");
    params.put("LAYERS", "topp:states");

    DescribeLayerRequest describeRequest = getRequest(params);
    assertNotNull(describeRequest);
    assertNotNull(describeRequest.getLayers());
    assertEquals(1, describeRequest.getLayers().size());

    CoverageStoreInfoImpl coverageStoreInfo = new CoverageStoreInfoImpl(
        catalog);
    coverageStoreInfo.setId("coverageStore");
    coverageStoreInfo.setName("coverageStore");
    coverageStoreInfo.setWorkspace(workspace);

    CoverageInfoImpl coverageInfo = new CoverageInfoImpl(catalog);
    coverageInfo.setNamespace(ns);
    coverageInfo.setName("fakeCoverage");
    coverageInfo.setStore(coverageStoreInfo);

    layerInfo = new LayerInfoImpl();
    layerInfo.setResource(coverageInfo);
    layerInfo.setId("fakeCoverage");
    layerInfo.setName("fakeCoverage");

    catalog.add(coverageStoreInfo);
    catalog.add(coverageInfo);
    catalog.add(layerInfo);

    params.put("LAYERS", "topp:states,topp:fakeCoverage");
    describeRequest = getRequest(params);
    assertNotNull(describeRequest);
    assertNotNull(describeRequest.getLayers());
    assertEquals(2, describeRequest.getLayers().size());
  }
}
TOP

Related Classes of org.vfny.geoserver.wms.requests.DescribeLayerKvpRequestReaderTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.