public async Task select_controller_should_return_400_when_requested_api_version_is_ambiguous()
        {
            // arrange
            void ConfigureOptions(ApiVersioningOptions options) =>
            options.ApiVersionReader = ApiVersionReader.Combine(new QueryStringApiVersionReader(), new HeaderApiVersionReader("api-version"));

            using (var server = new WebServer(ConfigureOptions))
            {
                server.Client.DefaultRequestHeaders.TryAddWithoutValidation("api-version", "1.0");

                // act
                var response = await server.Client.GetAsync($"api/attributed?api-version=2.0");

                // assert
                response.StatusCode.Should().Be(BadRequest);
            }
        }
Exemplo n.º 2
0
        public void read_should_retrieve_version_from_header(string headerName, string requestedVersion)
        {
            // arrange
            var headers = new HeaderDictionary()
            {
                [headerName] = requestedVersion
            };
            var request = new Mock <HttpRequest>();
            var reader  = ApiVersionReader.Combine(new QueryStringApiVersionReader(), new HeaderApiVersionReader("api-version", "x-ms-version"));

            request.SetupGet(r => r.Query).Returns(Mock.Of <IQueryCollection>());
            request.SetupGet(r => r.Headers).Returns(headers);

            // act
            var version = reader.Read(request.Object);

            // assert
            version.Should().Be(requestedVersion);
        }
Exemplo n.º 3
0
        public void read_should_not_throw_exception_when_duplicate_api_versions_are_requested()
        {
            // arrange
            var query   = new Mock <IQueryCollection>();
            var headers = new HeaderDictionary()
            {
                ["api-version"] = new StringValues(new[] { "1.0" })
            };
            var request = new Mock <HttpRequest>();
            var reader  = ApiVersionReader.Combine(new QueryStringApiVersionReader(), new HeaderApiVersionReader("api-version"));

            query.SetupGet(q => q["api-version"]).Returns(new StringValues("1.0"));
            request.SetupProperty(r => r.Query, query.Object);
            request.SetupGet(r => r.Headers).Returns(headers);

            // act
            var version = reader.Read(request.Object);

            // assert
            version.Should().Be("1.0");
        }
Exemplo n.º 4
0
        public void read_should_throw_exception_when_ambiguous_api_versions_are_requested()
        {
            // arrange
            var query   = new Mock <IQueryCollection>();
            var headers = new HeaderDictionary()
            {
                ["api-version"] = new StringValues(new[] { "1.0" })
            };
            var request = new Mock <HttpRequest>();
            var reader  = ApiVersionReader.Combine(new QueryStringApiVersionReader(), new HeaderApiVersionReader("api-version"));

            query.SetupGet(q => q["api-version"]).Returns(new StringValues("2.0"));
            request.SetupProperty(r => r.Query, query.Object);
            request.SetupGet(r => r.Headers).Returns(headers);

            // act
            Action read = () => reader.Read(request.Object);

            // assert
            read.Should().Throw <AmbiguousApiVersionException>().And.ApiVersions.Should().BeEquivalentTo("1.0", "2.0");
        }