package org.geoserver.geofence;
import java.util.Collections;
import java.util.List;
import org.springframework.mock.web.MockHttpServletResponse;
import org.geoserver.data.test.MockData;
import org.geoserver.platform.GeoServerExtensions;
import org.w3c.dom.Document;
import static org.custommonkey.xmlunit.XMLAssert.assertXpathEvaluatesTo;
import org.junit.Test;
public class ServicesTest extends GeofenceBaseTest
{
/**
* Enable the Spring Security auth filters, otherwise there will be no auth
*/
@Override
protected List<javax.servlet.Filter> getFilters()
{
return Collections.singletonList((javax.servlet.Filter) GeoServerExtensions.bean("filterChainProxy"));
}
@Test
public void testAdmin() throws Exception
{
authenticate("admin", "geoserver");
// check from the caps he can access everything
Document dom = getAsDOM("wms?request=GetCapabilities&version=1.1.1&service=WMS");
// print(dom);
assertXpathEvaluatesTo("11", "count(//Layer[starts-with(Name, 'cite:')])", dom);
assertXpathEvaluatesTo("3", "count(//Layer[starts-with(Name, 'sf:')])", dom);
assertXpathEvaluatesTo("8", "count(//Layer[starts-with(Name, 'cdf:')])", dom);
}
@Test
public void testCiteCapabilities() throws Exception
{
authenticate("cite", "cite");
// check from the caps he can access cite and sf, but not others
Document dom = getAsDOM("wms?request=GetCapabilities&version=1.1.1&service=wms");
// print(dom);
assertXpathEvaluatesTo("11", "count(//Layer[starts-with(Name, 'cite:')])", dom);
assertXpathEvaluatesTo("3", "count(//Layer[starts-with(Name, 'sf:')])", dom);
assertXpathEvaluatesTo("0", "count(//Layer[starts-with(Name, 'cdf:')])", dom);
}
@Test
public void testCiteLayers() throws Exception
{
authenticate("cite", "cite");
// try a getmap/reflector on a sf layer, should work
MockHttpServletResponse response = getAsServletResponse("wms/reflect?layers=" + getLayerId(MockData.BASIC_POLYGONS));
assertEquals(200, response.getStatus());
assertEquals("image/png", response.getContentType());
// try a getmap/reflector on a sf layer, should work
response = getAsServletResponse("wms/reflect?layers=" + getLayerId(MockData.GENERICENTITY));
assertEquals(200, response.getStatus());
assertEquals("image/png", response.getContentType());
// try a getfeature on a sf layer
response = getAsServletResponse("wfs?service=wfs&version=1.0.0&request=getfeature&typeName=" + getLayerId(MockData.GENERICENTITY));
assertEquals(200, response.getStatus());
assertEquals("text/xml", response.getContentType());
String content = response.getContentAsString();
LOGGER.info("Content: " + content);
// assertTrue(content.contains("Unknown namespace [sf]"));
assertTrue(content.contains("Feature type sf:GenericEntity unknown"));
}
}