コード例 #1
0
        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);
        }
コード例 #2
0
        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
                );
        }
コード例 #3
0
        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.");
        }
コード例 #4
0
        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.");
        }
コード例 #5
0
        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'.");
        }