/// <summary> /// Determines whether the action should be considered. /// </summary> /// <param name="actionRouteParameterValue">The action route parameter value.</param> /// <param name="actionDescriptor">The associated <see cref="HttpActionDescriptor">action 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 action should be explored; otherwise, false.</returns> protected override bool ShouldExploreAction(string actionRouteParameterValue, HttpActionDescriptor actionDescriptor, IHttpRoute route, ApiVersion apiVersion) { Arg.NotNull(actionDescriptor, nameof(actionDescriptor)); Arg.NotNull(route, nameof(route)); Arg.NotNull(apiVersion, nameof(apiVersion)); if (!(route is ODataRoute)) { return(base.ShouldExploreAction(actionRouteParameterValue, actionDescriptor, route, apiVersion)); } if (UseApiExplorerSettings) { var setting = actionDescriptor.GetCustomAttributes <ApiExplorerSettingsAttribute>().FirstOrDefault(); if (setting?.IgnoreApi == true) { return(false); } } var versions = actionDescriptor.GetApiVersions(); if (versions.Contains(apiVersion)) { return(true); } return(versions.Count == 0 && actionDescriptor.ControllerDescriptor.GetDeclaredApiVersions().Contains(apiVersion)); }
public void get_api_versions_should_return_expected_action_descriptor_results(HttpActionDescriptor actionDescriptor, IEnumerable <ApiVersion> expectedVersions) { // arrange // act var declaredVersions = actionDescriptor.GetApiVersions(); // assert declaredVersions.Should().BeEquivalentTo(expectedVersions); }