From 29a8846bf125158d3cf36ce5488df82d5aeb3332 Mon Sep 17 00:00:00 2001 From: JoshLove-msft <54595583+JoshLove-msft@users.noreply.github.com> Date: Thu, 3 Sep 2020 17:14:08 -0700 Subject: [PATCH 1/4] Fix bug when sanitizing empty body --- sdk/core/Azure.Core.TestFramework/src/RecordedTestSanitizer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/core/Azure.Core.TestFramework/src/RecordedTestSanitizer.cs b/sdk/core/Azure.Core.TestFramework/src/RecordedTestSanitizer.cs index 10aadea39223..32aaac7ac1c2 100644 --- a/sdk/core/Azure.Core.TestFramework/src/RecordedTestSanitizer.cs +++ b/sdk/core/Azure.Core.TestFramework/src/RecordedTestSanitizer.cs @@ -66,7 +66,7 @@ public virtual byte[] SanitizeBody(string contentType, byte[] body) public virtual void SanitizeBody(RecordEntryMessage message) { - if (message.Body != null) + if (message.Body?.Length > 0) { message.TryGetContentType(out string contentType); From 95baea5c5787852c4c9ec91e448c1d4095854033 Mon Sep 17 00:00:00 2001 From: JoshLove-msft <54595583+JoshLove-msft@users.noreply.github.com> Date: Thu, 3 Sep 2020 20:48:43 -0700 Subject: [PATCH 2/4] Filter based on request method; add test --- .../src/RecordedTestSanitizer.cs | 7 ++-- .../Azure.Core/tests/RecordSessionTests.cs | 33 +++++++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/sdk/core/Azure.Core.TestFramework/src/RecordedTestSanitizer.cs b/sdk/core/Azure.Core.TestFramework/src/RecordedTestSanitizer.cs index 32aaac7ac1c2..613b0110137a 100644 --- a/sdk/core/Azure.Core.TestFramework/src/RecordedTestSanitizer.cs +++ b/sdk/core/Azure.Core.TestFramework/src/RecordedTestSanitizer.cs @@ -66,7 +66,7 @@ public virtual byte[] SanitizeBody(string contentType, byte[] body) public virtual void SanitizeBody(RecordEntryMessage message) { - if (message.Body?.Length > 0) + if (message.Body != null) { message.TryGetContentType(out string contentType); @@ -93,7 +93,10 @@ public virtual void Sanitize(RecordEntry entry) SanitizeHeaders(entry.Response.Headers); - SanitizeBody(entry.Response); + if (entry.RequestMethod != RequestMethod.Head) + { + SanitizeBody(entry.Response); + } } public virtual void Sanitize(RecordSession session) diff --git a/sdk/core/Azure.Core/tests/RecordSessionTests.cs b/sdk/core/Azure.Core/tests/RecordSessionTests.cs index 621019896ab4..47fcd92c829b 100644 --- a/sdk/core/Azure.Core/tests/RecordSessionTests.cs +++ b/sdk/core/Azure.Core/tests/RecordSessionTests.cs @@ -409,6 +409,39 @@ public void RecordSessionLookupSkipsRequestBodyWhenFilterIsOn() Assert.Throws(() => playbackTransport.Process(message)); } + [Test] + [TestCase(true)] + [TestCase(false)] + public void ContentLengthUpdatedCorrectlyOnEmptyBody(bool headRequest) + { + var sanitizer = new RecordedTestSanitizer(); + var entry = new RecordEntry() + { + RequestUri = "http://localhost/", + RequestMethod = headRequest ? RequestMethod.Head : RequestMethod.Get, + Response = + { + Headers = + { + {"Content-Length", new[] {"41"}}, + {"Some-Header", new[] {"Random value"}}, + {"Some-Other-Header", new[] {"V"}} + }, + Body = new byte[0] + } + }; + sanitizer.Sanitize(entry); + + if (headRequest) + { + Assert.AreEqual(new[] { "41" }, entry.Response.Headers["Content-Length"]); + } + else + { + Assert.AreEqual(new[] { "0" }, entry.Response.Headers["Content-Length"]); + } + } + private class TestSanitizer : RecordedTestSanitizer { public override string SanitizeVariable(string variableName, string environmentVariableValue) From ed978283f8c82b90c8a64808a0ed417325fb3a78 Mon Sep 17 00:00:00 2001 From: JoshLove-msft <54595583+JoshLove-msft@users.noreply.github.com> Date: Thu, 3 Sep 2020 20:50:34 -0700 Subject: [PATCH 3/4] param name --- sdk/core/Azure.Core/tests/RecordSessionTests.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sdk/core/Azure.Core/tests/RecordSessionTests.cs b/sdk/core/Azure.Core/tests/RecordSessionTests.cs index 47fcd92c829b..0503affc62c4 100644 --- a/sdk/core/Azure.Core/tests/RecordSessionTests.cs +++ b/sdk/core/Azure.Core/tests/RecordSessionTests.cs @@ -412,13 +412,13 @@ public void RecordSessionLookupSkipsRequestBodyWhenFilterIsOn() [Test] [TestCase(true)] [TestCase(false)] - public void ContentLengthUpdatedCorrectlyOnEmptyBody(bool headRequest) + public void ContentLengthUpdatedCorrectlyOnEmptyBody(bool isHeadRequest) { var sanitizer = new RecordedTestSanitizer(); var entry = new RecordEntry() { RequestUri = "http://localhost/", - RequestMethod = headRequest ? RequestMethod.Head : RequestMethod.Get, + RequestMethod = isHeadRequest ? RequestMethod.Head : RequestMethod.Get, Response = { Headers = @@ -432,7 +432,7 @@ public void ContentLengthUpdatedCorrectlyOnEmptyBody(bool headRequest) }; sanitizer.Sanitize(entry); - if (headRequest) + if (isHeadRequest) { Assert.AreEqual(new[] { "41" }, entry.Response.Headers["Content-Length"]); } From cc2471558d33983f88ab481762cb6babd96292a5 Mon Sep 17 00:00:00 2001 From: JoshLove-msft <54595583+JoshLove-msft@users.noreply.github.com> Date: Fri, 4 Sep 2020 10:13:41 -0700 Subject: [PATCH 4/4] Split tests --- sdk/core/Azure.Core/tests/RecordSessionTests.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/sdk/core/Azure.Core/tests/RecordSessionTests.cs b/sdk/core/Azure.Core/tests/RecordSessionTests.cs index 0503affc62c4..aba3efc5a458 100644 --- a/sdk/core/Azure.Core/tests/RecordSessionTests.cs +++ b/sdk/core/Azure.Core/tests/RecordSessionTests.cs @@ -410,9 +410,18 @@ public void RecordSessionLookupSkipsRequestBodyWhenFilterIsOn() } [Test] - [TestCase(true)] - [TestCase(false)] - public void ContentLengthUpdatedCorrectlyOnEmptyBody(bool isHeadRequest) + public void ContentLengthNotChangedOnHeadRequestWithEmptyBody() + { + ContentLengthUpdatedCorrectlyOnEmptyBody(isHeadRequest: true); + } + + [Test] + public void ContentLengthResetToZeroOnGetRequestWithEmptyBody() + { + ContentLengthUpdatedCorrectlyOnEmptyBody(isHeadRequest: false); + } + + private void ContentLengthUpdatedCorrectlyOnEmptyBody(bool isHeadRequest) { var sanitizer = new RecordedTestSanitizer(); var entry = new RecordEntry()