http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializerEntityTest.java ---------------------------------------------------------------------- diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializerEntityTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializerEntityTest.java deleted file mode 100644 index 6c48d73..0000000 --- a/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializerEntityTest.java +++ /dev/null @@ -1,1365 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core.deserializer.json; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.math.BigDecimal; -import java.util.List; - -import org.apache.olingo.commons.api.data.Entity; -import org.apache.olingo.commons.api.data.Link; -import org.apache.olingo.commons.api.data.Property; -import org.apache.olingo.commons.api.data.ValueType; -import org.apache.olingo.commons.api.domain.ODataLinkType; -import org.apache.olingo.commons.api.edm.FullQualifiedName; -import org.apache.olingo.commons.api.format.ODataFormat; -import org.apache.olingo.server.api.OData; -import org.apache.olingo.server.api.deserializer.DeserializerException; -import org.apache.olingo.server.api.deserializer.ODataDeserializer; -import org.junit.Test; - -public class ODataJsonDeserializerEntityTest extends AbstractODataDeserializerTest { - - @Test - public void emptyEntity() throws Exception { - String entityString = "{}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - Entity entity = - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETAllPrim"))); - assertNotNull(entity); - List<Property> properties = entity.getProperties(); - assertNotNull(properties); - assertEquals(0, properties.size()); - } - - @Test - public void simpleEntityETAllPrim() throws Exception { - String entityString = - "{\"PropertyInt16\":32767," + - "\"PropertyString\":\"First Resource - positive values\"," + - "\"PropertyBoolean\":true," + - "\"PropertyByte\":255," + - "\"PropertySByte\":127," + - "\"PropertyInt32\":2147483647," + - "\"PropertyInt64\":9223372036854775807," + - "\"PropertySingle\":1.79E20," + - "\"PropertyDouble\":-1.79E19," + - "\"PropertyDecimal\":34," + - "\"PropertyBinary\":\"ASNFZ4mrze8=\"," + - "\"PropertyDate\":\"2012-12-03\"," + - "\"PropertyDateTimeOffset\":\"2012-12-03T07:16:23Z\"," + - "\"PropertyDuration\":\"PT6S\"," + - "\"PropertyGuid\":\"01234567-89ab-cdef-0123-456789abcdef\"," + - "\"PropertyTimeOfDay\":\"03:26:05\"}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - Entity entity = - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETAllPrim"))); - assertNotNull(entity); - List<Property> properties = entity.getProperties(); - assertNotNull(properties); - assertEquals(16, properties.size()); - - assertEquals(new Short((short) 32767), entity.getProperty("PropertyInt16").getValue()); - assertEquals("First Resource - positive values", entity.getProperty("PropertyString").getValue()); - assertEquals(new Boolean(true), entity.getProperty("PropertyBoolean").getValue()); - assertEquals(new Short((short) 255), entity.getProperty("PropertyByte").getValue()); - assertEquals(new Byte((byte) 127), entity.getProperty("PropertySByte").getValue()); - assertEquals(new Integer(2147483647), entity.getProperty("PropertyInt32").getValue()); - assertEquals(new Long(9223372036854775807l), entity.getProperty("PropertyInt64").getValue()); - assertEquals(new Float(1.79E20), entity.getProperty("PropertySingle").getValue()); - assertEquals(new Double(-1.79E19), entity.getProperty("PropertyDouble").getValue()); - assertEquals(new BigDecimal(34), entity.getProperty("PropertyDecimal").getValue()); - assertNotNull(entity.getProperty("PropertyBinary").getValue()); - assertNotNull(entity.getProperty("PropertyDate").getValue()); - assertNotNull(entity.getProperty("PropertyDateTimeOffset").getValue()); - assertNotNull(entity.getProperty("PropertyDuration").getValue()); - assertNotNull(entity.getProperty("PropertyGuid").getValue()); - assertNotNull(entity.getProperty("PropertyTimeOfDay").getValue()); - } - - @Test - public void simpleEntityETAllPrimWithDefaultNullValue() throws Exception { - String entityString = - "{\"PropertyInt16\":32767," + - "\"PropertyString\":\"First Resource - positive values\"," + - "\"PropertyBoolean\":null," + - "\"PropertyByte\":255," + - "\"PropertySByte\":127," + - "\"PropertyInt32\":2147483647," + - "\"PropertyInt64\":9223372036854775807," + - "\"PropertySingle\":1.79E20," + - "\"PropertyDouble\":-1.79E19," + - "\"PropertyDecimal\":34," + - "\"PropertyBinary\":\"ASNFZ4mrze8=\"," + - "\"PropertyDate\":null," + - "\"PropertyDateTimeOffset\":\"2012-12-03T07:16:23Z\"," + - "\"PropertyDuration\":\"PT6S\"," + - "\"PropertyGuid\":\"01234567-89ab-cdef-0123-456789abcdef\"," + - "\"PropertyTimeOfDay\":\"03:26:05\"}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - Entity entity = - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETAllPrim"))); - assertNotNull(entity); - List<Property> properties = entity.getProperties(); - assertNotNull(properties); - assertEquals(16, properties.size()); - - assertEquals("First Resource - positive values", entity.getProperty("PropertyString").getValue()); - assertNull(entity.getProperty("PropertyBoolean").getValue()); - assertNull(entity.getProperty("PropertyDate").getValue()); - } - - @Test - public void simpleEntityETAllPrimNoTAllPropertiesPresent() throws Exception { - String entityString = - "{\"PropertyInt16\":32767," + - "\"PropertyString\":\"First Resource - positive values\"" + - "}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - Entity entity = - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETAllPrim"))); - assertNotNull(entity); - List<Property> properties = entity.getProperties(); - assertNotNull(properties); - assertEquals(2, properties.size()); - } - - @Test - public void simpleEntityETNoneNullable() throws Exception { - String entityString = - "{\"PropertyInt16\":32767," + - "\"PropertyString\":\"First Resource - positive values\"," + - "\"PropertyBoolean\":null," + - "\"PropertyByte\":255," + - "\"PropertySByte\":127," + - "\"PropertyInt32\":2147483647," + - "\"PropertyInt64\":9223372036854775807," + - "\"PropertySingle\":1.79E20," + - "\"PropertyDouble\":-1.79E19," + - "\"PropertyDecimal\":34," + - "\"PropertyBinary\":\"ASNFZ4mrze8=\"," + - "\"PropertyDate\":null," + - "\"PropertyDateTimeOffset\":\"2012-12-03T07:16:23Z\"," + - "\"PropertyDuration\":\"PT6S\"," + - "\"PropertyGuid\":\"01234567-89ab-cdef-0123-456789abcdef\"," + - "\"PropertyTimeOfDay\":\"03:26:05\"}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - Entity entity = - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETAllPrim"))); - assertNotNull(entity); - List<Property> properties = entity.getProperties(); - assertNotNull(properties); - assertEquals(16, properties.size()); - - assertEquals("First Resource - positive values", entity.getProperty("PropertyString").getValue()); - assertNull(entity.getProperty("PropertyBoolean").getValue()); - assertNull(entity.getProperty("PropertyDate").getValue()); - } - - @Test - public void simpleEntityETCompAllPrim() throws Exception { - String entityString = "{\"PropertyInt16\":32767," + - "\"PropertyComp\":{" + - "\"PropertyString\":\"First Resource - first\"," + - "\"PropertyBinary\":\"ASNFZ4mrze8=\"," + - "\"PropertyBoolean\":true," + - "\"PropertyByte\":255," + - "\"PropertyDate\":\"2012-10-03\"," + - "\"PropertyDateTimeOffset\":\"2012-10-03T07:16:23.1234567Z\"," + - "\"PropertyDecimal\":34.27," + - "\"PropertySingle\":1.79E20," + - "\"PropertyDouble\":-1.79E19," + - "\"PropertyDuration\":\"PT6S\"," + - "\"PropertyGuid\":\"01234567-89ab-cdef-0123-456789abcdef\"," + - "\"PropertyInt16\":32767," + - "\"PropertyInt32\":2147483647," + - "\"PropertyInt64\":9223372036854775807," + - "\"PropertySByte\":127," + - "\"PropertyTimeOfDay\":\"01:00:01\"}}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - Entity entity = - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETCompAllPrim"))); - assertNotNull(entity); - List<Property> properties = entity.getProperties(); - assertNotNull(properties); - assertEquals(2, properties.size()); - - assertEquals(new Short((short) 32767), entity.getProperty("PropertyInt16").getValue()); - - assertNotNull(entity.getProperty("PropertyComp")); - assertNotNull(entity.getProperty("PropertyComp") instanceof List); - List<Property> complexProperties = entity.getProperty("PropertyComp").asComplex(); - assertEquals(16, complexProperties.size()); - } - - @Test - public void simpleEntityETCollAllPrim() throws Exception { - final String entityString = "{" - + "\"PropertyInt16\":1," - + "\"CollPropertyString\":" - + "[\"[email protected]\",\"[email protected]\",\"[email protected]\"]," - + "\"CollPropertyBoolean\":[true,false,true]," - + "\"CollPropertyByte\":[50,200,249]," - + "\"CollPropertySByte\":[-120,120,126]," - + "\"CollPropertyInt16\":[1000,2000,30112]," - + "\"CollPropertyInt32\":[23232323,11223355,10000001]," - + "\"CollPropertyInt64\":[929292929292,333333333333,444444444444]," - + "\"CollPropertySingle\":[1790.0,26600.0,3210.0]," - + "\"CollPropertyDouble\":[-17900.0,-2.78E7,3210.0]," - + "\"CollPropertyDecimal\":[12,-2,1234]," - + "\"CollPropertyBinary\":[\"q83v\",\"ASNF\",\"VGeJ\"]," - + "\"CollPropertyDate\":[\"1958-12-03\",\"1999-08-05\",\"2013-06-25\"]," - + "\"CollPropertyDateTimeOffset\":[\"2015-08-12T03:08:34Z\",\"1970-03-28T12:11:10Z\"," - + "\"1948-02-17T09:09:09Z\"]," - + "\"CollPropertyDuration\":[\"PT13S\",\"PT5H28M0S\",\"PT1H0S\"]," - + "\"CollPropertyGuid\":[\"ffffff67-89ab-cdef-0123-456789aaaaaa\",\"eeeeee67-89ab-cdef-0123-456789bbbbbb\"," - + "\"cccccc67-89ab-cdef-0123-456789cccccc\"]," - + "\"CollPropertyTimeOfDay\":[\"04:14:13\",\"23:59:59\",\"01:12:33\"]" - + "}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - Entity entity = - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETCollAllPrim"))); - assertNotNull(entity); - List<Property> properties = entity.getProperties(); - assertNotNull(properties); - assertEquals(17, properties.size()); - - // All properties need 3 entires - for (Property prop : properties) { - if (!prop.getName().equals("PropertyInt16")) { - assertEquals(ValueType.COLLECTION_PRIMITIVE, prop.getValueType()); - assertTrue(prop.getValue() instanceof List); - List<? extends Object> asCollection = prop.asCollection(); - assertEquals(3, asCollection.size()); - } - } - Property property = entity.getProperty("CollPropertyBoolean"); - List<? extends Object> asCollection = property.asCollection(); - assertEquals(true, asCollection.get(0)); - assertEquals(false, asCollection.get(1)); - assertEquals(true, asCollection.get(2)); - } - - @SuppressWarnings("unchecked") - @Test - public void simpleEntityETMixPrimCollComp() throws Exception { - final String entityString = "{" - + "\"PropertyInt16\":32767," - + "\"CollPropertyString\":" - + "[\"[email protected]\",\"[email protected]\",\"[email protected]\"]," - + "\"PropertyComp\":{\"PropertyInt16\":111,\"PropertyString\":\"TEST A\"}," - + "\"CollPropertyComp\":[" - + "{\"PropertyInt16\":123,\"PropertyString\":\"TEST 1\"}," - + "{\"PropertyInt16\":456,\"PropertyString\":\"TEST 2\"}," - + "{\"PropertyInt16\":789,\"PropertyString\":\"TEST 3\"}]}"; - - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - Entity entity = - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETMixPrimCollComp"))); - assertNotNull(entity); - List<Property> properties = entity.getProperties(); - assertNotNull(properties); - assertEquals(4, properties.size()); - - Property property = entity.getProperty("CollPropertyComp"); - assertEquals(ValueType.COLLECTION_COMPLEX, property.getValueType()); - - assertTrue(property.getValue() instanceof List); - List<? extends Object> asCollection = property.asCollection(); - assertEquals(3, asCollection.size()); - - for (Object arrayElement : asCollection) { - assertTrue(arrayElement instanceof List); - List<Object> castedArrayElement = (List<Object>) arrayElement; - assertEquals(2, castedArrayElement.size()); - } - } - - @SuppressWarnings("unchecked") - @Test - public void eTMixPrimCollCompMIssingPropertyInComplexType() throws Exception { - final String entityString = "{" - + "\"PropertyComp\":{\"PropertyInt16\":111}," - + "\"CollPropertyComp\":[" - + "{\"PropertyInt16\":123}," - + "{\"PropertyInt16\":456}," - + "{\"PropertyInt16\":789}]}"; - - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - Entity entity = - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETMixPrimCollComp"))); - assertNotNull(entity); - List<Property> properties = entity.getProperties(); - assertNotNull(properties); - assertEquals(2, properties.size()); - - Property complexProperty = entity.getProperty("PropertyComp"); - assertEquals(ValueType.COMPLEX, complexProperty.getValueType()); - List<Property> complexPropertyValues = (List<Property>) complexProperty.getValue(); - assertEquals(1, complexPropertyValues.size()); - - Property property = entity.getProperty("CollPropertyComp"); - assertEquals(ValueType.COLLECTION_COMPLEX, property.getValueType()); - - assertTrue(property.getValue() instanceof List); - List<? extends Object> asCollection = property.asCollection(); - assertEquals(3, asCollection.size()); - - for (Object arrayElement : asCollection) { - assertTrue(arrayElement instanceof List); - List<Object> castedArrayElement = (List<Object>) arrayElement; - assertEquals(1, castedArrayElement.size()); - } - } - - @Test - public void simpleEntityWithContextURL() throws Exception { - String entityString = - "{\"@odata.context\": \"$metadata#ESAllPrim/$entity\"," + - "\"PropertyInt16\":32767," + - "\"PropertyString\":\"First Resource - positive values\"," + - "\"PropertyBoolean\":true," + - "\"PropertyByte\":255," + - "\"PropertySByte\":127," + - "\"PropertyInt32\":2147483647," + - "\"PropertyInt64\":9223372036854775807," + - "\"PropertySingle\":1.79E20," + - "\"PropertyDouble\":-1.79E19," + - "\"PropertyDecimal\":34," + - "\"PropertyBinary\":\"ASNFZ4mrze8=\"," + - "\"PropertyDate\":\"2012-12-03\"," + - "\"PropertyDateTimeOffset\":\"2012-12-03T07:16:23Z\"," + - "\"PropertyDuration\":\"PT6S\"," + - "\"PropertyGuid\":\"01234567-89ab-cdef-0123-456789abcdef\"," + - "\"PropertyTimeOfDay\":\"03:26:05\"}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - Entity entity = - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETAllPrim"))); - assertNotNull(entity); - } - - @Test - public void ignoreSomeAnnotationsInEntityTypes() throws Exception { - // We have to ignore @odata.navigation, @odata.association and @odata.type annotations on server side - String entityString = - "{\"PropertyInt16\":32767," - + "\"[email protected]\":\"test\"," - + "\"[email protected]\":\"test\"," - + "\"[email protected]\":\"test\"," - + "\"PropertyString\":\"First Resource - positive values\"" - + "}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETAllPrim"))); - } - - @Test - public void ignoreSomeAnnotationsInComplexTypes() throws Exception { - final String entityString = "{" - + "\"PropertyInt16\":32767," - + "\"CollPropertyString\":" - + "[\"[email protected]\",\"[email protected]\",\"[email protected]\"]," - + "\"PropertyComp\":{\"PropertyInt16\":111,\"[email protected]\": 12," + - "\"[email protected]\": 12,\"[email protected]\": 12,\"PropertyString\":\"TEST A\"}," - + "\"CollPropertyComp\":[" - + "{\"PropertyInt16\":123,\"PropertyString\":\"TEST 1\"}," - + "{\"PropertyInt16\":456,\"[email protected]\": 12," + - "\"[email protected]\": 12,\"[email protected]\": 12,\"PropertyString\":\"TEST 2\"}," - + "{\"PropertyInt16\":789,\"PropertyString\":\"TEST 3\"}]}"; - - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETMixPrimCollComp"))); - } - - @Test - public void odataControlInformationIsIgnoredForRequests() throws Exception { - String entityString = - "{" - + "\"@odata.context\":\"http://localhost:8080\"," - + "\"@odata.metadataEtag\":\"metadataEtag\"," - + "\"@odata.id\":\"value\"," - + "\"@odata.editLink\":\"value\"," - + "\"@odata.readLink\":\"value\"," - + "\"@odata.etag\":\"value\"," - + "\"@odata.mediaEtag\":\"value\"," - + "\"@odata.mediaReadLink\":\"value\"," - + "\"@odata.mediaEditLink\":\"value\"," - + "\"PropertyInt16\":32767," - + "\"PropertyString\":\"First Resource - positive values\"" - + "}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - Entity entity = - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETAllPrim"))); - assertNotNull(entity); - List<Property> properties = entity.getProperties(); - assertNotNull(properties); - assertEquals(2, properties.size()); - } - - @Test - public void etAllPrimBindingOperation() throws Exception { - String entityString = - "{\"PropertyInt16\":32767," - + "\"PropertyString\":\"First Resource - positive values\"," - + "\"[email protected]\":\"ESTwoPrim(2)\"," - + "\"[email protected]\":[\"ESTwoPrim(2)\",\"ESTwoPrim(3)\"]" - + "}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - Entity entity = - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETAllPrim"))); - assertNotNull(entity); - - Link bindingToOne = entity.getNavigationBinding("NavPropertyETTwoPrimOne"); - assertNotNull(bindingToOne); - assertEquals("NavPropertyETTwoPrimOne", bindingToOne.getTitle()); - assertEquals("ESTwoPrim(2)", bindingToOne.getBindingLink()); - assertEquals(ODataLinkType.ENTITY_BINDING.toString(), bindingToOne.getType()); - assertTrue(bindingToOne.getBindingLinks().isEmpty()); - assertNull(bindingToOne.getHref()); - assertNull(bindingToOne.getRel()); - - Link bindingToMany = entity.getNavigationBinding("NavPropertyETTwoPrimMany"); - assertNotNull(bindingToMany); - assertEquals("NavPropertyETTwoPrimMany", bindingToMany.getTitle()); - assertNotNull(bindingToMany.getBindingLinks()); - assertEquals(2, bindingToMany.getBindingLinks().size()); - assertEquals(ODataLinkType.ENTITY_COLLECTION_BINDING.toString(), bindingToMany.getType()); - assertNull(bindingToMany.getBindingLink()); - assertNull(bindingToMany.getHref()); - assertNull(bindingToMany.getRel()); - } - - @Test - public void etAllPrimBindingOperationEmptyArray() throws Exception { - String entityString = - "{\"PropertyInt16\":32767," - + "\"PropertyString\":\"First Resource - positive values\"," - + "\"[email protected]\":[]" - + "}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - Entity entity = - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETAllPrim"))); - Link bindingToMany = entity.getNavigationBinding("NavPropertyETTwoPrimMany"); - assertNotNull(bindingToMany); - assertTrue(bindingToMany.getBindingLinks().isEmpty()); - } - - @SuppressWarnings("unchecked") - @Test - public void eTTwoKeyNavEnumTest() throws Exception { - InputStream stream = getFileAsStream("EntityETMixEnumDefCollComp.json"); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - Entity entity = - deserializer.entity(stream, edm - .getEntityType(new FullQualifiedName("Namespace1_Alias", "ETMixEnumDefCollComp"))); - - assertEquals(6, entity.getProperties().size()); - - Property enumProperty = entity.getProperty("PropertyEnumString"); - assertNotNull(enumProperty); - assertEquals((short) 2, enumProperty.getValue()); - - Property defProperty = entity.getProperty("PropertyDefString"); - assertNotNull(defProperty); - assertEquals("string", defProperty.getValue()); - - Property complexProperty = entity.getProperty("PropertyCompMixedEnumDef"); - List<Property> value = (List<Property>) complexProperty.getValue(); - assertEquals((short) 2, value.get(0).getValue()); - } - - @Test - public void eTCollAllPrimWithNullValue() throws Exception { - final String entityString = "{" - + "\"PropertyInt16\":1," - + "\"CollPropertyString\":" - + "[\"[email protected]\",\"[email protected]\",\"[email protected]\"]," - + "\"CollPropertyBoolean\":[true,null,false]," - + "\"CollPropertyByte\":[50,200,249]," - + "\"CollPropertySByte\":[-120,120,126]," - + "\"CollPropertyInt16\":[1000,2000,30112]," - + "\"CollPropertyInt32\":[23232323,11223355,10000001]," - + "\"CollPropertyInt64\":[929292929292,333333333333,444444444444]," - + "\"CollPropertySingle\":[1790.0,26600.0,3210.0]," - + "\"CollPropertyDouble\":[-17900.0,-2.78E7,3210.0]," - + "\"CollPropertyDecimal\":[12,-2,1234]," - + "\"CollPropertyBinary\":[\"q83v\",\"ASNF\",\"VGeJ\"]," - + "\"CollPropertyDate\":[\"1958-12-03\",\"1999-08-05\",\"2013-06-25\"]," - + "\"CollPropertyDateTimeOffset\":[\"2015-08-12T03:08:34Z\",\"1970-03-28T12:11:10Z\"," - + "\"1948-02-17T09:09:09Z\"]," - + "\"CollPropertyDuration\":[\"PT13S\",\"PT5H28M0S\",\"PT1H0S\"]," - + "\"CollPropertyGuid\":[\"ffffff67-89ab-cdef-0123-456789aaaaaa\",\"eeeeee67-89ab-cdef-0123-456789bbbbbb\"," - + "\"cccccc67-89ab-cdef-0123-456789cccccc\"]," - + "\"CollPropertyTimeOfDay\":[\"04:14:13\",\"23:59:59\",\"01:12:33\"]" - + "}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - Entity e = deserializer.entity(stream, edm.getEntityType( - new FullQualifiedName("Namespace1_Alias", "ETCollAllPrim"))); - - assertTrue((Boolean) e.getProperty("CollPropertyBoolean").asCollection().get(0)); - assertNull(e.getProperty("CollPropertyBoolean").asCollection().get(1)); - assertFalse((Boolean) e.getProperty("CollPropertyBoolean").asCollection().get(2)); - } - - @Test - public void validJsonValueForComplexTypeNull() throws Exception { - final String entityString = "{" - + "\"PropertyComp\":null" - + "}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - Entity entity = deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", - "ETMixPrimCollComp"))); - - assertNull(entity.getProperty("PropertyComp").getValue()); - } - - @Test - public void validJsonValueForComplexCollectionNullValue() throws Exception { - final String entityString = "{" - + "\"CollPropertyComp\":[" - + "null," - + "{\"PropertyInt16\":789,\"PropertyString\":\"TEST 3\"}]}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - - Entity entity = deserializer.entity(stream, edm.getEntityType( - new FullQualifiedName("Namespace1_Alias", "ETMixPrimCollComp"))); - List<?> collPropertyComp = entity.getProperty("CollPropertyComp").asCollection(); - assertNull(collPropertyComp.get(0)); - List<Property> complexPropertyProperties = (List<Property>) collPropertyComp.get(1); - assertEquals(Short.valueOf((short) 789), complexPropertyProperties.get(0).getValue()); - assertEquals("TEST 3", complexPropertyProperties.get(1).getValue()); - } - - @Test - public void validJsonValueForPrimPropertyInComplexTypeNull() throws Exception { - final String entityString = "{" - + "\"PropertyComp\":{\"PropertyString\":\"TEST A\",\"PropertyInt16\":null}" - + "}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - Entity entity = deserializer.entity(stream, edm.getEntityType( - new FullQualifiedName("Namespace1_Alias", "ETCompAllPrim"))); - - assertEquals("TEST A", entity.getProperty("PropertyComp").asComplex().get(0).getValue()); - assertNull(entity.getProperty("PropertyComp").asComplex().get(1).getValue()); - } - - @Test - public void eTMixEnumDefCollCompNavValidComplexEnumValueNull() throws Exception { - String entityString = "{" - + "\"PropertyEnumString\" : 2," - + "\"PropertyCompMixedEnumDef\" : {" - + "\"PropertyEnumString\" : null" - + "}}"; - - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - Entity e = deserializer.entity(stream, edm.getEntityType( - new FullQualifiedName("Namespace1_Alias", "ETMixEnumDefCollComp"))); - - assertEquals(Short.valueOf("2"), e.getProperty("PropertyEnumString").getValue()); - Property propertyCompMixedEnumDef = e.getProperty("PropertyCompMixedEnumDef"); - assertNull(propertyCompMixedEnumDef.asComplex().get(0).getValue()); - } - - -// ---------------------------------- Negative Tests ----------------------------------------------------------- - - @Test(expected = DeserializerException.class) - public void etAllPrimWithInvalidNullValue() throws Exception { - String entityString = - "{\"PropertyInt16\":null," + - "\"PropertyString\":\"First Resource - positive values\"," + - "\"PropertyBoolean\":true," + - "\"PropertyByte\":255," + - "\"PropertySByte\":127," + - "\"PropertyInt32\":2147483647," + - "\"PropertyInt64\":9223372036854775807," + - "\"PropertySingle\":1.79E20," + - "\"PropertyDouble\":-1.79E19," + - "\"PropertyDecimal\":34," + - "\"PropertyBinary\":\"ASNFZ4mrze8=\"," + - "\"PropertyDate\":\"2012-12-03\"," + - "\"PropertyDateTimeOffset\":\"2012-12-03T07:16:23Z\"," + - "\"PropertyDuration\":\"PT6S\"," + - "\"PropertyGuid\":\"01234567-89ab-cdef-0123-456789abcdef\"," + - "\"PropertyTimeOfDay\":\"03:26:05\"}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - try { - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETAllPrim"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.INVALID_NULL_PROPERTY, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void doublePrimitiveProperty() throws Exception { - final String entityString = "{\"@odata.context\":\"$metadata#ESTwoPrim/$entity\"," + - "\"PropertyInt16\":32766,\"PropertyInt16\":32766,\"PropertyString\":\"Test String1\"}"; - - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - try { - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETTwoPrim"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.DUPLICATE_PROPERTY, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void doubleComplexProperty() throws Exception { - final String entityString = "{" - + "\"PropertyInt16\":32767," - + "\"CollPropertyString\":" - + "[\"[email protected]\",\"[email protected]\",\"[email protected]\"]," - + "\"PropertyComp\":{\"PropertyInt16\":111,\"PropertyString\":\"TEST A\"}," - + "\"PropertyComp\":{\"PropertyInt16\":111,\"PropertyString\":\"TEST B\"}," - + "\"CollPropertyComp\":[" - + "{\"PropertyInt16\":123,\"PropertyString\":\"TEST 1\"}," - + "{\"PropertyInt16\":456,\"PropertyString\":\"TEST 2\"}," - + "{\"PropertyInt16\":789,\"PropertyString\":\"TEST 3\"}]}"; - - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - try { - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETMixPrimCollComp"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.DUPLICATE_PROPERTY, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void doubleComplexPropertyCollection() throws Exception { - final String entityString = "{" - + "\"PropertyInt16\":32767," - + "\"CollPropertyString\":" - + "[\"[email protected]\",\"[email protected]\",\"[email protected]\"]," - + "\"PropertyComp\":{\"PropertyInt16\":111,\"PropertyString\":\"TEST A\"}," - + "\"CollPropertyComp\":[" - + "{\"PropertyInt16\":123,\"PropertyString\":\"TEST 1\"}," - + "{\"PropertyInt16\":456,\"PropertyString\":\"TEST 2\"}," - + "{\"PropertyInt16\":789,\"PropertyString\":\"TEST 3\"}]," - + "\"CollPropertyComp\":[" - + "{\"PropertyInt16\":123,\"PropertyString\":\"TEST 1\"}," - + "{\"PropertyInt16\":456,\"PropertyString\":\"TEST 2\"}," - + "{\"PropertyInt16\":789,\"PropertyString\":\"TEST 3\"}]" - + "}"; - - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - try { - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETMixPrimCollComp"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.DUPLICATE_PROPERTY, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void doublePrimitivePropertyCollection() throws Exception { - final String entityString = "{" - + "\"PropertyInt16\":32767," - + "\"CollPropertyString\":" - + "[\"[email protected]\",\"[email protected]\",\"[email protected]\"]," - + "\"CollPropertyString\":" - + "[\"[email protected]\",\"[email protected]\",\"[email protected]\"]," - + "\"PropertyComp\":{\"PropertyInt16\":111,\"PropertyString\":\"TEST A\"}," - + "\"CollPropertyComp\":[" - + "{\"PropertyInt16\":123,\"PropertyString\":\"TEST 1\"}," - + "{\"PropertyInt16\":456,\"PropertyString\":\"TEST 2\"}," - + "{\"PropertyInt16\":789,\"PropertyString\":\"TEST 3\"}]}"; - - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - try { - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETMixPrimCollComp"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.DUPLICATE_PROPERTY, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void customAnnotationInEntityLeadToNotImplemented() throws Exception { - final String entityString = "{" - + "\"PropertyInt16\":32767," - + "\"[email protected]\": 12," - + "\"CollPropertyString\":" - + "[\"[email protected]\",\"[email protected]\",\"[email protected]\"]," - + "\"PropertyComp\":{\"PropertyInt16\":111,\"PropertyString\":\"TEST A\"}," - + "\"CollPropertyComp\":[" - + "{\"PropertyInt16\":123,\"PropertyString\":\"TEST 1\"}," - + "{\"PropertyInt16\":456,\"PropertyString\":\"TEST 2\"}," - + "{\"PropertyInt16\":789,\"PropertyString\":\"TEST 3\"}]}"; - - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - try { - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETMixPrimCollComp"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.NOT_IMPLEMENTED, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void customAnnotationInComplexValueLeadToNotImplemented() throws Exception { - final String entityString = "{" - + "\"PropertyInt16\":32767," - + "\"CollPropertyString\":" - + "[\"[email protected]\",\"[email protected]\",\"[email protected]\"]," - + "\"PropertyComp\":{\"PropertyInt16\":111," + - "\"[email protected]\": 12,\"PropertyString\":\"TEST A\"}," - + "\"CollPropertyComp\":[" - + "{\"PropertyInt16\":123,\"PropertyString\":\"TEST 1\"}," - + "{\"PropertyInt16\":456,\"PropertyString\":\"TEST 2\"}," - + "{\"PropertyInt16\":789,\"PropertyString\":\"TEST 3\"}]}"; - - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - try { - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETMixPrimCollComp"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.NOT_IMPLEMENTED, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void customAnnotationInComplexCollectionValueLeadToNotImplemented() throws Exception { - final String entityString = "{" - + "\"PropertyInt16\":32767," - + "\"CollPropertyString\":" - + "[\"[email protected]\",\"[email protected]\",\"[email protected]\"]," - + "\"PropertyComp\":{\"PropertyInt16\":111,\"PropertyString\":\"TEST A\"}," - + "\"CollPropertyComp\":[" - + "{\"PropertyInt16\":123,\"[email protected]\": 12,\"PropertyString\":\"TEST 1\"}," - + "{\"PropertyInt16\":456,\"PropertyString\":\"TEST 2\"}," - + "{\"PropertyInt16\":789,\"PropertyString\":\"TEST 3\"}]}"; - - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - try { - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETMixPrimCollComp"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.NOT_IMPLEMENTED, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void unkownContentInEntity() throws Exception { - final String entityString = "{" - + "\"PropertyInt16\":32767," - + "\"unknown\": 12," - + "\"CollPropertyString\":" - + "[\"[email protected]\",\"[email protected]\",\"[email protected]\"]," - + "\"PropertyComp\":{\"PropertyInt16\":111,\"PropertyString\":\"TEST A\"}," - + "\"CollPropertyComp\":[" - + "{\"PropertyInt16\":123,\"PropertyString\":\"TEST 1\"}," - + "{\"PropertyInt16\":456,\"PropertyString\":\"TEST 2\"}," - + "{\"PropertyInt16\":789,\"PropertyString\":\"TEST 3\"}]}"; - - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - try { - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETMixPrimCollComp"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.UNKOWN_CONTENT, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void unkownContentInComplexProperty() throws Exception { - final String entityString = "{" - + "\"PropertyInt16\":32767," - + "\"CollPropertyString\":" - + "[\"[email protected]\",\"[email protected]\",\"[email protected]\"]," - + "\"PropertyComp\":{\"PropertyInt16\":111,\"unknown\": 12,\"PropertyString\":\"TEST A\"}," - + "\"CollPropertyComp\":[" - + "{\"PropertyInt16\":123,\"PropertyString\":\"TEST 1\"}," - + "{\"PropertyInt16\":456,\"PropertyString\":\"TEST 2\"}," - + "{\"PropertyInt16\":789,\"PropertyString\":\"TEST 3\"}]}"; - - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - try { - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETMixPrimCollComp"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.UNKOWN_CONTENT, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void unkownContentInComplexCollectionProperty() throws Exception { - final String entityString = "{" - + "\"PropertyInt16\":32767," - + "\"CollPropertyString\":" - + "[\"[email protected]\",\"[email protected]\",\"[email protected]\"]," - + "\"PropertyComp\":{\"PropertyInt16\":111,\"PropertyString\":\"TEST A\"}," - + "\"CollPropertyComp\":[" - + "{\"PropertyInt16\":123,\"PropertyString\":\"TEST 1\"}," - + "{\"PropertyInt16\":456,\"unknown\": 12,\"PropertyString\":\"TEST 2\"}," - + "{\"PropertyInt16\":789,\"PropertyString\":\"TEST 3\"}]}"; - - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - try { - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETMixPrimCollComp"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.UNKOWN_CONTENT, e.getMessageKey()); - throw e; - } - } - - @Test - public void propertyInt16JsonTypesNegativeCheck() throws Exception { - checkPropertyJsonType("{\"PropertyInt16\":\"32767\"}"); - checkPropertyJsonType("{\"PropertyInt16\":true}"); - } - - @Test - public void propertyInt32JsonTypesNegativeCheck() throws Exception { - checkPropertyJsonType("{\"PropertyInt32\":\"2147483647\"}"); - checkPropertyJsonType("{\"PropertyInt32\":true}"); - } - - @Test - public void propertyInt64JsonTypesNegativeCheck() throws Exception { - checkPropertyJsonType("{\"PropertyInt64\":\"9223372036854775807\"}"); - checkPropertyJsonType("{\"PropertyInt64\":true}"); - } - - @Test - public void propertyStringJsonTypesNegativeCheck() throws Exception { - checkPropertyJsonType("{\"PropertyString\":32767}"); - checkPropertyJsonType("{\"PropertyString\":true}"); - } - - @Test - public void propertyBooleanJsonTypesNegativeCheck() throws Exception { - checkPropertyJsonType("{\"PropertyBoolean\":\"true\"}"); - checkPropertyJsonType("{\"PropertyBoolean\":123}"); - } - - @Test - public void propertyByteJsonTypesNegativeCheck() throws Exception { - checkPropertyJsonType("{\"PropertyByte\":\"255\"}"); - checkPropertyJsonType("{\"PropertyByte\":true}"); - } - - @Test - public void propertySByteJsonTypesNegativeCheck() throws Exception { - checkPropertyJsonType("{\"PropertySByte\":\"127\"}"); - checkPropertyJsonType("{\"PropertySByte\":true}"); - } - - @Test - public void propertySingleJsonTypesNegativeCheck() throws Exception { - checkPropertyJsonType("{\"PropertySingle\":\"1.79E20\"}"); - checkPropertyJsonType("{\"PropertySingle\":true}"); - } - - @Test - public void propertyDoubleJsonTypesNegativeCheck() throws Exception { - checkPropertyJsonType("{\"PropertyDouble\":\"-1.79E19\"}"); - checkPropertyJsonType("{\"PropertyDouble\":true}"); - } - - @Test - public void propertyDecimalJsonTypesNegativeCheck() throws Exception { - checkPropertyJsonType("{\"PropertyDecimal\":\"34\"}"); - checkPropertyJsonType("{\"PropertyDecimal\":true}"); - } - - @Test - public void propertyBinaryJsonTypesNegativeCheck() throws Exception { - checkPropertyJsonType("{\"PropertyBinary\":32767}"); - checkPropertyJsonType("{\"PropertyBinary\":true}"); - } - - @Test - public void propertyDateJsonTypesNegativeCheck() throws Exception { - checkPropertyJsonType("{\"PropertyDate\":32767}"); - checkPropertyJsonType("{\"PropertyDate\":true}"); - } - - @Test - public void propertyDateTimeOffsetJsonTypesNegativeCheck() throws Exception { - checkPropertyJsonType("{\"PropertyDateTimeOffset\":32767}"); - checkPropertyJsonType("{\"PropertyDateTimeOffset\":true}"); - } - - @Test - public void propertyDurationJsonTypesNegativeCheck() throws Exception { - checkPropertyJsonType("{\"PropertyDuration\":32767}"); - checkPropertyJsonType("{\"PropertyDuration\":true}"); - } - - @Test - public void propertyGuidTimeOffsetJsonTypesNegativeCheck() throws Exception { - checkPropertyJsonType("{\"PropertyGuid\":32767}"); - checkPropertyJsonType("{\"PropertyGuid\":true}"); - } - - @Test - public void propertyTimeOfDayJsonTypesNegativeCheck() throws Exception { - checkPropertyJsonType("{\"PropertyTimeOfDay\":32767}"); - checkPropertyJsonType("{\"PropertyTimeOfDay\":true}"); - } - - @Test(expected = DeserializerException.class) - public void bindOperationWrongJsonTypeForToOne() throws Exception { - String entityString = - "{\"PropertyInt16\":32767," - + "\"PropertyString\":\"First Resource - positive values\"," - + "\"[email protected]\":[\"ESTwoPrim(2)\"]" - + "}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - try { - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETAllPrim"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.INVALID_ANNOTATION_TYPE, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void bindOperationWrongJsonTypeForToMany() throws Exception { - String entityString = - "{\"PropertyInt16\":32767," - + "\"PropertyString\":\"First Resource - positive values\"," - + "\"[email protected]\":\"ESTwoPrim(2)\"" - + "}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - try { - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETAllPrim"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.INVALID_ANNOTATION_TYPE, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void bindOperationWrongJsonTypeForToManyNumberInArray() throws Exception { - String entityString = - "{\"PropertyInt16\":32767," - + "\"PropertyString\":\"First Resource - positive values\"," - + "\"[email protected]\":[123,456]" - + "}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - try { - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETAllPrim"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.INVALID_ANNOTATION_TYPE, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void bindOperationWrongAnnotationFormat() throws Exception { - String entityString = - "{\"PropertyInt16\":32767," - + "\"PropertyString\":\"First Resource - positive values\"," - + "\"@odata.bind\":\"ESTwoPrim(2)\"" - + "}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - try { - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETAllPrim"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.NAVIGATION_PROPERTY_NOT_FOUND, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void bindingOperationNullOnToOne() throws Exception { - String entityString = - "{\"PropertyInt16\":32767," - + "\"PropertyString\":\"First Resource - positive values\"," - + "\"[email protected]\":null" - + "}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - try { - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETAllPrim"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.INVALID_NULL_ANNOTATION, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void bindingOperationNullOnToMany() throws Exception { - String entityString = - "{\"PropertyInt16\":32767," - + "\"PropertyString\":\"First Resource - positive values\"," - + "\"[email protected]\":null" - + "}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - try { - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETAllPrim"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.INVALID_NULL_ANNOTATION, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void bindingOperationNullInArray() throws Exception { - String entityString = - "{\"PropertyInt16\":32767," - + "\"PropertyString\":\"First Resource - positive values\"," - + "\"[email protected]\":[null]" - + "}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - try { - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETAllPrim"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.INVALID_NULL_ANNOTATION, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void invalidJsonSyntax() throws Exception { - String entityString = - "{\"PropertyInt16\":32767,}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - try { - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETAllPrim"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.JSON_SYNTAX_EXCEPTION, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void invalidJsonValueForPrimTypeArray() throws Exception { - String entityString = - "{\"PropertyInt16\":[]}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - try { - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETAllPrim"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.INVALID_JSON_TYPE_FOR_PROPERTY, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void invalidJsonValueForPrimTypeObject() throws Exception { - String entityString = - "{\"PropertyInt16\":{}}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - try { - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETAllPrim"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.INVALID_JSON_TYPE_FOR_PROPERTY, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void invalidJsonValueForPrimCollectionTypeObject() throws Exception { - final String entityString = "{" - + "\"CollPropertyString\":" - + "{\"[email protected]\":1234}" - + "}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - try { - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETMixPrimCollComp"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.INVALID_JSON_TYPE_FOR_PROPERTY, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void invalidJsonValueForComplexTypeTypeString() throws Exception { - final String entityString = "{" - + "\"PropertyComp\":\"InvalidString\"" - + "}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - try { - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETMixPrimCollComp"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.INVALID_JSON_TYPE_FOR_PROPERTY, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void invalidNullValueForComplexTypeNullableFalse() throws Exception { - final String entityString = "{" - + "\"PropertyComp\":null" - + "}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - try { - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETTwoKeyNav"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.INVALID_NULL_PROPERTY, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void invalidNullValueForPrimBeforeComplexTypeNullableFalse() throws Exception { - final String entityString = "{" - + "\"PropertyInt16\": null, \"PropertyString\": \"321\", " - + "\"PropertyComp\":{\"PropertyInt16\": null, " - + "\"PropertyComp\": {\"PropertyString\":\"StringValue\"}}" - + "}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - try { - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETTwoKeyNav"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.INVALID_NULL_PROPERTY, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void invalidNullValueForComplexTypePropertyNullableFalse() throws Exception { - final String entityString = "{" - + "\"PropertyInt16\": 123, " - + "\"PropertyCompTwoPrim\":{\"PropertyInt16\": null, \"PropertyString\":\"StringValue\"}" - + "}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - try { - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETKeyNav"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.INVALID_NULL_PROPERTY, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void invalidNullValueForPrimCollectionNullableFalse() throws Exception { - final String entityString = "{" - + "\"CollPropertyString\":[" - + "null," - + "\"StringValue_1\",\"TEST 3\"]}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - try { - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETCollAllPrim"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.INVALID_NULL_PROPERTY, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void invalidNullValueForPrimIntCollectionNullableFalse() throws Exception { - final String entityString = "{" - + "\"CollPropertyInt16\":[123,\"null\",4711]" - + "}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - try { - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETCollAllPrim"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.INVALID_VALUE_FOR_PROPERTY, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void provokedPrimitiveTypeException() throws Exception { - final String entityString = "{" - + "\"PropertyInt16\":32767000000000000000000000000000000000000" - + "}"; - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - try { - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETMixPrimCollComp"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.INVALID_VALUE_FOR_PROPERTY, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void eTMixEnumDefCollCompInvalidEnumValueNull() throws Exception { - String entityString = "{" - + "\"PropertyEnumString\" : null," - + "\"PropertyCompEnum\" : {" - + "\"PropertyEnumString\" : 2" - + "}}"; - - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - Entity e = deserializer.entity(stream, edm.getEntityType( - new FullQualifiedName("Namespace1_Alias", "ETMixEnumDefCollComp"))); - - assertNull(e.getProperty("PropertyEnumString").getValue()); - Property propertyCompMixedEnumDef = e.getProperty("PropertyCompMixedEnumDef"); - assertEquals(Short.valueOf("2"), propertyCompMixedEnumDef.asComplex().get(0).getValue()); - } - - @Test(expected = DeserializerException.class) - public void eTMixEnumDefCollCompInvalidEnumValueArray() throws Exception { - String entityString = "{" - + "\"PropertyEnumString\" : []," - + "\"PropertyCompEnum\" : {" - + "\"PropertyEnumString\" : 2" - + "}}"; - - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - try { - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETMixEnumDefCollComp"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.INVALID_JSON_TYPE_FOR_PROPERTY, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void eTMixEnumDefCollCompInvalidEnumValueObject() throws Exception { - String entityString = "{" - + "\"PropertyEnumString\" : {}," - + "\"PropertyCompEnum\" : {" - + "\"PropertyEnumString\" : 2" - + "}}"; - - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - try { - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETMixEnumDefCollComp"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.INVALID_JSON_TYPE_FOR_PROPERTY, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void eTMixEnumDefCollCompInvalidEnumValue() throws Exception { - String entityString = "{" - + "\"PropertyEnumString\" : \"invalid\"," - + "\"PropertyCompEnum\" : {" - + "\"PropertyEnumString\" : 2" - + "}}"; - - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - try { - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETMixEnumDefCollComp"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.INVALID_VALUE_FOR_PROPERTY, e.getMessageKey()); - throw e; - } - } - - @Test(expected = DeserializerException.class) - public void eTMixEnumDefCollCompInvalidEnumValueByPrimitiveTypeException() throws Exception { - String entityString = "{" - + "\"PropertyEnumString\" : 18," - + "\"PropertyCompEnum\" : {" - + "\"PropertyEnumString\" : 2" - + "}}"; - - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - try { - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETMixEnumDefCollComp"))); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.INVALID_VALUE_FOR_PROPERTY, e.getMessageKey()); - throw e; - } - } - -// @Test(expected = DeserializerException.class) -// public void invalidJsonValueForPrimCollectionTypeObject() throws Exception { -// final String entityString = "{" -// + "\"PropertyInt16\":32767," -// + "\"CollPropertyString\":" -// + "[\"[email protected]\",\"[email protected]\",\"[email protected]\"]," -// + "\"PropertyComp\":{\"PropertyInt16\":111,\"PropertyString\":\"TEST A\"}," -// + "\"CollPropertyComp\":[" -// + "{\"PropertyInt16\":123,\"PropertyString\":\"TEST 1\"}," -// + "{\"PropertyInt16\":456,\"PropertyString\":\"TEST 2\"}," -// + "{\"PropertyInt16\":789,\"PropertyString\":\"TEST 3\"}]}"; -// InputStream stream = new ByteArrayInputStream(entityString.getBytes()); -// ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); -// try { -// deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETMixPrimCollComp"))); -// } catch (DeserializerException e) { -// assertEquals(DeserializerException.MessageKeys.INVALID_JSON_TYPE_FOR_PROPERTY, e.getMessageKey()); -// throw e; -// } -// } - - private void checkPropertyJsonType(String entityString) throws DeserializerException { - InputStream stream = new ByteArrayInputStream(entityString.getBytes()); - ODataDeserializer deserializer = OData.newInstance().createDeserializer(ODataFormat.JSON); - try { - deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETAllPrim"))); - fail("Expected an exception but was not thrown: " + this.getClass().getName()); - } catch (DeserializerException e) { - assertEquals(DeserializerException.MessageKeys.INVALID_VALUE_FOR_PROPERTY, e.getMessageKey()); - } - } -}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/ExpandSelectMock.java ---------------------------------------------------------------------- diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/ExpandSelectMock.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/ExpandSelectMock.java deleted file mode 100644 index 1bf2c9d..0000000 --- a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/ExpandSelectMock.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core.serializer; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.apache.olingo.commons.api.edm.EdmElement; -import org.apache.olingo.commons.api.edm.EdmEntitySet; -import org.apache.olingo.commons.api.edm.EdmNavigationProperty; -import org.apache.olingo.commons.api.edm.EdmProperty; -import org.apache.olingo.commons.api.edm.EdmStructuredType; -import org.apache.olingo.commons.api.edm.constants.EdmTypeKind; -import org.apache.olingo.server.api.uri.UriInfoResource; -import org.apache.olingo.server.api.uri.UriResource; -import org.apache.olingo.server.api.uri.UriResourceNavigation; -import org.apache.olingo.server.api.uri.UriResourceProperty; -import org.apache.olingo.server.api.uri.queryoption.ExpandItem; -import org.apache.olingo.server.api.uri.queryoption.ExpandOption; -import org.apache.olingo.server.api.uri.queryoption.SelectItem; -import org.apache.olingo.server.api.uri.queryoption.SelectOption; -import org.mockito.Mockito; - -public final class ExpandSelectMock { - - private static UriInfoResource mockResource(final EdmEntitySet edmEntitySet, final String... names) { - EdmStructuredType type = edmEntitySet.getEntityType(); - List<UriResource> elements = new ArrayList<UriResource>(); - for (final String name : Arrays.asList(names)) { - final EdmElement edmElement = type.getProperty(name); - if (edmElement.getType().getKind() == EdmTypeKind.ENTITY) { - UriResourceNavigation element = Mockito.mock(UriResourceNavigation.class); - Mockito.when(element.getProperty()).thenReturn((EdmNavigationProperty) edmElement); - elements.add(element); - } else { - final EdmProperty property = (EdmProperty) edmElement; - UriResourceProperty element = Mockito.mock(UriResourceProperty.class); - Mockito.when(element.getProperty()).thenReturn(property); - elements.add(element); - type = property.isPrimitive() ? null : (EdmStructuredType) property.getType(); - } - } - UriInfoResource resource = Mockito.mock(UriInfoResource.class); - Mockito.when(resource.getUriResourceParts()).thenReturn(elements); - return resource; - } - - public static SelectItem mockSelectItem(final EdmEntitySet edmEntitySet, final String... names) { - final UriInfoResource resource = mockResource(edmEntitySet, names); - SelectItem selectItem = Mockito.mock(SelectItem.class); - Mockito.when(selectItem.getResourcePath()).thenReturn(resource); - return selectItem; - } - - public static SelectOption mockSelectOption(final List<SelectItem> selectItems) { - SelectOption select = Mockito.mock(SelectOption.class); - Mockito.when(select.getSelectItems()).thenReturn(selectItems); - return select; - } - - public static ExpandItem mockExpandItem(final EdmEntitySet edmEntitySet, final String... names) { - final UriInfoResource resource = mockResource(edmEntitySet, names); - ExpandItem expandItem = Mockito.mock(ExpandItem.class); - Mockito.when(expandItem.getResourcePath()).thenReturn(resource); - return expandItem; - } - - public static ExpandOption mockExpandOption(final List<ExpandItem> expandItems) { - ExpandOption expand = Mockito.mock(ExpandOption.class); - Mockito.when(expand.getExpandItems()).thenReturn(expandItems); - return expand; - } -}
