/// <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)); }
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); }