public void DollarValueGivesErrorForAllVerbs(DSPUnitTestServiceDefinition roadTripServiceDefinition, Action<TestWebRequest> sendRequestAndAssertBehavior) { using (TestWebRequest request = roadTripServiceDefinition.CreateForInProcess()) { request.StartService(); // GET request.Accept = UnitTestsUtil.MimeTextPlain; request.RequestContentType = null; request.HttpMethod = "GET"; request.RequestUriString = string.Format("/TripLegs({0})/GeographyProperty1/$value", SpatialTestUtil.DefaultId); sendRequestAndAssertBehavior(request); // PUT request.HttpMethod = "PUT"; request.RequestContentType = UnitTestsUtil.MimeTextPlain; request.RequestUriString = string.Format("/TripLegs({0})/GeographyProperty1/$value", SpatialTestUtil.DefaultId); string newValue = GmlFormatter.Create().Write(TestPoint.NewValues.TripLegGeography1.AsGeography()); request.RequestStream = IOUtil.CreateStream(newValue); sendRequestAndAssertBehavior(request); // POST request.HttpMethod = "POST"; sendRequestAndAssertBehavior(request); // PATCH request.HttpMethod = "PATCH"; sendRequestAndAssertBehavior(request); // DELETE request.HttpMethod = "DELETE"; string uri = string.Format("/TripLegs({0})/GeographyProperty1/$value", SpatialTestUtil.DefaultId); request.RequestUriString = uri; sendRequestAndAssertBehavior(request); } }
private static void TestSpatialMetadata(DSPDataProviderKind providerKind) { DSPMetadata metadata = new DSPMetadata("SpatialMetadata", "AstoriaUnitTests.Tests"); // Entity with all types of geography properties KeyValuePair<string, Type>[] geographyProperties = new KeyValuePair<string, Type>[] { new KeyValuePair<string, Type>("GeographyProperty", typeof(Geography)), new KeyValuePair<string, Type>("PointProperty", typeof(GeographyPoint)), new KeyValuePair<string, Type>("LineStringProperty", typeof(GeographyLineString)), }; string entityTypeName = "AllGeographyTypes"; SpatialTestUtil.AddEntityType(metadata, entityTypeName, geographyProperties, useComplexType: false, useOpenTypes: false); metadata.SetReadOnly(); var service = new DSPUnitTestServiceDefinition(metadata, providerKind, new DSPContext()); using (TestWebRequest request = service.CreateForInProcess()) { request.StartService(); request.HttpMethod = "GET"; XDocument response = UnitTestsUtil.GetResponseAsAtomXLinq(request, "/$metadata"); XElement schemaElement = response.Root.Element(UnitTestsUtil.EdmxNamespace + "DataServices").Elements().Single(e => e.Name.LocalName == "Schema"); XNamespace edmNs = schemaElement.Name.Namespace; XElement entityElement = schemaElement.Elements(edmNs + "EntityType").Single(e => (string)e.Attribute("Name") == entityTypeName); foreach (KeyValuePair<string, Type> property in geographyProperties) { XElement propertyElement = entityElement.Elements(edmNs + "Property").Single(e => (string)e.Attribute("Name") == property.Key); // EF provider currently represents all types as Edm.Geography in metadata (property is DbGeography on the entity), otherwise it should reflect the actual type string expectedEdmTypeName = providerKind == DSPDataProviderKind.EF ? "Edm.Geography" : GetExpectedEdmTypeName(property.Value); Assert.AreEqual(expectedEdmTypeName, propertyElement.Attribute("Type").Value, "Wrong property type for property {0},", property.Key); XAttribute attribute = propertyElement.Attributes().Where(a => a.Name == "SRID").Single(); Assert.AreEqual("Variable", attribute.Value); } } }
public void AllowRedefiningConcurrencyTokenOnDerivedType() { var metadataProvider = new DSPMetadata("DefaultContainer", "Default"); var entityType = metadataProvider.AddEntityType("EntityType", null, null, false /*isAbstract*/); metadataProvider.AddKeyProperty(entityType, "ID", typeof(int)); metadataProvider.AddPrimitiveProperty(entityType, "LastUpdatedAuthor", typeof(string), true /*eTag*/); var derivedType = metadataProvider.AddEntityType("DerivedType", null, entityType, false /*isAbstract*/); metadataProvider.AddPrimitiveProperty(derivedType, "LastModifiedAuthor", typeof(string), true /*eTag*/); metadataProvider.AddResourceSet("Customers", entityType); var wrapper = new DataServiceMetadataProviderWrapper(metadataProvider); DSPResource baseTypeInstance = new DSPResource(entityType); baseTypeInstance.SetValue("ID", 1); baseTypeInstance.SetValue("LastUpdatedAuthor", "Phani"); DSPResource derivedTypeInstance = new DSPResource(derivedType); derivedTypeInstance.SetValue("ID", 1); derivedTypeInstance.SetValue("LastModifiedAuthor", "Raj"); DSPContext dataContext = new DSPContext(); var entities = dataContext.GetResourceSetEntities("Customers"); entities.AddRange(new object[] { baseTypeInstance, derivedTypeInstance }); var service = new DSPUnitTestServiceDefinition(metadataProvider, DSPDataProviderKind.Reflection, dataContext); using (TestWebRequest request = service.CreateForInProcess()) { try { request.StartService(); request.RequestUriString = "/$metadata"; request.SendRequestAndCheckResponse(); } finally { request.StopService(); } } }