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()); }
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()); }
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); }
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); }