/// <summary>
        /// Determines whether the controller should be considered.
        /// </summary>
        /// <param name="controllerRouteParameterValue">The controller route parameter value.</param>
        /// <param name="controllerDescriptor">The associated <see cref="HttpControllerDescriptor">controller descriptor</see>.</param>
        /// <param name="route">The associated <see cref="IHttpRoute">route</see>.</param>
        /// <param name="apiVersion">The <see cref="ApiVersion">API version</see> to consider the controller for.</param>
        /// <returns>True if the controller should be explored; otherwise, false.</returns>
        protected override bool ShouldExploreController(string controllerRouteParameterValue, HttpControllerDescriptor controllerDescriptor, IHttpRoute route, ApiVersion apiVersion)
        {
            Arg.NotNull(controllerDescriptor, nameof(controllerDescriptor));
            Arg.NotNull(route, nameof(route));
            Arg.NotNull(apiVersion, nameof(apiVersion));

            if (typeof(MetadataController).IsAssignableFrom(controllerDescriptor.ControllerType))
            {
                return(false);
            }

            var routeTemplate = route.RouteTemplate;

            if (!odataVariableRegex.IsMatch(routeTemplate))
            {
                return(base.ShouldExploreController(controllerRouteParameterValue, controllerDescriptor, route, apiVersion));
            }

            if (UseApiExplorerSettings)
            {
                var setting = controllerDescriptor.GetCustomAttributes <ApiExplorerSettingsAttribute>().FirstOrDefault();

                if (setting?.IgnoreApi == true)
                {
                    return(false);
                }
            }

            return(controllerDescriptor.GetDeclaredApiVersions().Contains(apiVersion));
        }
예제 #2
0
        public void get_declared_api_versions_should_return_expected_controller_descriptor_results(HttpControllerDescriptor controllerDescriptor, IEnumerable <ApiVersion> expectedVersions)
        {
            // arrange

            // act
            var declaredVersions = controllerDescriptor.GetDeclaredApiVersions();

            // assert
            declaredVersions.Should().BeEquivalentTo(expectedVersions);
        }