コード例 #1
0
        public void Given_request_contains_expected_header_when_matching_with_header_name_only_should_match()
        {
            HttpRequestMessage request = GetRequestWithHeaders();

            _sut = new HttpHeadersMatcher("Cache-Control");

            // Act & assert
            _sut.IsMatch(new MockHttpRequestContext(request)).Should().BeTrue();
        }
コード例 #2
0
        public void Given_request_contains_expected_header_with_multiple_values_when_matching_for_all_values_should_match_irregardless_of_order(params string[] values)
        {
            HttpRequestMessage request = GetRequestWithHeaders();

            _sut = new HttpHeadersMatcher("Cache-Control", values);

            // Act & assert
            _sut.IsMatch(new MockHttpRequestContext(request)).Should().BeTrue();
        }
コード例 #3
0
        public void Given_request_contains_expected_header_with_multiple_values_when_matching_with_wildcard_should_match(string value)
        {
            HttpRequestMessage request = GetRequestWithHeaders();

            _sut = new HttpHeadersMatcher("Cache-Control", value, true);

            // Act & assert
            _sut.IsMatch(new MockHttpRequestContext(request)).Should().BeTrue();
        }
コード例 #4
0
        public void Given_request_contains_expected_header_with_multiple_values_when_matching_for_single_value_should_match()
        {
            HttpRequestMessage request = GetRequestWithHeaders();

            _sut = new HttpHeadersMatcher("Cache-Control", "must-revalidate");

            // Act & assert
            _sut.IsMatch(new MockHttpRequestContext(request)).Should().BeTrue();
        }
コード例 #5
0
        public void When_formatting_single_header_should_return_human_readable_representation()
        {
            string expectedText = "Headers: header-name: header-value";

            _sut = new HttpHeadersMatcher("header-name", "header-value");

            // Act
            string displayText = _sut.ToString();

            // Assert
            displayText.Should().Be(expectedText);
        }
コード例 #6
0
        public async Task Given_null_context_when_matching_it_should_throw()
        {
            _sut = new HttpHeadersMatcher(new List <KeyValuePair <string, IEnumerable <string> > >());
            MockHttpRequestContext requestContext = null;

            // Act
            // ReSharper disable once ExpressionIsAlwaysNull
            Func <Task> act = () => _sut.IsMatchAsync(requestContext);

            // Assert
            await act.Should()
            .ThrowAsync <ArgumentNullException>()
            .WithParamName(nameof(requestContext));
        }
コード例 #7
0
        public void Given_request_contains_expected_headers_when_matching_should_match()
        {
            DateTimeOffset     lastModified = DateTimeOffset.UtcNow;
            HttpRequestMessage request      = GetRequestWithHeaders(lastModified);

            _sut = new HttpHeadersMatcher(new Dictionary <string, IEnumerable <string> >
            {
                { "Cache-Control", new [] { "must-revalidate", "public", "max-age=31536000" } },
                { "Accept", new [] { "application/json" } },
                { "Last-Modified", new [] { lastModified.ToString("R", CultureInfo.InvariantCulture) } },
                { "Content-Length", new [] { "123" } }
            });

            // Act & assert
            _sut.IsMatch(new MockHttpRequestContext(request)).Should().BeTrue();
        }
コード例 #8
0
        public void When_formatting_multiple_headers_should_return_human_readable_representation()
        {
            string expectedText = $"Headers: Content-Type: text/plain{Environment.NewLine}Accept: text/plain, text/html";
            var    headers      = new HttpHeadersCollection
            {
                { "Content-Type", "text/plain" },
                { "Accept", new[] { "text/plain", "text/html" } }
            };

            _sut = new HttpHeadersMatcher(headers);

            // Act
            string displayText = _sut.ToString();

            // Assert
            displayText.Should().Be(expectedText);
        }