public void GetControllerDirectRoutes_IfDirectRouteProviderReturnsRouteWithHandler_Throws() { // Arrange var action = CreateStubActionDescriptor("IgnoreAction"); HttpRouteValueDictionary dataTokens = new HttpRouteValueDictionary { { RouteDataTokenKeys.Actions, new HttpActionDescriptor[] { action } } }; HttpMessageHandler handler = new Mock <HttpMessageHandler>(MockBehavior.Strict).Object; HttpRoute route = new HttpRoute(null, null, null, dataTokens, handler); RouteEntry entry = new RouteEntry(name: null, route: route); var factories = new[] { CreateStubRouteFactory(entry) }; var constraintResolver = new Mock <IInlineConstraintResolver>(MockBehavior.Strict).Object; var provider = new AccessibleDirectRouteProvider(); // Act & Assert string expectedMessage = "Direct routing does not support per-route message handlers."; Assert.Throws <InvalidOperationException>( () => provider.GetControllerDirectRoutes(action.ControllerDescriptor, new[] { action }, factories, constraintResolver), expectedMessage); }
public void GetControllerDirectRoutes_IfDirectRouteProviderReturnsRouteWithoutActionDescriptors_Throws() { // Arrange IHttpRoute route = new Mock <IHttpRoute>().Object; RouteEntry entry = new RouteEntry(name: null, route: route); var factories = new[] { CreateStubRouteFactory(entry) }; var action = CreateStubActionDescriptor("IgnoreAction"); var constraintResolver = new Mock <IInlineConstraintResolver>(MockBehavior.Strict).Object; var provider = new AccessibleDirectRouteProvider(); // Act & Assert string expectedMessage = "The route does not have any associated action descriptors. Routing requires " + "that each direct route map to a non-empty set of actions."; Assert.Throws <InvalidOperationException>( () => provider.GetControllerDirectRoutes( action.ControllerDescriptor, new[] { action }, factories, constraintResolver ), expectedMessage ); }
public void GetControllerDirectRoutes_IfDirectRouteProviderReturnsNull_Throws() { // Arrange var factories = new[] { CreateStubRouteFactory(null) }; var action = CreateStubActionDescriptor("IgnoreAction"); var constraintResolver = new Mock <IInlineConstraintResolver>(MockBehavior.Strict).Object; var provider = new AccessibleDirectRouteProvider(); // Act & Assert Assert.Throws <InvalidOperationException>( () => provider.GetControllerDirectRoutes(action.ControllerDescriptor, new[] { action }, factories, constraintResolver), "IDirectRouteFactory.CreateRoute must not return null."); }
public void GetRoutePrefix_WithNullPrefix_ThrowsInvalidOperationException() { // Arrange var httpControllerDescriptor = new NullRoutePrefixControllerDescripter(); var typeMock = new Mock <Type>(); typeMock.SetupGet(t => t.FullName).Returns("Namespace.TypeFullName"); httpControllerDescriptor.ControllerType = typeMock.Object; var provider = new AccessibleDirectRouteProvider(); // Act & Assert Assert.Throws <InvalidOperationException>( () => provider.GetRoutePrefix(httpControllerDescriptor), "The property 'prefix' from route prefix attribute on controller of type 'Namespace.TypeFullName' cannot be null."); }
public void GetRoutePrefix_WithMultiRoutePrefix_ThrowsInvalidOperationException() { // Arrange var httpControllerDescriptor = new MultiRoutePrefixControllerDescripter(); var typeMock = new Mock <Type>(); typeMock.SetupGet(t => t.FullName).Returns("Namespace.TypeFullName"); httpControllerDescriptor.ControllerType = typeMock.Object; var provider = new AccessibleDirectRouteProvider(); // Act & Assert Assert.Throws <InvalidOperationException>( () => provider.GetRoutePrefix(httpControllerDescriptor), "Only one route prefix attribute is supported. Remove extra attributes from the controller of type 'Namespace.TypeFullName'."); }