public void Match_DeterminesExpectedServiceRoot_ForMetadataWithEscapedSeparator(string prefixString) { // Arrange var originalRoot = "http://any/" + prefixString; var expectedRoot = originalRoot; if (!String.IsNullOrEmpty(prefixString)) { originalRoot += "%2F"; // Escaped '/' } var pathHandler = new TestPathHandler(); var routeRequest = new TestRouteRequest(HttpMethod.Get, originalRoot + "$metadata") { PathHandler = pathHandler, }; var constraint = CreatePathRouteConstraint(); var values = new Dictionary <string, object> { { ODataRouteConstants.ODataPath, "$metadata" }, }; // Act var matched = ConstraintMatch(constraint, routeRequest, values, RouteDirection.UriResolution); // Assert Assert.True(matched); Assert.NotNull(pathHandler.ServiceRoot); Assert.Equal(expectedRoot, pathHandler.ServiceRoot); Assert.NotNull(pathHandler.ODataPath); Assert.Equal("$metadata", pathHandler.ODataPath); }
public void Match_DeterminesExpectedServiceRoot_ForMetadata(string prefixString) { // Arrange var expectedRoot = "http://any/" + prefixString; if (!String.IsNullOrEmpty(prefixString)) { expectedRoot += '/'; } var request = new HttpRequestMessage(HttpMethod.Get, expectedRoot + "$metadata"); var httpRouteCollection = new HttpRouteCollection { { _routeName, new HttpRoute() }, }; request.SetConfiguration(new HttpConfiguration(httpRouteCollection)); var pathHandler = new TestPathHandler(); var constraint = new ODataPathRouteConstraint(pathHandler, _model, _routeName, _conventions); var values = new Dictionary <string, object> { { ODataRouteConstants.ODataPath, "$metadata" }, }; // Act var matched = constraint.Match(request, null, null, values, HttpRouteDirection.UriResolution); // Assert Assert.True(matched); Assert.NotNull(pathHandler.ServiceRoot); Assert.Equal(expectedRoot, pathHandler.ServiceRoot); Assert.NotNull(pathHandler.ODataPath); Assert.Equal("$metadata", pathHandler.ODataPath); }
public void Match_DeterminesExpectedServiceRoot_ForFunctionCallWithEscapedSeparator( string prefixString, string oDataString) { // Arrange var originalRoot = "http://any/" + prefixString; var expectedRoot = originalRoot; if (!String.IsNullOrEmpty(prefixString)) { originalRoot += "%2F"; // Escaped '/' } var oDataPath = String.Format("Unbound(p0='{0}')", oDataString); var request = new HttpRequestMessage(HttpMethod.Get, originalRoot + oDataPath); var httpRouteCollection = new HttpRouteCollection { { _routeName, new HttpRoute() }, }; request.SetConfiguration(new HttpConfiguration(httpRouteCollection)); var builder = new ODataModelBuilder(); builder.Function("Unbound").Returns <string>().Parameter <string>("p0"); var model = builder.GetEdmModel(); var pathHandler = new TestPathHandler(); var constraint = new ODataPathRouteConstraint(pathHandler, model, _routeName, _conventions); var values = new Dictionary <string, object> { { ODataRouteConstants.ODataPath, Uri.UnescapeDataString(oDataPath) }, }; // Act var matched = constraint.Match(request, null, null, values, HttpRouteDirection.UriResolution); // Assert Assert.True(matched); Assert.NotNull(pathHandler.ServiceRoot); Assert.Equal(expectedRoot, pathHandler.ServiceRoot); Assert.NotNull(pathHandler.ODataPath); Assert.Equal(oDataPath, pathHandler.ODataPath); }
public void Match_DeterminesExpectedServiceRoot_ForFunctionCallWithEscapedSeparator( string prefixString, string oDataString) { // Arrange var originalRoot = "http://any/" + prefixString; var expectedRoot = originalRoot; if (!String.IsNullOrEmpty(prefixString)) { originalRoot += "%2F"; // Escaped '/' } var builder = new ODataModelBuilder(); builder.Function("Unbound").Returns <string>().Parameter <string>("p0"); var model = builder.GetEdmModel(); var pathHandler = new TestPathHandler(); var oDataPath = String.Format("Unbound(p0='{0}')", oDataString); var routeRequest = new TestRouteRequest(HttpMethod.Get, originalRoot + oDataPath) { PathHandler = pathHandler, Model = model, }; var constraint = CreatePathRouteConstraint(); var values = new Dictionary <string, object> { { ODataRouteConstants.ODataPath, Uri.UnescapeDataString(oDataPath) }, }; // Act var matched = ConstraintMatch(constraint, routeRequest, values, RouteDirection.UriResolution); // Assert Assert.True(matched); Assert.NotNull(pathHandler.ServiceRoot); Assert.Equal(expectedRoot, pathHandler.ServiceRoot); Assert.NotNull(pathHandler.ODataPath); Assert.Equal(oDataPath, pathHandler.ODataPath); }
public void Match_DeterminesExpectedServiceRoot_ForMetadataWithEscapedSeparator(string prefixString) { // Arrange var originalRoot = "http://any/" + prefixString; var expectedRoot = originalRoot; if (!String.IsNullOrEmpty(prefixString)) { originalRoot += "%2F"; // Escaped '/' } var pathHandler = new TestPathHandler(); var request = new HttpRequestMessage(HttpMethod.Get, originalRoot + "$metadata"); var httpRouteCollection = new HttpRouteCollection { { _routeName, new HttpRoute() }, }; var configuration = new HttpConfiguration(httpRouteCollection); configuration.EnableODataDependencyInjectionSupport(_routeName, pathHandler); request.SetConfiguration(configuration); var constraint = CreatePathRouteConstraint(); var values = new Dictionary<string, object> { { ODataRouteConstants.ODataPath, "$metadata" }, }; // Act var matched = constraint.Match(request, null, null, values, HttpRouteDirection.UriResolution); // Assert Assert.True(matched); Assert.NotNull(pathHandler.ServiceRoot); Assert.Equal(expectedRoot, pathHandler.ServiceRoot); Assert.NotNull(pathHandler.ODataPath); Assert.Equal("$metadata", pathHandler.ODataPath); }
public void Match_DeterminesExpectedServiceRoot_ForFunctionCallWithEscapedSeparator( string prefixString, string oDataString) { // Arrange var originalRoot = "http://any/" + prefixString; var expectedRoot = originalRoot; if (!String.IsNullOrEmpty(prefixString)) { originalRoot += "%2F"; // Escaped '/' } var oDataPath = String.Format("Unbound(p0='{0}')", oDataString); var request = new HttpRequestMessage(HttpMethod.Get, originalRoot + oDataPath); var httpRouteCollection = new HttpRouteCollection { { _routeName, new HttpRoute() }, }; request.SetConfiguration(new HttpConfiguration(httpRouteCollection)); var builder = new ODataModelBuilder(); builder.Function("Unbound").Returns<string>().Parameter<string>("p0"); var model = builder.GetEdmModel(); var pathHandler = new TestPathHandler(); var constraint = new ODataPathRouteConstraint(pathHandler, model, _routeName, _conventions); var values = new Dictionary<string, object> { { ODataRouteConstants.ODataPath, Uri.UnescapeDataString(oDataPath) }, }; // Act var matched = constraint.Match(request, null, null, values, HttpRouteDirection.UriResolution); // Assert Assert.True(matched); Assert.NotNull(pathHandler.ServiceRoot); Assert.Equal(expectedRoot, pathHandler.ServiceRoot); Assert.NotNull(pathHandler.ODataPath); Assert.Equal(oDataPath, pathHandler.ODataPath); }
public void Match_DeterminesExpectedServiceRoot_ForMetadataWithEscapedSeparator(string prefixString) { // Arrange var originalRoot = "http://any/" + prefixString; var expectedRoot = originalRoot; if (!String.IsNullOrEmpty(prefixString)) { originalRoot += "%2F"; // Escaped '/' } var request = new HttpRequestMessage(HttpMethod.Get, originalRoot + "$metadata"); var httpRouteCollection = new HttpRouteCollection { { _routeName, new HttpRoute() }, }; request.SetConfiguration(new HttpConfiguration(httpRouteCollection)); var pathHandler = new TestPathHandler(); var constraint = new ODataPathRouteConstraint(pathHandler, _model, _routeName, _conventions); var values = new Dictionary<string, object> { { ODataRouteConstants.ODataPath, "$metadata" }, }; // Act var matched = constraint.Match(request, null, null, values, HttpRouteDirection.UriResolution); // Assert Assert.True(matched); Assert.NotNull(pathHandler.ServiceRoot); Assert.Equal(expectedRoot, pathHandler.ServiceRoot); Assert.NotNull(pathHandler.ODataPath); Assert.Equal("$metadata", pathHandler.ODataPath); }