public void dataServiceVersion() throws Exception {
ODataServiceFactory serviceFactory = mock(ODataServiceFactory.class);
final ODataService service = mockODataService(serviceFactory);
when(serviceFactory.createService(any(ODataContext.class))).thenReturn(service);
ODataRequest request =
mockODataRequest(ODataHttpMethod.GET, createPathSegments(UriType.URI0, false, false), null, null);
ODataContextImpl context = new ODataContextImpl(request, serviceFactory);
final ODataRequestHandler handler = new ODataRequestHandler(serviceFactory, service, context);
when(request.getRequestHeaderValue(ODataHttpHeaders.DATASERVICEVERSION)).thenReturn("1.0");
ODataResponse response = handler.handle(request);
assertEquals(HttpStatusCodes.PAYMENT_REQUIRED, response.getStatus());
when(request.getRequestHeaderValue(ODataHttpHeaders.DATASERVICEVERSION)).thenReturn("2.0");
response = handler.handle(request);
assertEquals(HttpStatusCodes.PAYMENT_REQUIRED, response.getStatus());
when(request.getRequestHeaderValue(ODataHttpHeaders.DATASERVICEVERSION)).thenReturn("3.0");
response = handler.handle(request);
assertEquals(HttpStatusCodes.BAD_REQUEST, response.getStatus());
when(request.getRequestHeaderValue(ODataHttpHeaders.DATASERVICEVERSION)).thenReturn("4.2");
response = handler.handle(request);
assertEquals(HttpStatusCodes.BAD_REQUEST, response.getStatus());
when(request.getRequestHeaderValue(ODataHttpHeaders.DATASERVICEVERSION)).thenReturn("42");
response = handler.handle(request);
assertEquals(HttpStatusCodes.BAD_REQUEST, response.getStatus());
when(request.getRequestHeaderValue(ODataHttpHeaders.DATASERVICEVERSION)).thenReturn("test.2.0");
response = handler.handle(request);
assertEquals(HttpStatusCodes.BAD_REQUEST, response.getStatus());
}