Example #1
0
        public async Task ReadAsync_EmptyMessage_ParseMessageAndTrailers()
        {
            // Arrange
            var data            = Convert.FromBase64String("AAAAAACAAAAAEA0KZ3JwYy1zdGF0dXM6IDA=");
            var trailingHeaders = new TestHttpHeaders();
            var ms             = new MemoryStream(data);
            var responseStream = new GrpcWebResponseStream(ms, trailingHeaders);

            // Act 1
            var contentHeaderData = new byte[5];
            var read1             = await ReadAsync(responseStream, contentHeaderData);

            // Assert 1
            Assert.AreEqual(5, read1);
            Assert.AreEqual(0, contentHeaderData[0]);
            Assert.AreEqual(0, contentHeaderData[1]);
            Assert.AreEqual(0, contentHeaderData[2]);
            Assert.AreEqual(0, contentHeaderData[3]);
            Assert.AreEqual(0, contentHeaderData[4]);

            // Act 2
            var read2 = await ReadAsync(responseStream, contentHeaderData);

            // Assert 2
            Assert.AreEqual(0, read2);
            Assert.AreEqual(1, trailingHeaders.Count());
            Assert.AreEqual("0", trailingHeaders.GetValues("grpc-status").Single());
        }
Example #2
0
        public async Task ReadAsync_EmptyMessageAndTrailers_ParseMessageAndTrailers()
        {
            // Arrange
            var data            = new byte[] { 0, 0, 0, 0, 0, 128, 0, 0, 0, 0 };
            var trailingHeaders = new TestHttpHeaders();
            var ms             = new MemoryStream(data);
            var responseStream = new GrpcWebResponseStream(ms, trailingHeaders);

            // Act 1
            var contentHeaderData = new byte[5];
            var read1             = await ReadAsync(responseStream, contentHeaderData);

            // Assert 1
            Assert.AreEqual(5, read1);
            Assert.AreEqual(0, contentHeaderData[0]);
            Assert.AreEqual(0, contentHeaderData[1]);
            Assert.AreEqual(0, contentHeaderData[2]);
            Assert.AreEqual(0, contentHeaderData[3]);
            Assert.AreEqual(0, contentHeaderData[4]);

            // Act 2
            var read2 = await ReadAsync(responseStream, contentHeaderData);

            // Assert 2
            Assert.AreEqual(0, read2);
            Assert.AreEqual(0, trailingHeaders.Count());
        }
Example #3
0
        public static HttpHeaders GetSampleStatsRequestHeaders()
        {
            var headers = new TestHttpHeaders();

            headers.Add("Link", string.Format("<./stats{0}>; rel=\"first\"", FirstQueryString));
            headers.Add("Link", string.Format("<./stats{0}>; rel=\"next\"", NextQueryString));
            return(headers);
        }
Example #4
0
        public static HttpHeaders GetSampleHistoryRequestHeaders()
        {
            var headers = new TestHttpHeaders();

            headers.Add("Link", string.Format("<./history{0}>; rel=\"first\"", FirstQueryString));
            headers.Add("Link", string.Format("<./history{0}>; rel=\"next\"", NextQueryString));
            headers.Add("Link", string.Format("<./history{0}>; rel=\"current\"", CurrentQueryString));
            return(headers);
        }
        public static HttpHeaders GetSampleStatsRequestHeaders()
        {
            var headers = new TestHttpHeaders
            {
                { "Link", $"<./stats{FirstQueryString}>; rel=\"first\"" },
                { "Link", $"<./stats{NextQueryString}>; rel=\"next\"" },
            };

            return(headers);
        }
        public static HttpHeaders GetSampleHistoryRequestHeaders()
        {
            var headers = new TestHttpHeaders
            {
                { "Link", $"<./history{FirstQueryString}>; rel=\"first\"" },
                { "Link", $"<./history{NextQueryString}>; rel=\"next\"" },
                { "Link", $"<./history{CurrentQueryString}>; rel=\"current\"" },
            };

            return(headers);
        }
        public void VerifyInvalidHeadersLengthIsProtected()
        {
            // setup
            var headers = new TestHttpHeaders();

            headers.Add(HeaderName, new string('*', QuickPulseResponseHeaderHeaderMaxLength + 1));

            // assert
            var result = headers.GetValueSafe(HeaderName);

            Assert.AreEqual(QuickPulseResponseHeaderHeaderMaxLength, result.Length);
        }
        public void VerifyHeaderGetValue()
        {
            // setup
            var headers = new TestHttpHeaders();

            foreach (string headerName in QuickPulseConstants.XMsQpsAuthOpaqueHeaderNames)
            {
                headers.Add(headerName, headerName + SecretString);
            }

            // assert
            foreach (string headerName in QuickPulseConstants.XMsQpsAuthOpaqueHeaderNames)
            {
                var value = headers.GetValueSafe(headerName);
                Assert.AreEqual(headerName + SecretString, value);
            }
        }
        public void VerifyHeaderGetValues()
        {
            // setup
            var headers = new TestHttpHeaders();

            headers.Add(HeaderName, "one");
            headers.Add(HeaderName, "two");
            headers.Add(HeaderName, "three");

            // assert
            var result = headers.GetValueSafe(HeaderName);

            Assert.AreEqual("one", result);

            var result2 = headers.GetValueSafe(FakeHeaderName);

            Assert.AreEqual(default(string), result2);
        }
        public void HttpHeadersLogValue_ToString_HidesOnlyLogSensitiveHeadersValue()
        {
            // Arrange
            var headers = new TestHttpHeaders
            {
                { "secureHeader1", "value1" },
                { "unsecureHeader1", "value1" }
            };
            var contentHeaders = new TestHttpHeaders
            {
                { "unsecureHeader2", "value2" },
                { "secureHeader2", "value2" }
            };
            var headersToRedact = new HashSet <string>
            {
                "secureHeader1",
                "secureHeader2",
            };
            var sensitiveHeaders = new HashSet <string>(headersToRedact, StringComparer.OrdinalIgnoreCase);

            Func <string, bool> shouldRedactHeaderValue = (header) => sensitiveHeaders.Contains(header);

            var httpHeadersLogValue = new HttpHeadersLogValue(HttpHeadersLogValue.Kind.Request, headers, contentHeaders, shouldRedactHeaderValue);

            // Act
            var result = httpHeadersLogValue.ToString();

            // Assert
            Assert.NotNull(result);
            Assert.Equal(
                "Request Headers:" + Environment.NewLine +
                "secureHeader1: *" + Environment.NewLine +
                "unsecureHeader1: value1" + Environment.NewLine +
                "unsecureHeader2: value2" + Environment.NewLine +
                "secureHeader2: *" + Environment.NewLine,
                result);
        }