/*******************************************************************************
* Gisgraphy Project
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*
* Copyright 2008 Gisgraphy project
*
* David Masclet <davidmasclet@gisgraphy.com>
******************************************************************************/
package com.gisgraphy.street;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import org.apache.commons.lang.RandomStringUtils;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.mock.web.MockHttpServletRequest;
import com.gisgraphy.domain.geoloc.entity.City;
import com.gisgraphy.domain.valueobject.Output;
import com.gisgraphy.domain.valueobject.Output.OutputStyle;
import com.gisgraphy.domain.valueobject.Pagination;
import com.gisgraphy.geoloc.GeolocQuery;
import com.gisgraphy.serializer.common.OutputFormat;
import com.gisgraphy.servlet.GisgraphyServlet;
import com.gisgraphy.servlet.StreetServlet;
import com.gisgraphy.test.GisgraphyTestHelper;
public class StreetSearchQueryHttpBuilderTest {
@Test
public void streetSearchQueryFromAnHttpServletRequest() {
MockHttpServletRequest request = GisgraphyTestHelper
.createMockHttpServletRequestForStreetGeoloc();
StreetSearchQuery query = buildQuery(request);
int firstPaginationIndex =3;
assertEquals(firstPaginationIndex, query.getFirstPaginationIndex());
assertEquals(StreetSearchQuery.DEFAULT_MAX_RESULTS+firstPaginationIndex-1, query.getLastPaginationIndex());
assertEquals("the pagination should be limit to "
+ StreetSearchQuery.DEFAULT_MAX_RESULTS,
StreetSearchQuery.DEFAULT_MAX_RESULTS, query
.getMaxNumberOfResults());
assertEquals(OutputFormat.XML, query.getOutputFormat());
assertEquals(null, query.getOutputLanguage());
assertEquals(OutputStyle.getDefault(), query.getOutputStyle());
assertEquals(City.class, query.getPlaceType());
assertEquals(1.0, query.getLatitude(),0.1);
assertEquals(2.0, query.getLongitude(),0.1);
assertEquals(10000D, query.getRadius(),0.000001);
// test first pagination index
// with no value specified
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.removeParameter(GisgraphyServlet.FROM_PARAMETER);
query = buildQuery(request);
assertEquals("When no " + GisgraphyServlet.FROM_PARAMETER
+ " is specified, the parameter should be "
+ Pagination.DEFAULT_FROM, Pagination.DEFAULT_FROM, query
.getFirstPaginationIndex());
// with a wrong value
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(GisgraphyServlet.FROM_PARAMETER, "-1");
query = buildQuery(request);
assertEquals("When a wrong " + GisgraphyServlet.FROM_PARAMETER
+ " is specified, the parameter should be "
+ Pagination.DEFAULT_FROM, Pagination.DEFAULT_FROM, query
.getFirstPaginationIndex());
// with a non mumeric value
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(GisgraphyServlet.FROM_PARAMETER, "a");
query = buildQuery(request);
assertEquals("When a wrong " + GisgraphyServlet.FROM_PARAMETER
+ " is specified, the parameter should be "
+ Pagination.DEFAULT_FROM, Pagination.DEFAULT_FROM, query
.getFirstPaginationIndex());
// test last pagination index
// with no value specified
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.removeParameter(GisgraphyServlet.TO_PARAMETER);
query = buildQuery(request);
// not specify
int expectedLastPagination = (StreetSearchQuery.DEFAULT_NB_RESULTS+query.getFirstPaginationIndex()-1);
assertEquals(
GisgraphyServlet.TO_PARAMETER
+ " is wrong when no "+GisgraphyServlet.TO_PARAMETER+" is specified ",
expectedLastPagination, query
.getLastPaginationIndex());
assertEquals("When no "
+ GisgraphyServlet.TO_PARAMETER
+ " is specified, the maxnumberOfResults should be "
+ StreetSearchQuery.DEFAULT_NB_RESULTS,
StreetSearchQuery.DEFAULT_NB_RESULTS, query
.getMaxNumberOfResults());
// too high
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.removeParameter(GisgraphyServlet.TO_PARAMETER);
request.setParameter(GisgraphyServlet.TO_PARAMETER,StreetSearchQuery.DEFAULT_MAX_RESULTS+100+"");
query = buildQuery(request);
expectedLastPagination = (StreetSearchQuery.DEFAULT_MAX_RESULTS+query.getFirstPaginationIndex()-1);
assertEquals("when "+
GisgraphyServlet.TO_PARAMETER
+ " is too high "+GisgraphyServlet.TO_PARAMETER+" should be limited",
expectedLastPagination, query
.getLastPaginationIndex());
assertEquals("when "+
GisgraphyServlet.TO_PARAMETER
+ " is too high "+GisgraphyServlet.TO_PARAMETER+" should be limited",
StreetSearchQuery.DEFAULT_MAX_RESULTS, query
.getMaxNumberOfResults());
// with a wrong value
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(GisgraphyServlet.TO_PARAMETER, "2");// to<from
query = buildQuery(request);
expectedLastPagination = (StreetSearchQuery.DEFAULT_NB_RESULTS+query.getFirstPaginationIndex()-1);
assertEquals( GisgraphyServlet.TO_PARAMETER
+ " is wrong when wrong "+GisgraphyServlet.TO_PARAMETER+" is specified ",
expectedLastPagination, query
.getLastPaginationIndex());
assertEquals("When a wrong " + GisgraphyServlet.TO_PARAMETER
+ " is specified, the maxnumberOfResults should be "
+ StreetSearchQuery.DEFAULT_NB_RESULTS,
StreetSearchQuery.DEFAULT_NB_RESULTS, query
.getMaxNumberOfResults());
assertEquals("a wrong to does not change the from value", 3, query
.getFirstPaginationIndex());
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
// non numeric
request.setParameter(GisgraphyServlet.TO_PARAMETER, "a");// to<from
query = buildQuery(request);
assertEquals("a wrong to does not change the from value", 3, query
.getFirstPaginationIndex());
expectedLastPagination = (StreetSearchQuery.DEFAULT_NB_RESULTS+query.getFirstPaginationIndex()-1);
assertEquals( GisgraphyServlet.TO_PARAMETER
+ " is wrong when non numeric "+GisgraphyServlet.TO_PARAMETER+" is specified ",
expectedLastPagination, query
.getLastPaginationIndex());
assertEquals("When a wrong " + GisgraphyServlet.TO_PARAMETER
+ " is specified, the maxnumberOfResults should not be > "
+ StreetSearchQuery.DEFAULT_NB_RESULTS,
StreetSearchQuery.DEFAULT_NB_RESULTS, query
.getMaxNumberOfResults());
// test indentation
// with no value specified
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.removeParameter(GisgraphyServlet.INDENT_PARAMETER);
query = buildQuery(request);
assertEquals("When no " + GisgraphyServlet.INDENT_PARAMETER
+ " is specified, the parameter should be set to default",Output.DEFAULT_INDENTATION,
query.isOutputIndented());
// with wrong value
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(GisgraphyServlet.INDENT_PARAMETER, "UNK");
query = buildQuery(request);
assertEquals("When wrong " + GisgraphyServlet.INDENT_PARAMETER
+ " is specified, the parameter should be set to false",Output.DEFAULT_INDENTATION,
query.isOutputIndented());
// test case sensitive
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(GisgraphyServlet.INDENT_PARAMETER, "true");
query = buildQuery(request);
assertTrue(GisgraphyServlet.INDENT_PARAMETER
+ " should be case insensitive ", query.isOutputIndented());
// test 'on' value
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(GisgraphyServlet.INDENT_PARAMETER, "oN");
query = buildQuery(request);
assertTrue(
GisgraphyServlet.INDENT_PARAMETER
+ " should be true for 'on' value (case insensitive and on value) ",
query.isOutputIndented());
// test outputFormat
// with no value specified
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.removeParameter(GisgraphyServlet.FORMAT_PARAMETER);
query = buildQuery(request);
assertEquals("When no " + GisgraphyServlet.FORMAT_PARAMETER
+ " is specified, the parameter should be set to "
+ OutputFormat.getDefault(), OutputFormat.getDefault(),
query.getOutputFormat());
// with wrong value
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(GisgraphyServlet.FORMAT_PARAMETER, "UNK");
query = buildQuery(request);
assertEquals("When wrong " + GisgraphyServlet.FORMAT_PARAMETER
+ " is specified, the parameter should be set to "
+ OutputFormat.getDefault(), OutputFormat.getDefault(),
query.getOutputFormat());
// test case sensitive
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(GisgraphyServlet.FORMAT_PARAMETER, "json");
query = buildQuery(request);
assertEquals(GisgraphyServlet.FORMAT_PARAMETER
+ " should be case insensitive ", OutputFormat.JSON, query
.getOutputFormat());
request = GisgraphyTestHelper.createMockHttpServletRequestForGeoloc();
request.setParameter(GisgraphyServlet.FORMAT_PARAMETER, "unsupported");
query = buildQuery(request);
assertEquals(GisgraphyServlet.FORMAT_PARAMETER
+ " should set default if not supported ", OutputFormat.getDefault(), query
.getOutputFormat());
// test streeSearchMode
// with no value specified
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.removeParameter(StreetServlet.STREET_SEARCH_MODE_PARAMETER);
query = buildQuery(request);
assertEquals(
"When no "
+ StreetServlet.STREET_SEARCH_MODE_PARAMETER
+ " is specified, the parameter should be set to defaultValue",StreetSearchMode.getDefault(), query
.getStreetSearchMode());
// with wrong value
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetServlet.STREET_SEARCH_MODE_PARAMETER, "unk");
query = buildQuery(request);
assertEquals(
"When wrong "
+ StreetServlet.STREET_SEARCH_MODE_PARAMETER
+ " is specified, the parameter should be set to the default value ",
StreetSearchMode.getDefault(),query
.getStreetSearchMode());
//test with good value
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetServlet.STREET_SEARCH_MODE_PARAMETER, StreetSearchMode.CONTAINS.toString());
query = buildQuery(request);
assertEquals(
"When good "
+ StreetServlet.STREET_SEARCH_MODE_PARAMETER
+ " is specified, the parameter should be set to the Equivalent streetSearchMode ",StreetSearchMode.CONTAINS,
query
.getStreetSearchMode());
//test case sensitivity
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetServlet.STREET_SEARCH_MODE_PARAMETER, StreetSearchMode.CONTAINS.toString().toLowerCase());
query = buildQuery(request);
assertEquals(
StreetServlet.STREET_SEARCH_MODE_PARAMETER
+ " should be case sensitive ",StreetSearchMode.CONTAINS,
query
.getStreetSearchMode());
// test streettype
// with no value specified
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.removeParameter(StreetSearchQuery.STREETTYPE_PARAMETER);
query = buildQuery(request);
assertNull(
"When no "
+ StreetSearchQuery.STREETTYPE_PARAMETER
+ " is specified, the parameter should be set to null", query
.getStreetType());
// with wrong value
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetSearchQuery.STREETTYPE_PARAMETER, "unk");
query = buildQuery(request);
assertNull(
"When wrong "
+ StreetSearchQuery.STREETTYPE_PARAMETER
+ " is specified, the parameter should be set to null ",
query
.getStreetType());
//test with good value
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetSearchQuery.STREETTYPE_PARAMETER, StreetType.BRIDLEWAY.toString());
query = buildQuery(request);
assertEquals(
"When good "
+ StreetSearchQuery.STREETTYPE_PARAMETER
+ " is specified, the parameter should be set to the Equivalent streettype ",StreetType.BRIDLEWAY,
query
.getStreetType());
//test case sensitivity
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetSearchQuery.STREETTYPE_PARAMETER, StreetType.BRIDLEWAY.toString().toLowerCase());
query = buildQuery(request);
assertEquals(
StreetSearchQuery.STREETTYPE_PARAMETER
+ " should be case sensitive ",StreetType.BRIDLEWAY,
query
.getStreetType());
// test oneWay
// with no value specified
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.removeParameter(StreetSearchQuery.ONEWAY_PARAMETER);
query = buildQuery(request);
assertNull("When no " + StreetSearchQuery.ONEWAY_PARAMETER
+ " is specified, the parameter should be set to null",
query.getOneWay());
// with wrong value
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetSearchQuery.ONEWAY_PARAMETER, "UNK");
query = buildQuery(request);
assertNull("When wrong " + StreetSearchQuery.ONEWAY_PARAMETER
+ " is specified, the parameter should be set to false",
query.getOneWay());
// test case sensitive
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetSearchQuery.ONEWAY_PARAMETER, "True");
query = buildQuery(request);
assertTrue(StreetSearchQuery.ONEWAY_PARAMETER
+ " should be case insensitive for true ", query.getOneWay());
// test With false
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetSearchQuery.ONEWAY_PARAMETER, "FaLse");
query = buildQuery(request);
assertFalse(StreetSearchQuery.ONEWAY_PARAMETER
+ " should be case insensitive for false ", query.getOneWay());
// test 'on' value
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetSearchQuery.ONEWAY_PARAMETER, "oN");
query = buildQuery(request);
assertTrue(
StreetSearchQuery.ONEWAY_PARAMETER
+ " should be true for 'on' value (case insensitive and on value) ",
query.getOneWay());
//name
//test With good value
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetSearchQuery.NAME_PARAMETER, "prefix");
query = buildQuery(request);
assertEquals(StreetSearchQuery.NAME_PARAMETER+" should be set when specified",request.getParameter(StreetSearchQuery.NAME_PARAMETER), query.getName());
// empty string
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetSearchQuery.NAME_PARAMETER, " ");
query = buildQuery(request);
assertNull(StreetSearchQuery.NAME_PARAMETER+" should be null when an empty String is specified", query.getName());
// too long string
request = GisgraphyTestHelper.createMockHttpServletRequestForGeoloc();
request.setParameter(StreetSearchQuery.NAME_PARAMETER, RandomStringUtils
.random(StreetSearchQuery.NAME_MAX_LENGTH) + 1);
try {
query = buildQuery(request);
fail("Name Prefix must have a maximmum length of "
+ StreetSearchQuery.NAME_MAX_LENGTH);
} catch (StreetSearchException e) {
}
// test Point
// with missing lat
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.removeParameter(StreetSearchQuery.LAT_PARAMETER);
try {
query = buildQuery(request);
} catch (RuntimeException e) {
fail("lattitude should be optionnal");
}
// with empty lat
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetSearchQuery.LAT_PARAMETER, "");
try {
query = buildQuery(request);
fail("Even if latitude is optional, it should be valid when specified");
} catch (RuntimeException e) {
}
// With wrong lat
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetSearchQuery.LAT_PARAMETER, "a");
try {
query = buildQuery(request);
fail("A wrong lat should throw");
} catch (RuntimeException e) {
}
// With too small lat
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetSearchQuery.LAT_PARAMETER, "-92");
try {
query = buildQuery(request);
fail("latitude should not accept latitude < -90");
} catch (RuntimeException e) {
}
// With too high lat
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetSearchQuery.LAT_PARAMETER, "92");
try {
query = buildQuery(request);
fail("latitude should not accept latitude > 90");
} catch (RuntimeException e) {
}
// with missing long
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.removeParameter(StreetSearchQuery.LONG_PARAMETER);
try {
query = buildQuery(request);
} catch (RuntimeException e) {
fail("longitude should be optional");
}
// with empty long
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetSearchQuery.LONG_PARAMETER, "");
try {
query = buildQuery(request);
fail("longitude should be valid even if optional");
} catch (RuntimeException e) {
}
// With wrong Long
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetSearchQuery.LONG_PARAMETER, "a");
try {
query = buildQuery(request);
fail("Even if latitude is optional, it should be valid when specified");
} catch (RuntimeException e) {
}
// with too small long
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetSearchQuery.LONG_PARAMETER, "-182");
try {
query = buildQuery(request);
fail("longitude should not accept longitude < -180");
} catch (RuntimeException e) {
}
// with too high long
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetSearchQuery.LONG_PARAMETER, "182");
try {
query = buildQuery(request);
fail("longitude should not accept longitude > 180");
} catch (RuntimeException e) {
}
// with long with comma
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetSearchQuery.LONG_PARAMETER, "10,3");
try {
query = buildQuery(request);
Assert.assertEquals(
"request should accept longitude with comma", 10.3D,
query.getLongitude().doubleValue(), 0.1);
} catch (RuntimeException e) {
}
// with long with point
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetSearchQuery.LONG_PARAMETER, "10.3");
try {
query = buildQuery(request);
Assert.assertEquals(
"request should accept longitude with comma", 10.3D,
query.getLongitude().doubleValue(), 0.1);
} catch (RuntimeException e) {
}
// with lat with comma
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetSearchQuery.LAT_PARAMETER, "10,3");
try {
query = buildQuery(request);
Assert.assertEquals(
"request should accept latitude with comma", 10.3D,
query.getLatitude().doubleValue(), 0.1);
} catch (RuntimeException e) {
}
// with lat with point
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetSearchQuery.LAT_PARAMETER, "10.3");
try {
query = buildQuery(request);
Assert.assertEquals(
"request should accept latitude with point", 10.3D,
query.getLatitude().doubleValue(), 0.1);
} catch (RuntimeException e) {
}
// test radius
// with missing radius
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.removeParameter(StreetSearchQuery.RADIUS_PARAMETER);
query = buildQuery(request);
assertEquals("When no " + StreetSearchQuery.RADIUS_PARAMETER
+ " is specified, the parameter should be set to "
+ GeolocQuery.DEFAULT_RADIUS, GeolocQuery.DEFAULT_RADIUS,
query.getRadius(), 0.1);
// With wrong radius
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetSearchQuery.RADIUS_PARAMETER, "a");
query = buildQuery(request);
assertEquals("When wrong " + StreetSearchQuery.RADIUS_PARAMETER
+ " is specified, the parameter should be set to "
+ GeolocQuery.DEFAULT_RADIUS, GeolocQuery.DEFAULT_RADIUS,
query.getRadius(), 0.1);
// radius with comma
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetSearchQuery.RADIUS_PARAMETER, "1,4");
query = buildQuery(request);
assertEquals("Radius should accept comma as decimal separator",
1.4D, query.getRadius(), 0.1);
// radius with point
request = GisgraphyTestHelper.createMockHttpServletRequestForStreetGeoloc();
request.setParameter(StreetSearchQuery.RADIUS_PARAMETER, "1.4");
query = buildQuery(request);
assertEquals("Radius should accept point as decimal separator",
1.4D, query.getRadius(), 0.1);
// distanceField default value
request = GisgraphyTestHelper.createMockHttpServletRequestForGeoloc();
query = buildQuery(request);
assertTrue("By default distanceField should be true",
query.hasDistanceField());
// distanceField case insensitive
request = GisgraphyTestHelper.createMockHttpServletRequestForGeoloc();
request.setParameter(GeolocQuery.DISTANCE_PARAMETER, "falSE");
query = buildQuery(request);
assertFalse("distanceField should be set when specified",
query.hasDistanceField());
// distanceField with off value
request = GisgraphyTestHelper.createMockHttpServletRequestForGeoloc();
request.setParameter(GeolocQuery.DISTANCE_PARAMETER, "oFF");
query = buildQuery(request);
assertFalse("distanceField should take off value into account",
query.hasDistanceField());
// distanceField with wrong value
request = GisgraphyTestHelper.createMockHttpServletRequestForGeoloc();
request.setParameter(GeolocQuery.DISTANCE_PARAMETER, "wrong value");
query = buildQuery(request);
assertTrue("distanceField should be kept to his default value if specified with wrong value",
query.hasDistanceField());
//callback not set
request = GisgraphyTestHelper.createMockHttpServletRequestForGeoloc();
query = buildQuery(request);
assertNull("callback should be null when not set",
query.getCallback());
//callback set with non alpha value
request = GisgraphyTestHelper.createMockHttpServletRequestForGeoloc();
request.setParameter(GeolocQuery.CALLBACK_PARAMETER, "doit(");
query = buildQuery(request);
assertNull("callback should not be set when not alphanumeric",
query.getCallback());
//callback set with alpha value
request = GisgraphyTestHelper.createMockHttpServletRequestForGeoloc();
request.setParameter(GeolocQuery.CALLBACK_PARAMETER, "doit");
query = buildQuery(request);
assertEquals("callback should not be set when alphanumeric",
"doit",query.getCallback());
//apiKey
request = GisgraphyTestHelper.createMockHttpServletRequestForGeoloc();
request.setParameter(GisgraphyServlet.APIKEY_PARAMETER, "apiKey");
query =buildQuery(request);
Assert.assertEquals("apiKey", query.getApikey());
}
private StreetSearchQuery buildQuery(MockHttpServletRequest request) {
return StreetSearchQueryHttpBuilder.getInstance().buildFromHttpRequest(request);
}
}