public void Posting_NonDerivedType_To_Action_Expecting_BaseType_Throws() { // Arrange StringContent content = new StringContent("{ '@odata.type' : '#System.Web.OData.Builder.TestModels.Motorcycle' }"); content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json"); IODataRequestMessage oDataRequest = new ODataMessageWrapper(content.ReadAsStreamAsync().Result, content.Headers); ODataMessageReader reader = new ODataMessageReader(oDataRequest, new ODataMessageReaderSettings(), _model); ODataDeserializerProvider deserializerProvider = DependencyInjectionHelper.GetDefaultODataDeserializerProvider(); ODataDeserializerContext context = new ODataDeserializerContext { Model = _model }; IEdmActionImport action = _model.EntityContainer .OperationImports() .Single(f => f.Name == "PostMotorcycle_When_Expecting_Car") as IEdmActionImport; Assert.NotNull(action); IEdmEntitySetBase actionEntitySet; action.TryGetStaticEntitySet(_model, out actionEntitySet); context.Path = new ODataPath(new OperationImportSegment(new[] { action }, actionEntitySet, null)); // Act & Assert Assert.Throws <ODataException>( () => new ODataResourceDeserializer(deserializerProvider).Read(reader, typeof(Car), context), "An resource with type 'System.Web.OData.Builder.TestModels.Motorcycle' was found, " + "but it is not assignable to the expected type 'System.Web.OData.Builder.TestModels.Car'. " + "The type specified in the resource must be equal to either the expected type or a derived type."); }
static ODataActionPayloadDeserializerTest() { _model = GetModel(); _container = _model.EntityContainer; _deserializerProvider = DependencyInjectionHelper.GetDefaultODataDeserializerProvider(); _deserializer = new ODataActionPayloadDeserializer(_deserializerProvider); }
public ODataSingletonDeserializerTest() { EdmModel model = new EdmModel(); var employeeType = new EdmEntityType("NS", "Employee"); employeeType.AddStructuralProperty("EmployeeId", EdmPrimitiveTypeKind.Int32); employeeType.AddStructuralProperty("EmployeeName", EdmPrimitiveTypeKind.String); model.AddElement(employeeType); EdmEntityContainer defaultContainer = new EdmEntityContainer("NS", "Default"); model.AddElement(defaultContainer); _singleton = new EdmSingleton(defaultContainer, "CEO", employeeType); defaultContainer.AddElement(_singleton); model.SetAnnotationValue <ClrTypeAnnotation>(employeeType, new ClrTypeAnnotation(typeof(EmployeeModel))); _edmModel = model; _readContext = new ODataDeserializerContext { Path = new ODataPath(new SingletonSegment(_singleton)), Model = _edmModel, ResourceType = typeof(EmployeeModel) }; _deserializerProvider = DependencyInjectionHelper.GetDefaultODataDeserializerProvider(); }
public void ApplyProperty_DoesNotIgnoreKeyProperty() { // Arrange ODataProperty property = new ODataProperty { Name = "Key1", Value = "Value1" }; EdmEntityType entityType = new EdmEntityType("namespace", "name"); entityType.AddKeys(entityType.AddStructuralProperty("Key1", EdmLibHelpers.GetEdmPrimitiveTypeReferenceOrNull(typeof(string)))); EdmEntityTypeReference entityTypeReference = new EdmEntityTypeReference(entityType, isNullable: false); ODataDeserializerProvider provider = DependencyInjectionHelper.GetDefaultODataDeserializerProvider(); var resource = new Mock <IDelta>(MockBehavior.Strict); Type propertyType = typeof(string); resource.Setup(r => r.TryGetPropertyType("Key1", out propertyType)).Returns(true).Verifiable(); resource.Setup(r => r.TrySetPropertyValue("Key1", "Value1")).Returns(true).Verifiable(); // Act DeserializationHelpers.ApplyProperty(property, entityTypeReference, resource.Object, provider, new ODataDeserializerContext { Model = new EdmModel() }); // Assert resource.Verify(); }
public ODataResourceSetDeserializerTest() { _model = GetEdmModel(); _customerType = _model.GetEdmTypeReference(typeof(Customer)).AsEntity(); _customersType = new EdmCollectionTypeReference(new EdmCollectionType(_customerType)); _serializerProvider = DependencyInjectionHelper.GetDefaultODataSerializerProvider(); _deserializerProvider = DependencyInjectionHelper.GetDefaultODataDeserializerProvider(); }
public ODataResourceDeserializerTests() { _edmModel = EdmTestHelpers.GetModel(); IEdmEntitySet entitySet = _edmModel.EntityContainer.FindEntitySet("Products"); _readContext = new ODataDeserializerContext { Path = new ODataPath(new EntitySetSegment(entitySet)), Model = _edmModel, ResourceType = typeof(Product) }; _productEdmType = _edmModel.GetEdmTypeReference(typeof(Product)).AsEntity(); _supplierEdmType = _edmModel.GetEdmTypeReference(typeof(Supplier)).AsEntity(); _addressEdmType = _edmModel.GetEdmTypeReference(typeof(Address)).AsComplex(); _deserializerProvider = DependencyInjectionHelper.GetDefaultODataDeserializerProvider(); }