public void Validate_Throws_DollarCountAppliedOnNotCountableCollection(string uri, string message) { // Arrange IEdmModel model = GetEdmModel(); var pathHandler = new DefaultODataPathHandler(); string serviceRoot = "http://localhost/"; ODataPath path = pathHandler.Parse(model, serviceRoot, uri); var context = new ODataQueryContext( model, EdmCoreModel.Instance.GetInt32(false).Definition, path); var option = new CountQueryOption("true", context); var settings = new ODataValidationSettings(); // Act & Assert Assert.Throws<InvalidOperationException>(() => _validator.Validate(option, settings), message); }
public void GetSingleEntityEntityType_ReturnsEntityTypeForSingleEntityResources(string odataPath, string typeName) { // Arrange IEdmModel model = SetupModel(); IODataPathHandler pathHandler = new DefaultODataPathHandler(); ODataPath path = pathHandler.Parse(model, "http://localhost/any", odataPath); // Guard Assert.NotNull(path); // Act IEdmEntityType entityType = ETagMessageHandler.GetSingleEntityEntityType(path); // Assert Assert.NotNull(entityType); Assert.Equal(typeName, entityType.FullName()); }
public void CanParseKeyAsSegmentUrl() { // Arrange string odataPath = "RoutingCustomers/112"; string expectedText = "112"; IEdmEntitySet expectedSet = _model.EntityContainer.EntitySets().SingleOrDefault(s => s.Name == "RoutingCustomers"); var simplifiedParser = new DefaultODataPathHandler(); simplifiedParser.ResolverSetttings.UrlConventions = ODataUrlConventions.ODataSimplified; // Act ODataPath path = simplifiedParser.Parse(_model, _serviceRoot, odataPath); ODataPathSegment segment = path.Segments.Last(); // Assert Assert.NotNull(segment); Assert.Equal(expectedText, segment.ToString()); Assert.IsType<KeyValuePathSegment>(segment); Assert.Same(expectedSet, path.NavigationSource); Assert.Same(expectedSet.EntityType(), path.EdmType); }
internal static IDictionary<string, string> GetKeys(DefaultODataPathHandler pathHandler, IEdmModel edmModel, string serviceRoot, Uri uri) { ODataPath odataPath = pathHandler.Parse(edmModel, serviceRoot, uri.ToString()); KeyValuePathSegment segment = odataPath.Segments.OfType<KeyValuePathSegment>().Last(); if (segment == null) { throw Error.InvalidOperation(SRResources.EntityReferenceMustHasKeySegment, uri); } return segment.Values; }
public void PrefixFreeEnumValue_Works_PrefixFreeResolver(string path, string template, string expect) { // Arrange & Act // Arrange DefaultODataPathHandler pathHandler = new DefaultODataPathHandler { ResolverSetttings = new ODataUriResolverSetttings { EnumPrefixFree = true } }; // Act ODataPath odataPath = pathHandler.Parse(_model, _serviceRoot, path); // Assert Assert.NotNull(odataPath); Assert.Equal(template, odataPath.PathTemplate); Assert.Equal(expect, odataPath.ToString()); }
public void Unqualified_Works_CustomUriResolverHandler(string path, string template, string expect) { // Arrange DefaultODataPathHandler pathHandler = new DefaultODataPathHandler { ResolverSetttings = new ODataUriResolverSetttings { CaseInsensitive = true, UnqualifiedNameCall = true } }; // Act ODataPath odataPath = pathHandler.Parse(_model, _serviceRoot, path); // Assert Assert.NotNull(odataPath); Assert.Equal(template, odataPath.PathTemplate); Assert.Equal(expect, odataPath.ToString()); }
public void DefaultUriResolverHandler_Works_CaseInsensitive(string path, string template, string expect) { // Arrange & Act DefaultODataPathHandler pathHandler = new DefaultODataPathHandler { ResolverSetttings = new ODataUriResolverSetttings { CaseInsensitive = true, } }; ODataPath odataPath = pathHandler.Parse(_model, _serviceRoot, path); // Assert Assert.NotNull(odataPath); Assert.Equal(template, odataPath.PathTemplate); Assert.Equal(expect, odataPath.ToString()); }
public void GetODataPayloadSerializer_ReturnsRawValueSerializer_ForDollarCountRequests(string uri, Type elementType) { // Arrange IEdmModel model = ODataCountTest.GetEdmModel(); Type type = typeof(ICollection<>).MakeGenericType(elementType); var request = new HttpRequestMessage(); var pathHandler = new DefaultODataPathHandler(); var path = pathHandler.Parse(model, "http://localhost/", uri); request.ODataProperties().Path = path; ODataSerializerProvider serializerProvider = new DefaultODataSerializerProvider(); // Act var serializer = serializerProvider.GetODataPayloadSerializer(model, type, request); // Assert Assert.NotNull(serializer); var rawValueSerializer = Assert.IsType<ODataRawValueSerializer>(serializer); Assert.Equal(ODataPayloadKind.Value, rawValueSerializer.ODataPayloadKind); }
public void GetResponseStatusCode_ReturnsNoContentForProperties_AndNotFoundForEntities(string odataPath, HttpStatusCode? expected) { // Arrange IEdmModel model = BuildModel(); IODataPathHandler pathHandler = new DefaultODataPathHandler(); ODataPath path = pathHandler.Parse(model, "http://localhost/any", odataPath); // Guard Assert.NotNull(path); // Act HttpStatusCode? statusCode = ODataNullValueMessageHandler.GetUpdatedResponseStatusCodeOrNull(path); // Assert Assert.Equal(expected, statusCode); }