Beispiel #1
0
        static HttpActionDescriptor CreateActionDescriptor(string version)
        {
            var configuration        = new HttpConfiguration();
            var controllerType       = typeof(IHttpController);
            var controllerDescriptor = new Mock <HttpControllerDescriptor>(configuration, "Test", controllerType)
            {
                CallBase = true
            };
            var actionDescriptor = new Mock <HttpActionDescriptor>()
            {
                CallBase = true
            };
            var attribute = new ApiVersionAttribute(version);

            controllerDescriptor.Setup(cd => cd.GetCustomAttributes <IApiVersionNeutral>(It.IsAny <bool>()))
            .Returns(() => new Collection <IApiVersionNeutral>());

            actionDescriptor.Setup(ad => ad.GetCustomAttributes <IApiVersionProvider>(It.IsAny <bool>()))
            .Returns(() => new Collection <IApiVersionProvider>()
            {
                attribute
            });

            var newActionDescriptor = actionDescriptor.Object;

            newActionDescriptor.ControllerDescriptor = controllerDescriptor.Object;
            newActionDescriptor.Properties[typeof(ApiVersionModel)] = new ApiVersionModel(attribute.Versions[0]);

            return(newActionDescriptor);
        }
        public void api_versions_attribute_should_sort_specified_versions()
        {
            // arrange
            var expected  = new[] { new ApiVersion(3, 0) };
            var attribute = new ApiVersionAttribute("3.0");

            // act
            var versions = attribute.Versions;

            // assert
            versions.Should().BeEquivalentTo(expected);
        }
Beispiel #3
0
        public void Apply(OpenApiOperation operation, OperationFilterContext context)
        {
            OpenApiParameter apiVersionParameter = operation.Parameters.SingleOrDefault(p => p.Name == ApiVersionQueryParameter);

            if (apiVersionParameter == null)
            {
                return;
            }

            ApiVersionAttribute attribute = context?.MethodInfo?.DeclaringType?
                                            .GetCustomAttributes(typeof(ApiVersionAttribute), false)
                                            .Cast <ApiVersionAttribute>()
                                            .SingleOrDefault();

            string version = attribute?.Versions?.SingleOrDefault()?.ToString();

            if (version != null)
            {
                apiVersionParameter.Example        = new OpenApiString(version);
                apiVersionParameter.Schema.Example = new OpenApiString(version);
            }
        }