You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by sk...@apache.org on 2013/10/31 15:27:35 UTC
git commit: [OLINGO-54] check precondition when modifying a
concurrency-controlled entity
Updated Branches:
refs/heads/master 4ec25794f -> 77b0ac0f4
[OLINGO-54] check precondition when modifying a concurrency-controlled entity
Change-Id: Ibaaf847e03edcfbe56b32a259bd33535313afac4
Signed-off-by: Stephan Klevenz <sk...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/commit/77b0ac0f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/tree/77b0ac0f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/diff/77b0ac0f
Branch: refs/heads/master
Commit: 77b0ac0f44d8a88f05aa2c1f79371294a3971bd2
Parents: 4ec2579
Author: Klaus Straubinger <kl...@sap.com>
Authored: Thu Oct 31 10:14:58 2013 +0100
Committer: Stephan Klevenz <sk...@apache.org>
Committed: Thu Oct 31 15:27:03 2013 +0100
----------------------------------------------------------------------
.../olingo/odata2/core/ODataRequestHandler.java | 42 +-
.../core/ODataRequestHandlerValidationTest.java | 434 ++++++++-----------
.../fit/basic/RequestContentTypeTest.java | 4 +-
.../olingo/odata2/fit/ref/MiscChangeTest.java | 28 +-
.../odata2/fit/ref/PropertyXmlChangeTest.java | 9 +-
5 files changed, 242 insertions(+), 275 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/77b0ac0f/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestHandler.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestHandler.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestHandler.java
index 2c5c32d..6732d93 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestHandler.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestHandler.java
@@ -29,12 +29,16 @@ import org.apache.olingo.odata2.api.commons.HttpHeaders;
import org.apache.olingo.odata2.api.commons.HttpStatusCodes;
import org.apache.olingo.odata2.api.commons.ODataHttpHeaders;
import org.apache.olingo.odata2.api.commons.ODataHttpMethod;
+import org.apache.olingo.odata2.api.edm.EdmConcurrencyMode;
+import org.apache.olingo.odata2.api.edm.EdmEntityType;
import org.apache.olingo.odata2.api.edm.EdmException;
+import org.apache.olingo.odata2.api.edm.EdmFacets;
import org.apache.olingo.odata2.api.edm.EdmProperty;
import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
import org.apache.olingo.odata2.api.exception.ODataBadRequestException;
import org.apache.olingo.odata2.api.exception.ODataException;
import org.apache.olingo.odata2.api.exception.ODataMethodNotAllowedException;
+import org.apache.olingo.odata2.api.exception.ODataPreconditionRequiredException;
import org.apache.olingo.odata2.api.exception.ODataUnsupportedMediaTypeException;
import org.apache.olingo.odata2.api.processor.ODataContext;
import org.apache.olingo.odata2.api.processor.ODataProcessor;
@@ -113,6 +117,12 @@ public class ODataRequestHandler {
ContentType acceptContentType =
new ContentNegotiator().doContentNegotiation(request, uriInfo, supportedContentTypes);
+ checkConditions(method, uriInfo,
+ context.getRequestHeader(HttpHeaders.IF_MATCH),
+ context.getRequestHeader(HttpHeaders.IF_NONE_MATCH),
+ context.getRequestHeader(HttpHeaders.IF_MODIFIED_SINCE),
+ context.getRequestHeader(HttpHeaders.IF_UNMODIFIED_SINCE));
+
timingHandle2 = context.startRuntimeMeasurement("Dispatcher", "dispatch");
odataResponse =
dispatcher.dispatch(method, uriInfo, request.getBody(), request.getContentType(), acceptContentType
@@ -265,7 +275,7 @@ public class ODataRequestHandler {
throw new ODataMethodNotAllowedException(ODataMethodNotAllowedException.DISPATCH);
} else {
if (uriInfo.getFormat() != null) {
-// throw new ODataMethodNotAllowedException(ODataMethodNotAllowedException.DISPATCH);
+ // throw new ODataMethodNotAllowedException(ODataMethodNotAllowedException.DISPATCH);
throw new ODataBadRequestException(ODataBadRequestException.INVALID_SYNTAX);
}
}
@@ -475,6 +485,36 @@ public class ODataRequestHandler {
return ContentType.createAsCustom(service.getSupportedContentTypes(processorFeature));
}
+ /**
+ * A modifying request that targets an entity with enabled concurrency control
+ * must contain at least one concurrency-control HTTP request header field.
+ */
+ private static void checkConditions(final ODataHttpMethod method, final UriInfoImpl uriInfo,
+ final String ifMatch, final String ifNoneMatch, final String ifModifiedSince, final String ifUnmodifiedSince)
+ throws ODataException {
+ if ((method == ODataHttpMethod.PUT || method == ODataHttpMethod.PATCH || method == ODataHttpMethod.MERGE
+ || method == ODataHttpMethod.DELETE)
+ && ifMatch == null && ifNoneMatch == null && ifModifiedSince == null && ifUnmodifiedSince == null
+ && Arrays.asList(UriType.URI2, UriType.URI6A, UriType.URI3, UriType.URI4, UriType.URI5, UriType.URI17)
+ .contains(uriInfo.getUriType())
+ && hasConcurrencyControl(uriInfo.getTargetEntitySet().getEntityType())) {
+ throw new ODataPreconditionRequiredException(ODataPreconditionRequiredException.COMMON);
+ }
+ }
+
+ private static boolean hasConcurrencyControl(final EdmEntityType entityType) throws EdmException {
+ boolean concurrency = false;
+ for (final String propertyName : entityType.getPropertyNames()) {
+ final EdmFacets facets = ((EdmProperty) entityType.getProperty(propertyName)).getFacets();
+ if (facets != null && facets.getConcurrencyMode() != null
+ && facets.getConcurrencyMode() == EdmConcurrencyMode.Fixed) {
+ concurrency = true;
+ break;
+ }
+ }
+ return concurrency;
+ }
+
private static String getDebugValue(final ODataContext context, final Map<String, String> queryParameters) {
return context.isInDebugMode() ? getQueryDebugValue(queryParameters) : null;
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/77b0ac0f/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ODataRequestHandlerValidationTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ODataRequestHandlerValidationTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ODataRequestHandlerValidationTest.java
index 72780c8..0994d51 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ODataRequestHandlerValidationTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ODataRequestHandlerValidationTest.java
@@ -35,10 +35,12 @@ import java.util.Map;
import org.apache.olingo.odata2.api.ODataService;
import org.apache.olingo.odata2.api.ODataServiceFactory;
import org.apache.olingo.odata2.api.commons.HttpContentType;
+import org.apache.olingo.odata2.api.commons.HttpHeaders;
import org.apache.olingo.odata2.api.commons.HttpStatusCodes;
import org.apache.olingo.odata2.api.commons.ODataHttpHeaders;
import org.apache.olingo.odata2.api.commons.ODataHttpMethod;
import org.apache.olingo.odata2.api.edm.Edm;
+import org.apache.olingo.odata2.api.edm.EdmConcurrencyMode;
import org.apache.olingo.odata2.api.edm.EdmEntityType;
import org.apache.olingo.odata2.api.edm.EdmFacets;
import org.apache.olingo.odata2.api.edm.EdmFunctionImport;
@@ -76,8 +78,7 @@ import org.junit.Test;
/**
* Tests for the validation of HTTP method, URI path, query options,
- * and request-body content type.
- *
+ * content types, and conditional-handling HTTP headers.
*/
public class ODataRequestHandlerValidationTest extends BaseTest {
@@ -214,11 +215,9 @@ public class ODataRequestHandlerValidationTest extends BaseTest {
return map;
}
- private ODataRequest mockODataRequest(
- final ODataHttpMethod method,
- final List<String> pathSegments,
- final Map<String, String> queryParameters,
- final List<String> acceptHeaders,
+ private ODataRequest mockODataRequest(final ODataHttpMethod method,
+ final List<String> pathSegments, final Map<String, String> queryParameters,
+ final String httpHeaderName, final String httpHeaderValue,
final String requestContentType) throws ODataException {
ODataRequest request = mock(ODataRequest.class);
when(request.getMethod()).thenReturn(method);
@@ -231,32 +230,17 @@ public class ODataRequestHandlerValidationTest extends BaseTest {
}
when(pathInfo.getODataSegments()).thenReturn(segments);
when(request.getPathInfo()).thenReturn(pathInfo);
- when(request.getQueryParameters())
- .thenReturn(queryParameters == null ? new HashMap<String, String>() : queryParameters);
- when(request.getContentType()).thenReturn(requestContentType);
- when(request.getAcceptHeaders()).thenReturn(acceptHeaders);
- String acceptHeadersAsString = null;
- for (String string : acceptHeaders) {
- if (acceptHeadersAsString == null) {
- acceptHeadersAsString = string;
- } else {
- acceptHeadersAsString += ", " + string;
- }
+ when(request.getQueryParameters()).thenReturn(
+ queryParameters == null ? Collections.<String, String> emptyMap() : queryParameters);
+ when(request.getContentType()).thenReturn(
+ requestContentType == null ? HttpContentType.APPLICATION_JSON : requestContentType);
+ when(request.getRequestHeaderValue(httpHeaderName)).thenReturn(httpHeaderValue);
+ if (httpHeaderName == HttpHeaders.ACCEPT) {
+ when(request.getAcceptHeaders()).thenReturn(Arrays.asList(httpHeaderValue));
}
- when(request.getRequestHeaderValue("Accept")).thenReturn(acceptHeadersAsString);
return request;
}
- private ODataRequest mockODataRequest(
- final ODataHttpMethod method,
- final List<String> pathSegments,
- final Map<String, String> queryParameters,
- final String requestContentType) throws ODataException {
-
- List<String> acceptHeaders = new ArrayList<String>(0);
- return mockODataRequest(method, pathSegments, queryParameters, acceptHeaders, requestContentType);
- }
-
private ODataService mockODataService(final ODataServiceFactory serviceFactory) throws ODataException {
ODataService service = DispatcherTest.getMockService();
when(service.getEntityDataModel()).thenReturn(edm);
@@ -266,21 +250,18 @@ public class ODataRequestHandlerValidationTest extends BaseTest {
when(service.getSupportedContentTypes(BatchProcessor.class)).thenReturn(
Arrays.asList(HttpContentType.MULTIPART_MIXED));
- when(service.getSupportedContentTypes(EntityProcessor.class)).thenReturn(Arrays.asList(
- HttpContentType.APPLICATION_ATOM_XML_ENTRY_UTF8,
- HttpContentType.APPLICATION_ATOM_XML_UTF8,
- HttpContentType.APPLICATION_JSON,
- HttpContentType.APPLICATION_JSON_VERBOSE,
- HttpContentType.APPLICATION_JSON_UTF8,
- HttpContentType.APPLICATION_JSON_UTF8_VERBOSE,
- HttpContentType.APPLICATION_XML_UTF8));
-
final List<String> jsonAndXml = Arrays.asList(
HttpContentType.APPLICATION_JSON,
HttpContentType.APPLICATION_JSON_VERBOSE,
HttpContentType.APPLICATION_JSON_UTF8,
HttpContentType.APPLICATION_JSON_UTF8_VERBOSE,
HttpContentType.APPLICATION_XML_UTF8);
+ List<String> atomEntryAndJsonAndXml = new ArrayList<String>();
+ atomEntryAndJsonAndXml.add(HttpContentType.APPLICATION_ATOM_XML_ENTRY_UTF8);
+ atomEntryAndJsonAndXml.add(HttpContentType.APPLICATION_ATOM_XML_UTF8);
+ atomEntryAndJsonAndXml.addAll(jsonAndXml);
+ when(service.getSupportedContentTypes(EntityProcessor.class)).thenReturn(atomEntryAndJsonAndXml);
+
when(service.getSupportedContentTypes(FunctionImportProcessor.class)).thenReturn(jsonAndXml);
when(service.getSupportedContentTypes(EntityLinkProcessor.class)).thenReturn(jsonAndXml);
when(service.getSupportedContentTypes(EntityLinksProcessor.class)).thenReturn(jsonAndXml);
@@ -292,94 +273,74 @@ public class ODataRequestHandlerValidationTest extends BaseTest {
when(service.getSupportedContentTypes(EntitySimplePropertyValueProcessor.class)).thenReturn(wildcard);
when(service.getSupportedContentTypes(FunctionImportValueProcessor.class)).thenReturn(wildcard);
- when(service.getSupportedContentTypes(EntitySetProcessor.class)).thenReturn(Arrays.asList(
- HttpContentType.APPLICATION_ATOM_XML_FEED_UTF8,
- HttpContentType.APPLICATION_ATOM_XML_UTF8,
- HttpContentType.APPLICATION_JSON,
- HttpContentType.APPLICATION_JSON_VERBOSE,
- HttpContentType.APPLICATION_JSON_UTF8,
- HttpContentType.APPLICATION_JSON_UTF8_VERBOSE,
- HttpContentType.APPLICATION_XML_UTF8));
+ List<String> atomFeedAndJsonAndXml = new ArrayList<String>();
+ atomFeedAndJsonAndXml.add(HttpContentType.APPLICATION_ATOM_XML_FEED_UTF8);
+ atomFeedAndJsonAndXml.add(HttpContentType.APPLICATION_ATOM_XML_UTF8);
+ atomFeedAndJsonAndXml.addAll(jsonAndXml);
+ when(service.getSupportedContentTypes(EntitySetProcessor.class)).thenReturn(atomFeedAndJsonAndXml);
when(service.getSupportedContentTypes(MetadataProcessor.class)).thenReturn(Arrays.asList(
HttpContentType.APPLICATION_XML_UTF8));
- when(service.getSupportedContentTypes(ServiceDocumentProcessor.class)).thenReturn(Arrays.asList(
- HttpContentType.APPLICATION_ATOM_SVC_UTF8,
- HttpContentType.APPLICATION_JSON,
- HttpContentType.APPLICATION_JSON_VERBOSE,
- HttpContentType.APPLICATION_JSON_UTF8,
- HttpContentType.APPLICATION_JSON_UTF8_VERBOSE,
- HttpContentType.APPLICATION_XML_UTF8));
+ List<String> atomSvcAndJsonAndXml = new ArrayList<String>();
+ atomSvcAndJsonAndXml.add(HttpContentType.APPLICATION_ATOM_SVC_UTF8);
+ atomSvcAndJsonAndXml.addAll(jsonAndXml);
+ when(service.getSupportedContentTypes(ServiceDocumentProcessor.class)).thenReturn(atomSvcAndJsonAndXml);
return service;
}
- private ODataResponse executeRequest(final ODataHttpMethod method,
+ private void executeAndValidateRequest(final ODataHttpMethod method,
final List<String> pathSegments,
final Map<String, String> queryParameters,
- final String requestContentType) throws ODataException {
+ final String httpHeaderName, final String httpHeaderValue,
+ final String requestContentType,
+ final HttpStatusCodes expectedStatusCode) throws ODataException {
+
ODataServiceFactory serviceFactory = mock(ODataServiceFactory.class);
final ODataService service = mockODataService(serviceFactory);
when(serviceFactory.createService(any(ODataContext.class))).thenReturn(service);
- final ODataRequest request = mockODataRequest(method, pathSegments, queryParameters, requestContentType);
+ final ODataRequest request = mockODataRequest(method, pathSegments, queryParameters,
+ httpHeaderName, httpHeaderValue, requestContentType);
final ODataContextImpl context = new ODataContextImpl(request, serviceFactory);
- return new ODataRequestHandler(serviceFactory, service, context).handle(request);
- }
-
- private void executeAndValidateRequest(final ODataHttpMethod method,
- final List<String> pathSegments,
- final Map<String, String> queryParameters,
- final String requestContentType,
- final HttpStatusCodes expectedStatusCode) throws ODataException {
-
- final ODataResponse response = executeRequest(method, pathSegments, queryParameters, requestContentType);
+ final ODataResponse response = new ODataRequestHandler(serviceFactory, service, context).handle(request);
assertNotNull(response);
assertEquals(expectedStatusCode == null ? HttpStatusCodes.PAYMENT_REQUIRED : expectedStatusCode,
response.getStatus());
}
- private void executeAndValidateGetRequest(
- final List<String> pathSegments,
- final Map<String, String> queryParameters,
- final List<String> acceptHeaders,
+ private void executeAndValidateRequest(final ODataHttpMethod method, final UriType uriType,
+ final String requestContentType,
final HttpStatusCodes expectedStatusCode) throws ODataException {
-
- executeAndValidateRequest(ODataHttpMethod.GET, pathSegments, queryParameters, acceptHeaders, null,
+ executeAndValidateRequest(method, createPathSegments(uriType, false, false), null, null, null, requestContentType,
expectedStatusCode);
}
- private void executeAndValidateRequest(final ODataHttpMethod method,
- final List<String> pathSegments,
- final Map<String, String> queryParameters,
- final List<String> acceptHeaders,
- final String requestContentType,
+ private void executeAndValidateHeaderRequest(final ODataHttpMethod method, final UriType uriType,
+ final String httpHeaderName, final String httpHeaderValue,
final HttpStatusCodes expectedStatusCode) throws ODataException {
+ executeAndValidateRequest(method, createPathSegments(uriType, false, false), null, httpHeaderName, httpHeaderValue,
+ null, expectedStatusCode);
+ }
- ODataServiceFactory serviceFactory = mock(ODataServiceFactory.class);
- final ODataService service = mockODataService(serviceFactory);
- when(serviceFactory.createService(any(ODataContext.class))).thenReturn(service);
-
- final ODataRequest request =
- mockODataRequest(method, pathSegments, queryParameters, acceptHeaders, requestContentType);
- final ODataContextImpl context = new ODataContextImpl(request, serviceFactory);
-
- final ODataResponse response = new ODataRequestHandler(serviceFactory, service, context).handle(request);
- assertNotNull(response);
- assertEquals(expectedStatusCode == null ? HttpStatusCodes.PAYMENT_REQUIRED : expectedStatusCode,
- response.getStatus());
+ private void checkAcceptHeader(final UriType uriType, final String acceptHeader,
+ final HttpStatusCodes expectedStatusCode) throws ODataException {
+ executeAndValidateHeaderRequest(ODataHttpMethod.GET, uriType, HttpHeaders.ACCEPT, acceptHeader,
+ expectedStatusCode);
}
private void checkValueContentType(final ODataHttpMethod method, final UriType uriType,
final String requestContentType) throws Exception {
- executeAndValidateRequest(method, createPathSegments(uriType, false, true), null, requestContentType, null);
+ executeAndValidateRequest(method, createPathSegments(uriType, false, true), null, null, null, requestContentType,
+ null);
}
private void wrongRequest(final ODataHttpMethod method, final List<String> pathSegments,
final Map<String, String> queryParameters) throws ODataException {
- executeAndValidateRequest(method, pathSegments, queryParameters, null, HttpStatusCodes.METHOD_NOT_ALLOWED);
+ executeAndValidateRequest(method, pathSegments, queryParameters, null, null, null,
+ HttpStatusCodes.METHOD_NOT_ALLOWED);
}
private void wrongOptions(final ODataHttpMethod method, final UriType uriType,
@@ -421,79 +382,51 @@ public class ODataRequestHandlerValidationTest extends BaseTest {
private void wrongNavigationPath(final ODataHttpMethod method, final UriType uriType,
final HttpStatusCodes expectedStatusCode) throws ODataException {
- executeAndValidateRequest(method, createPathSegments(uriType, true, false), null, null, expectedStatusCode);
- }
-
- private void wrongRequestContentType(final ODataHttpMethod method, final UriType uriType,
- final ContentType requestContentType) throws ODataException {
- wrongRequestContentType(method, uriType, false, requestContentType);
+ executeAndValidateRequest(method, createPathSegments(uriType, true, false), null, null, null, null,
+ expectedStatusCode);
}
private void wrongRequestContentType(final ODataHttpMethod method, final UriType uriType, final boolean isValue,
final ContentType requestContentType) throws ODataException {
- wrongRequestContentType(method, uriType, isValue, requestContentType.toContentTypeString());
+ executeAndValidateRequest(method, createPathSegments(uriType, false, isValue), null, null, null,
+ requestContentType.toContentTypeString(), HttpStatusCodes.UNSUPPORTED_MEDIA_TYPE);
}
- private void wrongRequestContentType(final ODataHttpMethod method, final UriType uriType, final boolean isValue,
- final String requestContentType) throws ODataException {
- executeAndValidateRequest(method, createPathSegments(uriType, false, isValue), null, requestContentType,
- HttpStatusCodes.UNSUPPORTED_MEDIA_TYPE);
+ private void wrongRequestContentType(final ODataHttpMethod method, final UriType uriType,
+ final ContentType requestContentType) throws ODataException {
+ wrongRequestContentType(method, uriType, false, requestContentType);
}
@Test
public void dataServiceVersion() throws Exception {
- ODataServiceFactory serviceFactory = mock(ODataServiceFactory.class);
- final ODataService service = mockODataService(serviceFactory);
- when(serviceFactory.createService(any(ODataContext.class))).thenReturn(service);
+ executeAndValidateHeaderRequest(ODataHttpMethod.GET, UriType.URI0,
+ ODataHttpHeaders.DATASERVICEVERSION, "1.0", null);
+ executeAndValidateHeaderRequest(ODataHttpMethod.GET, UriType.URI0,
+ ODataHttpHeaders.DATASERVICEVERSION, "2.0", null);
- 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());
+ executeAndValidateHeaderRequest(ODataHttpMethod.GET, UriType.URI0,
+ ODataHttpHeaders.DATASERVICEVERSION, "3.0", HttpStatusCodes.BAD_REQUEST);
+ executeAndValidateHeaderRequest(ODataHttpMethod.GET, UriType.URI0,
+ ODataHttpHeaders.DATASERVICEVERSION, "4.2", HttpStatusCodes.BAD_REQUEST);
+ executeAndValidateHeaderRequest(ODataHttpMethod.GET, UriType.URI0,
+ ODataHttpHeaders.DATASERVICEVERSION, "42", HttpStatusCodes.BAD_REQUEST);
+ executeAndValidateHeaderRequest(ODataHttpMethod.GET, UriType.URI0,
+ ODataHttpHeaders.DATASERVICEVERSION, "test.2.0", HttpStatusCodes.BAD_REQUEST);
}
@Test
public void allowedMethods() throws Exception {
- executeAndValidateRequest(ODataHttpMethod.GET, createPathSegments(UriType.URI0, false, false), null, null, null);
- executeAndValidateRequest(ODataHttpMethod.GET, createPathSegments(UriType.URI1, false, false), null, null, null);
- executeAndValidateRequest(ODataHttpMethod.POST, createPathSegments(UriType.URI1, false, false), null,
- HttpContentType.APPLICATION_JSON, null);
- executeAndValidateRequest(ODataHttpMethod.GET, createPathSegments(UriType.URI2, false, false), null, null, null);
- executeAndValidateRequest(ODataHttpMethod.GET, createPathSegments(UriType.URI3, false, false), null, null, null);
- executeAndValidateRequest(ODataHttpMethod.PATCH, createPathSegments(UriType.URI3, false, false), null,
- HttpContentType.APPLICATION_JSON, null);
- executeAndValidateRequest(ODataHttpMethod.MERGE, createPathSegments(UriType.URI3, false, false), null,
- HttpContentType.APPLICATION_JSON, null);
- executeAndValidateRequest(ODataHttpMethod.GET, createPathSegments(UriType.URI4, false, false), null, null, null);
- executeAndValidateRequest(ODataHttpMethod.POST, createPathSegments(UriType.URI9, false, false), null,
- HttpContentType.MULTIPART_MIXED, null);
- executeAndValidateRequest(ODataHttpMethod.GET, createPathSegments(UriType.URI15, false, false), null, null, null);
- executeAndValidateRequest(ODataHttpMethod.GET, createPathSegments(UriType.URI17, false, false), null, null, null);
+ executeAndValidateRequest(ODataHttpMethod.GET, UriType.URI0, null, null);
+ executeAndValidateRequest(ODataHttpMethod.GET, UriType.URI1, null, null);
+ executeAndValidateRequest(ODataHttpMethod.POST, UriType.URI1, HttpContentType.APPLICATION_JSON, null);
+ executeAndValidateRequest(ODataHttpMethod.GET, UriType.URI2, null, null);
+ executeAndValidateRequest(ODataHttpMethod.GET, UriType.URI3, null, null);
+ executeAndValidateRequest(ODataHttpMethod.PATCH, UriType.URI3, HttpContentType.APPLICATION_JSON, null);
+ executeAndValidateRequest(ODataHttpMethod.MERGE, UriType.URI3, HttpContentType.APPLICATION_JSON, null);
+ executeAndValidateRequest(ODataHttpMethod.GET, UriType.URI4, null, null);
+ executeAndValidateRequest(ODataHttpMethod.POST, UriType.URI9, HttpContentType.MULTIPART_MIXED, null);
+ executeAndValidateRequest(ODataHttpMethod.GET, UriType.URI15, null, null);
+ executeAndValidateRequest(ODataHttpMethod.GET, UriType.URI17, null, null);
}
@Test
@@ -572,14 +505,11 @@ public class ODataRequestHandlerValidationTest extends BaseTest {
wrongOptions(ODataHttpMethod.PUT, UriType.URI17, false, true, false, false, false, false, false, false, false);
executeAndValidateRequest(ODataHttpMethod.PUT, createPathSegments(UriType.URI17, false, false),
- createOptions(true, false, false, false, false, false, false, false, false),
- null, HttpStatusCodes.BAD_REQUEST);
-
+ createOptions(true, false, false, false, false, false, false, false, false), null, null, null,
+ HttpStatusCodes.BAD_REQUEST);
executeAndValidateRequest(ODataHttpMethod.DELETE, createPathSegments(UriType.URI17, false, false),
- createOptions(true, false, false, false, false, false, false, false, false),
- null, HttpStatusCodes.BAD_REQUEST);
-// wrongOptions(ODataHttpMethod.DELETE, UriType.URI17, true, false, false, false, false, false, false, false, false);
-
+ createOptions(true, false, false, false, false, false, false, false, false), null, null, null,
+ HttpStatusCodes.BAD_REQUEST);
wrongOptions(ODataHttpMethod.DELETE, UriType.URI17, false, true, false, false, false, false, false, false, false);
}
@@ -630,119 +560,86 @@ public class ODataRequestHandlerValidationTest extends BaseTest {
@Test
public void requestAcceptHeader() throws Exception {
- executeAndValidateGetRequest(createPathSegments(UriType.URI1, false, false), null,
- Arrays.asList(HttpContentType.APPLICATION_JSON), null);
- executeAndValidateGetRequest(createPathSegments(UriType.URI2, false, false), null,
- Arrays.asList(HttpContentType.APPLICATION_JSON), null);
- executeAndValidateGetRequest(createPathSegments(UriType.URI3, false, false), null,
- Arrays.asList(HttpContentType.APPLICATION_JSON), null);
- executeAndValidateGetRequest(createPathSegments(UriType.URI4, false, false), null,
- Arrays.asList(HttpContentType.APPLICATION_JSON), null);
- executeAndValidateGetRequest(createPathSegments(UriType.URI5, false, false), null,
- Arrays.asList(HttpContentType.APPLICATION_JSON), null);
- executeAndValidateGetRequest(createPathSegments(UriType.URI6A, false, false), null,
- Arrays.asList(HttpContentType.APPLICATION_JSON), null);
- executeAndValidateGetRequest(createPathSegments(UriType.URI6B, false, false), null,
- Arrays.asList(HttpContentType.APPLICATION_JSON), null);
- executeAndValidateGetRequest(createPathSegments(UriType.URI7A, false, false), null,
- Arrays.asList(HttpContentType.APPLICATION_JSON), null);
- executeAndValidateGetRequest(createPathSegments(UriType.URI7B, false, false), null,
- Arrays.asList(HttpContentType.APPLICATION_JSON), null);
- executeAndValidateGetRequest(createPathSegments(UriType.URI8, false, false), null,
- Arrays.asList(HttpContentType.APPLICATION_XML), null);
- // in discussion, hence currently not implemented (see ODataRequestHandler#doContentNegotiation(...))
-// executeAndValidateGetRequest(createPathSegments(UriType.URI8, false, false), null,
-// Arrays.asList(HttpContentType.TEXT_PLAIN), null);
- executeAndValidateGetRequest(createPathSegments(UriType.URI9, false, false), null,
- Arrays.asList(HttpContentType.APPLICATION_XML), HttpStatusCodes.METHOD_NOT_ALLOWED);
- executeAndValidateGetRequest(createPathSegments(UriType.URI15, false, false), null,
- Arrays.asList(HttpContentType.TEXT_PLAIN), null);
- executeAndValidateGetRequest(createPathSegments(UriType.URI16, false, false), null,
- Arrays.asList(HttpContentType.TEXT_PLAIN), null);
- executeAndValidateGetRequest(createPathSegments(UriType.URI17, false, true), null,
- Arrays.asList(HttpContentType.APPLICATION_OCTET_STREAM), null);
- executeAndValidateGetRequest(createPathSegments(UriType.URI50A, false, false), null,
- Arrays.asList(HttpContentType.APPLICATION_XML), null);
- executeAndValidateGetRequest(createPathSegments(UriType.URI50B, false, false), null,
- Arrays.asList(HttpContentType.APPLICATION_XML), null);
+ checkAcceptHeader(UriType.URI0, HttpContentType.APPLICATION_JSON, null);
+ checkAcceptHeader(UriType.URI1, HttpContentType.APPLICATION_JSON, null);
+ checkAcceptHeader(UriType.URI2, HttpContentType.APPLICATION_JSON, null);
+ checkAcceptHeader(UriType.URI3, HttpContentType.APPLICATION_JSON, null);
+ checkAcceptHeader(UriType.URI4, HttpContentType.APPLICATION_JSON, null);
+ checkAcceptHeader(UriType.URI5, HttpContentType.APPLICATION_JSON, null);
+ checkAcceptHeader(UriType.URI6A, HttpContentType.APPLICATION_JSON, null);
+ checkAcceptHeader(UriType.URI6B, HttpContentType.APPLICATION_JSON, null);
+ checkAcceptHeader(UriType.URI7A, HttpContentType.APPLICATION_JSON, null);
+ checkAcceptHeader(UriType.URI7B, HttpContentType.APPLICATION_JSON, null);
+ checkAcceptHeader(UriType.URI8, HttpContentType.APPLICATION_XML, null);
+ checkAcceptHeader(UriType.URI9, HttpContentType.APPLICATION_XML, HttpStatusCodes.METHOD_NOT_ALLOWED);
+ checkAcceptHeader(UriType.URI10, HttpContentType.APPLICATION_JSON, null);
+ checkAcceptHeader(UriType.URI11, HttpContentType.APPLICATION_JSON, null);
+ checkAcceptHeader(UriType.URI12, HttpContentType.APPLICATION_JSON, null);
+ checkAcceptHeader(UriType.URI13, HttpContentType.APPLICATION_JSON, null);
+ checkAcceptHeader(UriType.URI14, HttpContentType.APPLICATION_JSON, null);
+ checkAcceptHeader(UriType.URI15, HttpContentType.TEXT_PLAIN, null);
+ checkAcceptHeader(UriType.URI16, HttpContentType.TEXT_PLAIN, null);
+ checkAcceptHeader(UriType.URI17, HttpContentType.APPLICATION_OCTET_STREAM, null);
+ checkAcceptHeader(UriType.URI50A, HttpContentType.TEXT_PLAIN, null);
+ checkAcceptHeader(UriType.URI50B, HttpContentType.TEXT_PLAIN, null);
+
+ checkAcceptHeader(UriType.URI8, HttpContentType.APPLICATION_JSON, HttpStatusCodes.NOT_ACCEPTABLE);
}
@Test
public void requestContentType() throws Exception {
- executeAndValidateRequest(ODataHttpMethod.PUT, createPathSegments(UriType.URI2, false, false), null,
- HttpContentType.APPLICATION_XML, null);
- executeAndValidateRequest(ODataHttpMethod.PATCH, createPathSegments(UriType.URI2, false, false), null,
- HttpContentType.APPLICATION_XML, null);
- executeAndValidateRequest(ODataHttpMethod.MERGE, createPathSegments(UriType.URI2, false, false), null,
- HttpContentType.APPLICATION_XML, null);
-
- executeAndValidateRequest(ODataHttpMethod.PUT, createPathSegments(UriType.URI3, false, false), null,
- HttpContentType.APPLICATION_XML, null);
- executeAndValidateRequest(ODataHttpMethod.PATCH, createPathSegments(UriType.URI3, false, false), null,
- HttpContentType.APPLICATION_XML, null);
- executeAndValidateRequest(ODataHttpMethod.MERGE, createPathSegments(UriType.URI3, false, false), null,
- HttpContentType.APPLICATION_XML, null);
-
- executeAndValidateRequest(ODataHttpMethod.PUT, createPathSegments(UriType.URI4, false, false), null,
- HttpContentType.APPLICATION_XML, null);
- executeAndValidateRequest(ODataHttpMethod.PATCH, createPathSegments(UriType.URI4, false, false), null,
- HttpContentType.APPLICATION_XML, null);
- executeAndValidateRequest(ODataHttpMethod.MERGE, createPathSegments(UriType.URI4, false, false), null,
- HttpContentType.APPLICATION_XML, null);
-
- executeAndValidateRequest(ODataHttpMethod.PUT, createPathSegments(UriType.URI5, false, false), null,
- HttpContentType.APPLICATION_XML, null);
- executeAndValidateRequest(ODataHttpMethod.PATCH, createPathSegments(UriType.URI5, false, false), null,
- HttpContentType.APPLICATION_XML, null);
- executeAndValidateRequest(ODataHttpMethod.MERGE, createPathSegments(UriType.URI5, false, false), null,
- HttpContentType.APPLICATION_XML, null);
-
- executeAndValidateRequest(ODataHttpMethod.PUT, createPathSegments(UriType.URI6A, false, false), null,
- HttpContentType.APPLICATION_XML, HttpStatusCodes.BAD_REQUEST);
- executeAndValidateRequest(ODataHttpMethod.PATCH, createPathSegments(UriType.URI6A, false, false), null,
- HttpContentType.APPLICATION_XML, HttpStatusCodes.BAD_REQUEST);
- executeAndValidateRequest(ODataHttpMethod.MERGE, createPathSegments(UriType.URI6A, false, false), null,
- HttpContentType.APPLICATION_XML, HttpStatusCodes.BAD_REQUEST);
-
- executeAndValidateRequest(ODataHttpMethod.POST, createPathSegments(UriType.URI6B, false, false), null,
- HttpContentType.APPLICATION_XML, null);
-
- executeAndValidateRequest(ODataHttpMethod.PUT, createPathSegments(UriType.URI7A, false, false), null,
- HttpContentType.APPLICATION_XML, null);
- executeAndValidateRequest(ODataHttpMethod.PATCH, createPathSegments(UriType.URI7A, false, false), null,
- HttpContentType.APPLICATION_XML, null);
- executeAndValidateRequest(ODataHttpMethod.MERGE, createPathSegments(UriType.URI7A, false, false), null,
- HttpContentType.APPLICATION_XML, null);
-
- executeAndValidateRequest(ODataHttpMethod.POST, createPathSegments(UriType.URI7B, false, false), null,
- HttpContentType.APPLICATION_XML, null);
-
- executeAndValidateRequest(ODataHttpMethod.POST, createPathSegments(UriType.URI9, false, false), null,
- HttpContentType.MULTIPART_MIXED, null);
+ executeAndValidateRequest(ODataHttpMethod.PUT, UriType.URI2, HttpContentType.APPLICATION_XML, null);
+ executeAndValidateRequest(ODataHttpMethod.PATCH, UriType.URI2, HttpContentType.APPLICATION_XML, null);
+ executeAndValidateRequest(ODataHttpMethod.MERGE, UriType.URI2, HttpContentType.APPLICATION_XML, null);
+
+ executeAndValidateRequest(ODataHttpMethod.PUT, UriType.URI3, HttpContentType.APPLICATION_XML, null);
+ executeAndValidateRequest(ODataHttpMethod.PATCH, UriType.URI3, HttpContentType.APPLICATION_XML, null);
+ executeAndValidateRequest(ODataHttpMethod.MERGE, UriType.URI3, HttpContentType.APPLICATION_XML, null);
+
+ executeAndValidateRequest(ODataHttpMethod.PUT, UriType.URI4, HttpContentType.APPLICATION_XML, null);
+ executeAndValidateRequest(ODataHttpMethod.PATCH, UriType.URI4, HttpContentType.APPLICATION_XML, null);
+ executeAndValidateRequest(ODataHttpMethod.MERGE, UriType.URI4, HttpContentType.APPLICATION_XML, null);
+
+ executeAndValidateRequest(ODataHttpMethod.PUT, UriType.URI5, HttpContentType.APPLICATION_XML, null);
+ executeAndValidateRequest(ODataHttpMethod.PATCH, UriType.URI5, HttpContentType.APPLICATION_XML, null);
+ executeAndValidateRequest(ODataHttpMethod.MERGE, UriType.URI5, HttpContentType.APPLICATION_XML, null);
+
+ executeAndValidateRequest(ODataHttpMethod.PUT, UriType.URI6A, HttpContentType.APPLICATION_XML,
+ HttpStatusCodes.BAD_REQUEST);
+ executeAndValidateRequest(ODataHttpMethod.PATCH, UriType.URI6A, HttpContentType.APPLICATION_XML,
+ HttpStatusCodes.BAD_REQUEST);
+ executeAndValidateRequest(ODataHttpMethod.MERGE, UriType.URI6A, HttpContentType.APPLICATION_XML,
+ HttpStatusCodes.BAD_REQUEST);
+
+ executeAndValidateRequest(ODataHttpMethod.POST, UriType.URI6B, HttpContentType.APPLICATION_XML, null);
+
+ executeAndValidateRequest(ODataHttpMethod.PUT, UriType.URI7A, HttpContentType.APPLICATION_XML, null);
+ executeAndValidateRequest(ODataHttpMethod.PATCH, UriType.URI7A, HttpContentType.APPLICATION_XML, null);
+ executeAndValidateRequest(ODataHttpMethod.MERGE, UriType.URI7A, HttpContentType.APPLICATION_XML, null);
+
+ executeAndValidateRequest(ODataHttpMethod.POST, UriType.URI7B, HttpContentType.APPLICATION_XML, null);
+
+ executeAndValidateRequest(ODataHttpMethod.POST, UriType.URI9, HttpContentType.MULTIPART_MIXED, null);
}
@Test
public void requestContentTypeMediaResource() throws Exception {
- executeAndValidateRequest(ODataHttpMethod.POST, createPathSegments(UriType.URI1, false, false), null, "image/jpeg",
- null);
-
- executeAndValidateRequest(ODataHttpMethod.PUT, createPathSegments(UriType.URI17, false, true), null, "image/jpeg",
- null);
+ executeAndValidateRequest(ODataHttpMethod.POST, UriType.URI1, "image/jpeg", null);
+ executeAndValidateRequest(ODataHttpMethod.PUT, UriType.URI17, "image/jpeg", null);
}
@Test
public void requestContentTypeFunctionImport() throws Exception {
EdmFunctionImport function = edm.getDefaultEntityContainer().getFunctionImport("MaximalAge");
when(function.getHttpMethod()).thenReturn(ODataHttpMethod.PUT.name());
- executeAndValidateRequest(ODataHttpMethod.PUT, createPathSegments(UriType.URI14, false, false), null, null, null);
- executeAndValidateRequest(ODataHttpMethod.PUT, createPathSegments(UriType.URI14, false, false), null,
- HttpContentType.WILDCARD, null);
+ executeAndValidateRequest(ODataHttpMethod.PUT, UriType.URI14, null, null);
+ executeAndValidateRequest(ODataHttpMethod.PUT, UriType.URI14, HttpContentType.WILDCARD, null);
checkValueContentType(ODataHttpMethod.PUT, UriType.URI14, null);
checkValueContentType(ODataHttpMethod.PUT, UriType.URI14, HttpContentType.WILDCARD);
function = edm.getDefaultEntityContainer().getFunctionImport("OldestEmployee");
when(function.getHttpMethod()).thenReturn(ODataHttpMethod.POST.name());
- executeAndValidateRequest(ODataHttpMethod.POST, createPathSegments(UriType.URI10, false, false), null, null, null);
+ executeAndValidateRequest(ODataHttpMethod.POST, UriType.URI10, null, null);
}
@Test
@@ -790,7 +687,7 @@ public class ODataRequestHandlerValidationTest extends BaseTest {
wrongRequestContentType(oDataHttpMethod, UriType.URI3, ContentType.TEXT_PLAIN);
- wrongRequestContentType(oDataHttpMethod, UriType.URI4, false, ContentType.TEXT_PLAIN);
+ wrongRequestContentType(oDataHttpMethod, UriType.URI4, ContentType.TEXT_PLAIN);
wrongRequestContentType(oDataHttpMethod, UriType.URI5, true, ContentType.APPLICATION_ATOM_SVC);
wrongRequestContentType(oDataHttpMethod, UriType.URI5, true, ContentType.APPLICATION_ATOM_SVC_CS_UTF_8);
@@ -822,4 +719,39 @@ public class ODataRequestHandlerValidationTest extends BaseTest {
wrongRequestContentType(ODataHttpMethod.POST, UriType.URI1, ContentType.APPLICATION_OCTET_STREAM);
wrongRequestContentType(ODataHttpMethod.POST, UriType.URI6B, ContentType.APPLICATION_ATOM_SVC);
}
+
+ @Test
+ public void conditionalHandling() throws Exception {
+ EdmProperty property = (EdmProperty) (edm.getEntityType("RefScenario", "Employee").getProperty("EmployeeId"));
+ EdmFacets facets = mock(EdmFacets.class);
+ when(facets.getConcurrencyMode()).thenReturn(EdmConcurrencyMode.Fixed);
+ when(property.getFacets()).thenReturn(facets);
+
+ executeAndValidateHeaderRequest(ODataHttpMethod.PUT, UriType.URI2, HttpHeaders.IF_MATCH, "W/\"1\"", null);
+ executeAndValidateHeaderRequest(ODataHttpMethod.PATCH, UriType.URI2, HttpHeaders.IF_MATCH, "W/\"1\"", null);
+ executeAndValidateHeaderRequest(ODataHttpMethod.MERGE, UriType.URI2, HttpHeaders.IF_MATCH, "W/\"1\"", null);
+ executeAndValidateHeaderRequest(ODataHttpMethod.DELETE, UriType.URI2, HttpHeaders.IF_MATCH, "W/\"1\"", null);
+
+ executeAndValidateHeaderRequest(ODataHttpMethod.PUT, UriType.URI3, HttpHeaders.IF_MATCH, "W/\"1\"", null);
+ executeAndValidateHeaderRequest(ODataHttpMethod.PUT, UriType.URI4, HttpHeaders.IF_MATCH, "W/\"1\"", null);
+ executeAndValidateHeaderRequest(ODataHttpMethod.PUT, UriType.URI5, HttpHeaders.IF_MATCH, "W/\"1\"", null);
+ // executeAndValidateHeaderRequest(ODataHttpMethod.PUT, UriType.URI6A, HttpHeaders.IF_MATCH, "W/\"1\"", null);
+ executeAndValidateHeaderRequest(ODataHttpMethod.PUT, UriType.URI17, HttpHeaders.IF_MATCH, "W/\"1\"", null);
+
+ executeAndValidateHeaderRequest(ODataHttpMethod.POST, UriType.URI1, HttpHeaders.IF_MATCH, "W/\"1\"", null);
+ executeAndValidateHeaderRequest(ODataHttpMethod.PUT, UriType.URI7A, HttpHeaders.IF_MATCH, "W/\"1\"", null);
+
+ executeAndValidateHeaderRequest(ODataHttpMethod.PUT, UriType.URI2, null, null,
+ HttpStatusCodes.PRECONDITION_REQUIRED);
+ executeAndValidateHeaderRequest(ODataHttpMethod.PUT, UriType.URI3, null, null,
+ HttpStatusCodes.PRECONDITION_REQUIRED);
+ executeAndValidateHeaderRequest(ODataHttpMethod.PUT, UriType.URI4, null, null,
+ HttpStatusCodes.PRECONDITION_REQUIRED);
+ executeAndValidateHeaderRequest(ODataHttpMethod.PUT, UriType.URI5, null, null,
+ HttpStatusCodes.PRECONDITION_REQUIRED);
+ // executeAndValidateHeaderRequest(ODataHttpMethod.PUT, UriType.URI6A, null, null,
+ // HttpStatusCodes.PRECONDITION_REQUIRED);
+ executeAndValidateHeaderRequest(ODataHttpMethod.PUT, UriType.URI17, null, null,
+ HttpStatusCodes.PRECONDITION_REQUIRED);
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/77b0ac0f/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/basic/RequestContentTypeTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/basic/RequestContentTypeTest.java b/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/basic/RequestContentTypeTest.java
index ba9bbdc..7e43669 100644
--- a/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/basic/RequestContentTypeTest.java
+++ b/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/basic/RequestContentTypeTest.java
@@ -107,7 +107,7 @@ public class RequestContentTypeTest extends AbstractBasicTest {
@Test
public void validApplicationXmlContentType() throws Exception {
- HttpPut put = new HttpPut(URI.create(getEndpoint().toString() + "Rooms('1')"));
+ HttpPut put = new HttpPut(URI.create(getEndpoint().toString() + "Teams('1')"));
put.setHeader(HttpHeaders.CONTENT_TYPE, HttpContentType.APPLICATION_XML);
final HttpResponse response = getHttpClient().execute(put);
// We expect an internal server error due to the incomplete processor implementation.
@@ -124,7 +124,7 @@ public class RequestContentTypeTest extends AbstractBasicTest {
@Test
public void validTextPlainContentType() throws Exception {
- HttpPut put = new HttpPut(URI.create(getEndpoint().toString() + "Rooms('1')/Seats/$value"));
+ HttpPut put = new HttpPut(URI.create(getEndpoint().toString() + "Teams('1')/isScrumTeam/$value"));
put.setHeader(HttpHeaders.CONTENT_TYPE, HttpContentType.TEXT_PLAIN);
final HttpResponse response = getHttpClient().execute(put);
// We expect an internal server error due to the incomplete processor implementation.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/77b0ac0f/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/ref/MiscChangeTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/ref/MiscChangeTest.java b/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/ref/MiscChangeTest.java
index 526d756..a67365b 100644
--- a/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/ref/MiscChangeTest.java
+++ b/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/ref/MiscChangeTest.java
@@ -29,8 +29,7 @@ import org.junit.Test;
/**
* Tests employing the reference scenario that use neither XML nor JSON
- * and that change data in some way
- *
+ * and that change data in some way.
*/
public class MiscChangeTest extends AbstractRefTest {
@@ -44,7 +43,7 @@ public class MiscChangeTest extends AbstractRefTest {
callUri(ODataHttpMethod.DELETE, "Container2.Photos(Id=1,Type='image%2Fpng')",
HttpHeaders.IF_MATCH, "W/\"1\"", null, null, HttpStatusCodes.NO_CONTENT);
- // deleteUri("Rooms('1')", HttpStatusCodes.PRECONDITION_REQUIRED);
+ deleteUri("Rooms('1')", HttpStatusCodes.PRECONDITION_REQUIRED);
deleteUri("Managers()", HttpStatusCodes.METHOD_NOT_ALLOWED);
deleteUri("Managers('5')", HttpStatusCodes.NOT_FOUND);
deleteUri("Employees('2')/ne_Manager", HttpStatusCodes.BAD_REQUEST);
@@ -87,18 +86,15 @@ public class MiscChangeTest extends AbstractRefTest {
checkMediaType(response, HttpContentType.APPLICATION_OCTET_STREAM);
assertEquals("00", getBody(response));
- response =
- callUri(ODataHttpMethod.PUT, "Container2.Photos(Id=2,Type='image%2Fbmp')/$value", null, null, "00", IMAGE_GIF,
- HttpStatusCodes.NO_CONTENT);
+ response = callUri(ODataHttpMethod.PUT, "Container2.Photos(Id=2,Type='image%2Fbmp')/$value",
+ HttpHeaders.IF_MATCH, "W/\"2\"", "00", IMAGE_GIF, HttpStatusCodes.NO_CONTENT);
checkEtag(response, "W/\"2\"");
- response =
- callUri(ODataHttpMethod.PATCH, url, null, null, "00", HttpContentType.APPLICATION_OCTET_STREAM,
- HttpStatusCodes.METHOD_NOT_ALLOWED);
+ response = callUri(ODataHttpMethod.PATCH, url, null, null, "00", HttpContentType.APPLICATION_OCTET_STREAM,
+ HttpStatusCodes.METHOD_NOT_ALLOWED);
response.getEntity().getContent().close();
- response =
- callUri(ODataHttpMethod.MERGE, url, null, null, "00", HttpContentType.APPLICATION_OCTET_STREAM,
- HttpStatusCodes.METHOD_NOT_ALLOWED);
+ response = callUri(ODataHttpMethod.MERGE, url, null, null, "00", HttpContentType.APPLICATION_OCTET_STREAM,
+ HttpStatusCodes.METHOD_NOT_ALLOWED);
response.getEntity().getContent().close();
}
@@ -107,15 +103,15 @@ public class MiscChangeTest extends AbstractRefTest {
putUri("Employees('2')/Age/$value", "42", HttpContentType.TEXT_PLAIN, HttpStatusCodes.NO_CONTENT);
String url = "Container2.Photos(Id=3,Type='image%2Fjpeg')/Image/$value";
- callUri(ODataHttpMethod.PUT, url, HttpHeaders.ETAG, "W/\"3\"", "4711", HttpContentType.APPLICATION_OCTET_STREAM,
- HttpStatusCodes.NO_CONTENT);
+ callUri(ODataHttpMethod.PUT, url, HttpHeaders.IF_MATCH, "W/\"3\"", "4711",
+ HttpContentType.APPLICATION_OCTET_STREAM, HttpStatusCodes.NO_CONTENT);
HttpResponse response = callUri(url);
assertEquals("4711", getBody(response));
checkMediaType(response, HttpContentType.APPLICATION_OCTET_STREAM);
url = "Container2.Photos(Id=4,Type='foo')/BinaryData/$value";
- response =
- callUri(ODataHttpMethod.PUT, url, HttpHeaders.ETAG, "W/\"4\"", "4711", IMAGE_JPEG, HttpStatusCodes.NO_CONTENT);
+ response = callUri(ODataHttpMethod.PUT, url, HttpHeaders.IF_MATCH, "W/\"4\"", "4711", IMAGE_JPEG,
+ HttpStatusCodes.NO_CONTENT);
checkEtag(response, "W/\"4\"");
assertEquals("4711", getBody(callUri(url)));
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/77b0ac0f/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/ref/PropertyXmlChangeTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/ref/PropertyXmlChangeTest.java b/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/ref/PropertyXmlChangeTest.java
index f14dbdd..9cb009b 100644
--- a/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/ref/PropertyXmlChangeTest.java
+++ b/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/ref/PropertyXmlChangeTest.java
@@ -22,14 +22,14 @@ import static org.custommonkey.xmlunit.XMLAssert.assertXpathEvaluatesTo;
import org.apache.http.HttpResponse;
import org.apache.olingo.odata2.api.commons.HttpContentType;
+import org.apache.olingo.odata2.api.commons.HttpHeaders;
import org.apache.olingo.odata2.api.commons.HttpStatusCodes;
import org.apache.olingo.odata2.api.commons.ODataHttpMethod;
import org.apache.olingo.odata2.api.edm.Edm;
import org.junit.Test;
/**
- * Tests employing the reference scenario changing properties in XML format
- *
+ * Tests employing the reference scenario changing properties in XML format.
*/
public class PropertyXmlChangeTest extends AbstractRefXmlTest {
@@ -52,9 +52,8 @@ public class PropertyXmlChangeTest extends AbstractRefXmlTest {
final String url4 = "Rooms('42')/Seats";
requestBody = "<Seats xmlns=\"" + Edm.NAMESPACE_D_2007_08 + "\">42</Seats>";
- HttpResponse response =
- callUri(ODataHttpMethod.PUT, url4, null, null, requestBody, HttpContentType.APPLICATION_XML_UTF8,
- HttpStatusCodes.NO_CONTENT);
+ HttpResponse response = callUri(ODataHttpMethod.PUT, url4, HttpHeaders.IF_MATCH, "W/\"1\"", requestBody,
+ HttpContentType.APPLICATION_XML_UTF8, HttpStatusCodes.NO_CONTENT);
checkEtag(response, "W/\"1\"");
final String url5 = "Employees('2')/EmployeeId";