Catch boost bad_numeric_cast exception and let parser return an error
This commit is contained in:
parent
14b024e4dc
commit
240a7696da
@ -46,22 +46,23 @@ Feature: Status messages
|
|||||||
| ab |
|
| ab |
|
||||||
|
|
||||||
When I route I should get
|
When I route I should get
|
||||||
| request | status | message |
|
| request | status | message |
|
||||||
| route/v1/driving/1,1;1,2 | 200 | |
|
| route/v1/driving/1,1;1,2 | 200 | |
|
||||||
| nonsense | 400 | URL string malformed close to position 9: "nse" |
|
| route/v1/driving/-74697224,5.191564 | 400 | Query string malformed close to position 18 |
|
||||||
| nonsense/v1/driving/1,1;1,2 | 400 | Service nonsense not found! |
|
| nonsense | 400 | URL string malformed close to position 9: "nse" |
|
||||||
| | 400 | URL string malformed close to position 1: "/" |
|
| nonsense/v1/driving/1,1;1,2 | 400 | Service nonsense not found! |
|
||||||
| / | 400 | URL string malformed close to position 1: "//" |
|
| | 400 | URL string malformed close to position 1: "/" |
|
||||||
| ? | 400 | URL string malformed close to position 1: "/?" |
|
| / | 400 | URL string malformed close to position 1: "//" |
|
||||||
| route/v1/driving | 400 | URL string malformed close to position 17: "ing" |
|
| ? | 400 | URL string malformed close to position 1: "/?" |
|
||||||
| route/v1/driving/ | 400 | URL string malformed close to position 18: "ng/" |
|
| route/v1/driving | 400 | URL string malformed close to position 17: "ing" |
|
||||||
| route/v1/driving/1 | 400 | Query string malformed close to position 19 |
|
| route/v1/driving/ | 400 | URL string malformed close to position 18: "ng/" |
|
||||||
| route/v1/driving/1,1 | 400 | Number of coordinates needs to be at least two. |
|
| route/v1/driving/1 | 400 | Query string malformed close to position 19 |
|
||||||
| route/v1/driving/1,1,1 | 400 | Query string malformed close to position 21 |
|
| route/v1/driving/1,1 | 400 | Number of coordinates needs to be at least two. |
|
||||||
| route/v1/driving/x | 400 | Query string malformed close to position 18 |
|
| route/v1/driving/1,1,1 | 400 | Query string malformed close to position 21 |
|
||||||
| route/v1/driving/x,y | 400 | Query string malformed close to position 18 |
|
| route/v1/driving/x | 400 | Query string malformed close to position 18 |
|
||||||
| route/v1/driving/1,1; | 400 | Query string malformed close to position 21 |
|
| route/v1/driving/x,y | 400 | Query string malformed close to position 18 |
|
||||||
| route/v1/driving/1,1;1 | 400 | Query string malformed close to position 23 |
|
| route/v1/driving/1,1; | 400 | Query string malformed close to position 21 |
|
||||||
| route/v1/driving/1,1;1,1,1 | 400 | Query string malformed close to position 25 |
|
| route/v1/driving/1,1;1 | 400 | Query string malformed close to position 23 |
|
||||||
| route/v1/driving/1,1;x | 400 | Query string malformed close to position 21 |
|
| route/v1/driving/1,1;1,1,1 | 400 | Query string malformed close to position 25 |
|
||||||
| route/v1/driving/1,1;x,y | 400 | Query string malformed close to position 21 |
|
| route/v1/driving/1,1;x | 400 | Query string malformed close to position 21 |
|
||||||
|
| route/v1/driving/1,1;x,y | 400 | Query string malformed close to position 21 |
|
||||||
|
@ -55,6 +55,11 @@ boost::optional<ParameterT> parseParameters(std::string::iterator &iter,
|
|||||||
// iterator to the failing position. Extract the position from the exception ourselves.
|
// iterator to the failing position. Extract the position from the exception ourselves.
|
||||||
iter = failure.first;
|
iter = failure.first;
|
||||||
}
|
}
|
||||||
|
catch (const boost::numeric::bad_numeric_cast &e)
|
||||||
|
{
|
||||||
|
// this can happen if we get bad numeric values in the request, just handle
|
||||||
|
// as normal parser error
|
||||||
|
}
|
||||||
|
|
||||||
return boost::none;
|
return boost::none;
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,9 @@ template <typename ParameterT> std::size_t testInvalidOptions(std::string option
|
|||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(invalid_route_urls)
|
BOOST_AUTO_TEST_CASE(invalid_route_urls)
|
||||||
{
|
{
|
||||||
|
BOOST_CHECK_EQUAL(testInvalidOptions<RouteParameters>("a;3,4"), 0UL);
|
||||||
|
BOOST_CHECK_EQUAL(testInvalidOptions<RouteParameters>("120;3,4"), 3UL);
|
||||||
|
BOOST_CHECK_EQUAL(testInvalidOptions<RouteParameters>("90000000,2;3,4"), 0UL);
|
||||||
BOOST_CHECK_EQUAL(testInvalidOptions<RouteParameters>("1,2;3,4?overview=false&bla=foo"), 22UL);
|
BOOST_CHECK_EQUAL(testInvalidOptions<RouteParameters>("1,2;3,4?overview=false&bla=foo"), 22UL);
|
||||||
BOOST_CHECK_EQUAL(testInvalidOptions<RouteParameters>("1,2;3,4?overview=false&bearings=foo"),
|
BOOST_CHECK_EQUAL(testInvalidOptions<RouteParameters>("1,2;3,4?overview=false&bearings=foo"),
|
||||||
32UL);
|
32UL);
|
||||||
|
Loading…
Reference in New Issue
Block a user