Package org.geomajas.layer.wms.mvc

Source Code of org.geomajas.layer.wms.mvc.WmsControllerTest$MockHttpService

/*
* This is part of Geomajas, a GIS framework, http://www.geomajas.org/.
*
* Copyright 2008-2011 Geosparc nv, http://www.geosparc.com/, Belgium.
*
* The program is available in open source according to the GNU Affero
* General Public License. All contributions in this program are covered
* by the Geomajas Contributors License Agreement. For full licensing
* details, see LICENSE.txt in the project root.
*/

package org.geomajas.layer.wms.mvc;

import junit.framework.Assert;
import org.geomajas.layer.wms.WmsAuthentication;
import org.geomajas.layer.wms.WmsHttpService;
import org.geomajas.testdata.TestPathBinaryStreamAssert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;

/**
* Test for {@link WmsController}.
*
* @author Joachim Van der Auwera
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/org/geomajas/spring/geomajasContext.xml", "/wmsContext.xml"})
public class WmsControllerTest {

  private static final String TEST_VALUE = "A test value";

  private static final String IMAGE_CLASS_PATH = "reference";

  private static final double DELTA = 1E-6;

  @Autowired
  private WmsController wmsController;

  @Test
  @DirtiesContext // changing the controller
  public void testDoSomething() throws Exception {
    MockHttpServletRequest request = new MockHttpServletRequest();
    MockHttpServletResponse response = new MockHttpServletResponse();
    wmsController.setHttpService(new MockHttpService());

    Map<String, String> parameters = new HashMap<String, String>();
    parameters.put("SERVICE", "WMS");
    parameters.put("layers", "bluemarble");
    parameters.put("WIDTH", "512");
    parameters.put("HEIGHT", "512");
    parameters.put("bbox", "-52.01245495052001,-28.207099921352835,11.947593278789554,35.75294830795673");
    parameters.put("format", "image/jpeg");
    parameters.put("version", "1.1.1");
    parameters.put("srs", "EPSG:4326");
    parameters.put("styles", "");
    parameters.put("request", "GetMap");
    request.setParameters(parameters);
    request.setRequestURI("d/wms/proxyBlue/");
    request.setQueryString("SERVICE=WMS&layers=bluemarble&" +
        "WIDTH=512&HEIGHT=512&bbox=-52.01245495052001,-28.207099921352835,11.947593278789554," +
        "35.75294830795673&format=image/jpeg&version=1.1.1&srs=EPSG:4326&styles=&request=GetMap");
    request.setMethod("GET");
    wmsController.getWms(request, response);
    Assert.assertEquals(TEST_VALUE, new String(response.getContentAsByteArray(), "UTF-8"));
  }

  @Test
  public void testReadImage() throws Exception {
    MockHttpServletRequest request = new MockHttpServletRequest();
    MockHttpServletResponse response = new MockHttpServletResponse();

    Map<String, String> parameters = new HashMap<String, String>();
    parameters.put("SERVICE", "WMS");
    parameters.put("layers", "bluemarble");
    parameters.put("WIDTH", "512");
    parameters.put("HEIGHT", "512");
    parameters.put("bbox", "-52.01245495052001,-28.207099921352835,11.947593278789554,35.75294830795673");
    parameters.put("format", "image/jpeg");
    parameters.put("version", "1.1.1");
    parameters.put("srs", "EPSG:4326");
    parameters.put("styles", "");
    parameters.put("request", "GetMap");
    request.setParameters(parameters);
    request.setRequestURI("d/wms/proxyBlue/");
    request.setQueryString("SERVICE=WMS&layers=bluemarble&" +
        "WIDTH=512&HEIGHT=512&bbox=-52.01245495052001,-28.207099921352835,11.947593278789554," +
        "35.75294830795673&format=image/jpeg&version=1.1.1&srs=EPSG:4326&styles=&request=GetMap");
    request.setMethod("GET");
    wmsController.getWms(request, response);
    new ImageAssert(response).assertEqualImage("wms.jpg", false, DELTA);
  }

  private class MockHttpService implements WmsHttpService {

    public String addCredentialsToUrl(String url, WmsAuthentication authentication) {
      return url;
    }

    public InputStream getStream(String url, WmsAuthentication authentication) throws IOException {
      return new ByteArrayInputStream(TEST_VALUE.getBytes("UTF-8"));
    }
  }

  class ImageAssert extends TestPathBinaryStreamAssert {

    private MockHttpServletResponse response;

    public ImageAssert(MockHttpServletResponse response) {
      super(IMAGE_CLASS_PATH);
      this.response = response;
    }

    public void generateActual(OutputStream out) throws Exception {
      out.write(response.getContentAsByteArray());
    }
  }

}
TOP

Related Classes of org.geomajas.layer.wms.mvc.WmsControllerTest$MockHttpService

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.