diff --git a/sdk/appconfiguration/Azure.Data.AppConfiguration/tests/ConfigurationLiveTests.cs b/sdk/appconfiguration/Azure.Data.AppConfiguration/tests/ConfigurationLiveTests.cs index 9669636cb68a..2e83917324ec 100644 --- a/sdk/appconfiguration/Azure.Data.AppConfiguration/tests/ConfigurationLiveTests.cs +++ b/sdk/appconfiguration/Azure.Data.AppConfiguration/tests/ConfigurationLiveTests.cs @@ -19,7 +19,7 @@ public class ConfigurationLiveTests : RecordedTestBase(() => matcher.FindMatch(mockRequest, entries)); + InvalidOperationException exception = Assert.Throws(() => matcher.FindMatch(requestEntry, entries)); Assert.AreEqual( "Unable to find a record for the request HEAD http://localhost/" + Environment.NewLine + "Method doesn't match, request record " + Environment.NewLine + @@ -116,20 +126,24 @@ public void RecordMatcherThrowsExceptionsWithDetails() "Header differences:" + Environment.NewLine + " values differ, request , record " + Environment.NewLine + " is absent in record, value " + Environment.NewLine + - " is absent in request, value " + Environment.NewLine, + " is absent in request, value " + Environment.NewLine + + "Body differences:" + Environment.NewLine + + "Request and response bodies do not match at index 40:" + Environment.NewLine + + " request: \"e and long.\"" + Environment.NewLine + + " record: \"e and long but it also doesn't\"" + Environment.NewLine, exception.Message); } [Test] public void RecordMatcherIgnoresIgnoredHeaders() { - var matcher = new RecordMatcher(new RecordedTestSanitizer()); + var matcher = new RecordMatcher(); - MockRequest mockRequest = new MockRequest + var mockRequest = new RecordEntry() { - Method = RequestMethod.Put + RequestUri = "http://localhost", + RequestMethod = RequestMethod.Put, }; - mockRequest.Uri.Reset(new Uri("http://localhost")); RecordEntry[] entries = new[] { @@ -153,15 +167,13 @@ public void RecordMatcherIgnoresIgnoredHeaders() [Test] public void RecordMatcherThrowsExceptionsWhenNoRecordsLeft() { - var matcher = new RecordMatcher(new RecordedTestSanitizer()); + var matcher = new RecordMatcher(); - MockRequest mockRequest = new MockRequest + var mockRequest = new RecordEntry() { - Method = RequestMethod.Head + RequestUri = "http://localhost/", + RequestMethod = RequestMethod.Head }; - mockRequest.Uri.Reset(new Uri("http://localhost")); - mockRequest.Headers.Add("Some-Header", "Random value"); - mockRequest.Headers.Add("Some-Other-Header", "V"); RecordEntry[] entries = { }; @@ -191,7 +203,7 @@ public void SavingRecordingSanitizesValues() { var tempFile = Path.GetTempFileName(); var sanitizer = new TestSanitizer(); - TestRecording recording = new TestRecording(RecordedTestMode.Record, tempFile, sanitizer, new RecordMatcher(sanitizer)); + TestRecording recording = new TestRecording(RecordedTestMode.Record, tempFile, sanitizer, new RecordMatcher()); recording.SetVariable("A", "secret"); recording.Dispose(true); @@ -218,12 +230,13 @@ public void SpecialHeadersNormalizedForMatching(string name) playbackRequest.Method = RequestMethod.Get; playbackRequest.Uri.Reset(new Uri("http://localhost")); playbackRequest.Headers.Add(name, "application/json;odata=nometadata"); - originalRequest.Headers.Add("Date", "It doesn't match"); + playbackRequest.Headers.Add("Date", "It doesn't match"); - var matcher = new RecordMatcher(new RecordedTestSanitizer()); + var matcher = new RecordMatcher(); + var requestEntry = RecordTransport.CreateEntry(originalRequest, null); var entry = RecordTransport.CreateEntry(originalRequest, new MockResponse(200)); - Assert.NotNull(matcher.FindMatch(playbackRequest, new[] { entry })); + Assert.NotNull(matcher.FindMatch(requestEntry, new[] { entry })); } private class TestSanitizer : RecordedTestSanitizer diff --git a/sdk/core/Azure.Core/tests/TestFramework/PlaybackTransport.cs b/sdk/core/Azure.Core/tests/TestFramework/PlaybackTransport.cs index c8a315f68564..6ceefaa5010e 100644 --- a/sdk/core/Azure.Core/tests/TestFramework/PlaybackTransport.cs +++ b/sdk/core/Azure.Core/tests/TestFramework/PlaybackTransport.cs @@ -5,7 +5,6 @@ using System.Collections.Generic; using System.IO; using System.Threading.Tasks; -using Azure.Core.Pipeline; namespace Azure.Core.Testing { @@ -15,13 +14,16 @@ public class PlaybackTransport : MockTransport private readonly RecordMatcher _matcher; + private readonly RecordedTestSanitizer _sanitizer; + private readonly Random _random; - public PlaybackTransport(RecordSession session, RecordMatcher matcher, Random random) + public PlaybackTransport(RecordSession session, RecordMatcher matcher, RecordedTestSanitizer sanitizer, Random random) { _session = session; _matcher = matcher; _random = random; + _sanitizer = sanitizer; } public override void Process(HttpMessage message) @@ -39,7 +41,7 @@ public override void Process(HttpMessage message) } } - message.Response = GetResponse(_session.Lookup(message.Request, _matcher)); + message.Response = GetResponse(_session.Lookup(message.Request, _matcher, _sanitizer)); } public override async ValueTask ProcessAsync(HttpMessage message) @@ -57,7 +59,7 @@ public override async ValueTask ProcessAsync(HttpMessage message) } } - message.Response = GetResponse(_session.Lookup(message.Request, _matcher)); + message.Response = GetResponse(_session.Lookup(message.Request, _matcher, _sanitizer)); } public override Request CreateRequest() diff --git a/sdk/core/Azure.Core/tests/TestFramework/RecordMatcher.cs b/sdk/core/Azure.Core/tests/TestFramework/RecordMatcher.cs index 39f9f34b1ddb..df1f001e8dfb 100644 --- a/sdk/core/Azure.Core/tests/TestFramework/RecordMatcher.cs +++ b/sdk/core/Azure.Core/tests/TestFramework/RecordMatcher.cs @@ -3,7 +3,6 @@ using System; using System.Collections.Generic; -using System.Diagnostics; using System.Linq; using System.Text; @@ -11,8 +10,6 @@ namespace Azure.Core.Testing { public class RecordMatcher { - private readonly RecordedTestSanitizer _sanitizer; - // Headers that are normalized by HttpClient private HashSet _normalizedHeaders = new HashSet(StringComparer.OrdinalIgnoreCase) { @@ -20,9 +17,11 @@ public class RecordMatcher "Content-Type" }; - public RecordMatcher(RecordedTestSanitizer sanitizer) + private bool _compareBodies; + + public RecordMatcher(bool compareBodies = true) { - _sanitizer = sanitizer; + _compareBodies = compareBodies; } public HashSet ExcludeHeaders = new HashSet(StringComparer.OrdinalIgnoreCase) @@ -59,21 +58,8 @@ public RecordMatcher(RecordedTestSanitizer sanitizer) "x-ms-correlation-request-id" }; - public virtual RecordEntry FindMatch(Request request, IList entries) + public virtual RecordEntry FindMatch(RecordEntry request, IList entries) { - SortedDictionary headers = new SortedDictionary(StringComparer.OrdinalIgnoreCase); - - foreach (HttpHeader header in request.Headers) - { - var gotHeader = request.Headers.TryGetValues(header.Name, out IEnumerable values); - Debug.Assert(gotHeader); - headers[header.Name] = values.ToArray(); - } - - _sanitizer.SanitizeHeaders(headers); - - string uri = _sanitizer.SanitizeUri(request.Uri.ToString()); - int bestScore = int.MaxValue; RecordEntry bestScoreEntry = null; @@ -81,6 +67,7 @@ public virtual RecordEntry FindMatch(Request request, IList entries { int score = 0; + var uri = request.RequestUri; var recordRequestUri = entry.RequestUri; if (entry.IsTrack1Recording) { @@ -98,7 +85,7 @@ public virtual RecordEntry FindMatch(Request request, IList entries score++; } - if (entry.RequestMethod != request.Method) + if (entry.RequestMethod != request.RequestMethod) { score++; } @@ -106,9 +93,11 @@ public virtual RecordEntry FindMatch(Request request, IList entries //we only check Uri + RequestMethod for track1 record if (entry.IsTrack1Recording) { - score += CompareHeaderDictionaries(headers, entry.Request.Headers, ExcludeHeaders); + score += CompareHeaderDictionaries(request.Request.Headers, entry.Request.Headers, ExcludeHeaders); } + score += CompareBodies(request.Request.Body, entry.Request.Body); + if (score == 0) { return entry; @@ -121,7 +110,57 @@ public virtual RecordEntry FindMatch(Request request, IList entries } } - throw new InvalidOperationException(GenerateException(request.Method, uri, headers, bestScoreEntry)); + throw new InvalidOperationException(GenerateException(request, bestScoreEntry)); + } + + private int CompareBodies(byte[] requestBody, byte[] responseBody, StringBuilder descriptionBuilder = null) + { + if (!_compareBodies) + { + return 0; + } + + if (requestBody == null && responseBody == null) + { + return 0; + } + + if (requestBody == null) + { + descriptionBuilder?.AppendLine("Request has body but response doesn't"); + return 1; + } + + if (responseBody == null) + { + descriptionBuilder?.AppendLine("Response has body but request doesn't"); + return 1; + } + + if (!requestBody.SequenceEqual(responseBody)) + { + if (descriptionBuilder != null) + { + var minLength = Math.Min(requestBody.Length, responseBody.Length); + int i; + for (i = 0; i < minLength - 1; i++) + { + if (requestBody[i] != responseBody[i]) + { + break; + } + } + descriptionBuilder.AppendLine($"Request and response bodies do not match at index {i}:"); + var before = Math.Max(0, i - 10); + var afterRequest = Math.Min(i + 20, requestBody.Length); + var afterResponse = Math.Min(i + 20, responseBody.Length); + descriptionBuilder.AppendLine($" request: \"{Encoding.UTF8.GetString(requestBody, before, afterRequest - before)}\""); + descriptionBuilder.AppendLine($" record: \"{Encoding.UTF8.GetString(responseBody, before, afterResponse - before)}\""); + } + return 1; + } + + return 0; } public virtual bool IsEquivalentRecord(RecordEntry entry, RecordEntry otherEntry) => @@ -159,10 +198,10 @@ protected virtual bool IsBodyEquivalent(RecordEntry record, RecordEntry otherRec .SequenceEqual((otherRecord.Response.Body ?? Array.Empty())); } - private string GenerateException(RequestMethod requestMethod, string uri, SortedDictionary headers, RecordEntry bestScoreEntry) + private string GenerateException(RecordEntry request, RecordEntry bestScoreEntry) { StringBuilder builder = new StringBuilder(); - builder.AppendLine($"Unable to find a record for the request {requestMethod} {uri}"); + builder.AppendLine($"Unable to find a record for the request {request.RequestMethod} {request.RequestUri}"); if (bestScoreEntry == null) { @@ -170,21 +209,25 @@ private string GenerateException(RequestMethod requestMethod, string uri, Sorted return builder.ToString(); } - if (requestMethod != bestScoreEntry.RequestMethod) + if (request.RequestMethod != bestScoreEntry.RequestMethod) { - builder.AppendLine($"Method doesn't match, request <{requestMethod}> record <{bestScoreEntry.RequestMethod}>"); + builder.AppendLine($"Method doesn't match, request <{request.RequestMethod}> record <{bestScoreEntry.RequestMethod}>"); } - if (!AreUrisSame(uri, bestScoreEntry.RequestUri)) + if (!AreUrisSame(request.RequestUri, bestScoreEntry.RequestUri)) { builder.AppendLine("Uri doesn't match:"); - builder.AppendLine($" request <{uri}>"); + builder.AppendLine($" request <{request.RequestUri}>"); builder.AppendLine($" record <{bestScoreEntry.RequestUri}>"); } builder.AppendLine("Header differences:"); - CompareHeaderDictionaries(headers, bestScoreEntry.Request.Headers, ExcludeHeaders, builder); + CompareHeaderDictionaries(request.Request.Headers, bestScoreEntry.Request.Headers, ExcludeHeaders, builder); + + builder.AppendLine("Body differences:"); + + CompareBodies(request.Request.Body, bestScoreEntry.Request.Body, builder); return builder.ToString(); } diff --git a/sdk/core/Azure.Core/tests/TestFramework/RecordSession.cs b/sdk/core/Azure.Core/tests/TestFramework/RecordSession.cs index 8b7db28cf914..8a7b3e45cfd8 100644 --- a/sdk/core/Azure.Core/tests/TestFramework/RecordSession.cs +++ b/sdk/core/Azure.Core/tests/TestFramework/RecordSession.cs @@ -79,11 +79,14 @@ public void Record(RecordEntry entry) } } - public RecordEntry Lookup(Request request, RecordMatcher matcher) + public RecordEntry Lookup(Request request, RecordMatcher matcher, RecordedTestSanitizer sanitizer) { + var requestEntry = RecordTransport.CreateEntry(request, null); + sanitizer.Sanitize(requestEntry); + lock (Entries) { - RecordEntry entry = matcher.FindMatch(request, Entries); + RecordEntry entry = matcher.FindMatch(requestEntry, Entries); Entries.Remove(entry); return entry; } diff --git a/sdk/core/Azure.Core/tests/TestFramework/RecordTransport.cs b/sdk/core/Azure.Core/tests/TestFramework/RecordTransport.cs index 356521d084dd..836c4f5dfee0 100644 --- a/sdk/core/Azure.Core/tests/TestFramework/RecordTransport.cs +++ b/sdk/core/Azure.Core/tests/TestFramework/RecordTransport.cs @@ -75,11 +75,6 @@ internal static RecordEntry CreateEntry(Request request, Response response) { Body = ReadToEnd(request.Content), }, - Response = - { - Body = ReadToEnd(response), - }, - StatusCode = response.Status }; foreach (HttpHeader requestHeader in request.Headers) @@ -95,11 +90,16 @@ internal static RecordEntry CreateEntry(Request request, Response response) entry.Request.Headers.Add("Content-Length", new[] { computedLength.ToString(CultureInfo.InvariantCulture) }); } - foreach (HttpHeader responseHeader in response.Headers) + if (response != null) { - var gotHeader = response.Headers.TryGetValues(responseHeader.Name, out IEnumerable headerValues); - Debug.Assert(gotHeader); - entry.Response.Headers.Add(responseHeader.Name, headerValues.ToArray()); + entry.Response.Body = ReadToEnd(response); + entry.StatusCode = response.Status; + foreach (HttpHeader responseHeader in response.Headers) + { + var gotHeader = response.Headers.TryGetValues(responseHeader.Name, out IEnumerable headerValues); + Debug.Assert(gotHeader); + entry.Response.Headers.Add(responseHeader.Name, headerValues.ToArray()); + } } return entry; diff --git a/sdk/core/Azure.Core/tests/TestFramework/RecordedTestBase.cs b/sdk/core/Azure.Core/tests/TestFramework/RecordedTestBase.cs index 7ad0250604fd..fc22a725bb40 100644 --- a/sdk/core/Azure.Core/tests/TestFramework/RecordedTestBase.cs +++ b/sdk/core/Azure.Core/tests/TestFramework/RecordedTestBase.cs @@ -35,7 +35,7 @@ protected RecordedTestBase(bool isAsync) : this(isAsync, RecordedTestUtilities.G protected RecordedTestBase(bool isAsync, RecordedTestMode mode) : base(isAsync) { Sanitizer = new RecordedTestSanitizer(); - Matcher = new RecordMatcher(Sanitizer); + Matcher = new RecordMatcher(); Mode = mode; } diff --git a/sdk/core/Azure.Core/tests/TestFramework/TestRecording.cs b/sdk/core/Azure.Core/tests/TestFramework/TestRecording.cs index 218aa8808f01..a28886f77751 100644 --- a/sdk/core/Azure.Core/tests/TestFramework/TestRecording.cs +++ b/sdk/core/Azure.Core/tests/TestFramework/TestRecording.cs @@ -201,7 +201,7 @@ public HttpPipelineTransport CreateTransport(HttpPipelineTransport currentTransp { RecordedTestMode.Live => currentTransport, RecordedTestMode.Record => new RecordTransport(_session, currentTransport, entry => !_disableRecording.Value, Random), - RecordedTestMode.Playback => new PlaybackTransport(_session, _matcher, Random), + RecordedTestMode.Playback => new PlaybackTransport(_session, _matcher, _sanitizer, Random), _ => throw new ArgumentOutOfRangeException(nameof(Mode), Mode, null), }; } diff --git a/sdk/identity/Azure.Identity/tests/IdentityRecordedTestSanitizer.cs b/sdk/identity/Azure.Identity/tests/IdentityRecordedTestSanitizer.cs index 9b0d7131aa8f..e4fb5af6b63d 100644 --- a/sdk/identity/Azure.Identity/tests/IdentityRecordedTestSanitizer.cs +++ b/sdk/identity/Azure.Identity/tests/IdentityRecordedTestSanitizer.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Text; using System.Text.Json; using Azure.Core; @@ -33,6 +34,10 @@ private void SanitizeTokenRequest(RecordEntry entry) private void SanitizeTokenResponse(RecordEntry entry) { + if (entry.Response.Body == null) + { + return; + } var originalJson = JsonDocument.Parse(entry.Response.Body).RootElement; var writer = new ArrayBufferWriter(entry.Response.Body.Length); diff --git a/sdk/keyvault/Azure.Security.KeyVault.Certificates/tests/CertificateClientLiveTests.cs b/sdk/keyvault/Azure.Security.KeyVault.Certificates/tests/CertificateClientLiveTests.cs index 3725943c1a55..67ed62beb4df 100644 --- a/sdk/keyvault/Azure.Security.KeyVault.Certificates/tests/CertificateClientLiveTests.cs +++ b/sdk/keyvault/Azure.Security.KeyVault.Certificates/tests/CertificateClientLiveTests.cs @@ -29,6 +29,8 @@ public partial class CertificateClientLiveTests : CertificatesTestBase { public CertificateClientLiveTests(bool isAsync, CertificateClientOptions.ServiceVersion serviceVersion) : base(isAsync, serviceVersion) { + // TODO: https://github.com/Azure/azure-sdk-for-net/issues/11634 + Matcher = new RecordMatcher(compareBodies: false); } [SetUp] diff --git a/sdk/keyvault/Azure.Security.KeyVault.Keys/tests/CryptographyClientLiveTests.cs b/sdk/keyvault/Azure.Security.KeyVault.Keys/tests/CryptographyClientLiveTests.cs index ed97638dadf0..2d27e21b5d52 100644 --- a/sdk/keyvault/Azure.Security.KeyVault.Keys/tests/CryptographyClientLiveTests.cs +++ b/sdk/keyvault/Azure.Security.KeyVault.Keys/tests/CryptographyClientLiveTests.cs @@ -19,6 +19,8 @@ public CryptographyClientLiveTests(bool isAsync, KeyClientOptions.ServiceVersion : base(isAsync, serviceVersion) { _serviceVersion = serviceVersion; + // TODO: https://github.com/Azure/azure-sdk-for-net/issues/11634 + Matcher = new RecordMatcher(compareBodies: false); } [SetUp] diff --git a/sdk/keyvault/Azure.Security.KeyVault.Keys/tests/KeyClientLiveTests.cs b/sdk/keyvault/Azure.Security.KeyVault.Keys/tests/KeyClientLiveTests.cs index 6bdd17a53eea..ccee20c744be 100644 --- a/sdk/keyvault/Azure.Security.KeyVault.Keys/tests/KeyClientLiveTests.cs +++ b/sdk/keyvault/Azure.Security.KeyVault.Keys/tests/KeyClientLiveTests.cs @@ -17,6 +17,8 @@ public class KeyClientLiveTests : KeysTestBase public KeyClientLiveTests(bool isAsync, KeyClientOptions.ServiceVersion serviceVersion) : base(isAsync, serviceVersion) { + // TODO: https://github.com/Azure/azure-sdk-for-net/issues/11634 + Matcher = new RecordMatcher(compareBodies: false); } [SetUp] diff --git a/sdk/keyvault/Azure.Security.KeyVault.Keys/tests/KeyResolverLiveTests.cs b/sdk/keyvault/Azure.Security.KeyVault.Keys/tests/KeyResolverLiveTests.cs index 74ea36e0b465..11c7ac05ee61 100644 --- a/sdk/keyvault/Azure.Security.KeyVault.Keys/tests/KeyResolverLiveTests.cs +++ b/sdk/keyvault/Azure.Security.KeyVault.Keys/tests/KeyResolverLiveTests.cs @@ -20,6 +20,8 @@ public class KeyResolverLiveTests : KeysTestBase public KeyResolverLiveTests(bool isAsync, KeyClientOptions.ServiceVersion serviceVersion) : base(isAsync, serviceVersion) { _serviceVersion = serviceVersion; + // TODO: https://github.com/Azure/azure-sdk-for-net/issues/11634 + Matcher = new RecordMatcher(compareBodies: false); } public KeyResolver Resolver { get { return GetResolver(); } } diff --git a/sdk/search/Azure.Search.Documents/tests/Utilities/SearchTestBase.cs b/sdk/search/Azure.Search.Documents/tests/Utilities/SearchTestBase.cs index 4ffcff929031..da89f7d80d1d 100644 --- a/sdk/search/Azure.Search.Documents/tests/Utilities/SearchTestBase.cs +++ b/sdk/search/Azure.Search.Documents/tests/Utilities/SearchTestBase.cs @@ -59,7 +59,7 @@ public SearchTestBase(bool async, SearchClientOptions.ServiceVersion serviceVers { ServiceVersion = serviceVersion; Sanitizer = new SearchRecordedTestSanitizer(); - Matcher = new RecordMatcher(Sanitizer); + Matcher = new RecordMatcher(compareBodies: false); } /// diff --git a/sdk/storage/Azure.Storage.Blobs.Batch/tests/BlobBatchClientTests.cs b/sdk/storage/Azure.Storage.Blobs.Batch/tests/BlobBatchClientTests.cs index 2fcde05819af..9d5785d3cfb0 100644 --- a/sdk/storage/Azure.Storage.Blobs.Batch/tests/BlobBatchClientTests.cs +++ b/sdk/storage/Azure.Storage.Blobs.Batch/tests/BlobBatchClientTests.cs @@ -20,6 +20,8 @@ public class BlobBatchClientTests : BlobTestBase public BlobBatchClientTests(bool async, BlobClientOptions.ServiceVersion serviceVersion) : base(async, serviceVersion, null /* RecordedTestMode.Record /* to re-record */) { + // Batch delimiters are random so disable body comparison + Matcher = new RecordMatcher(compareBodies: false); } [SetUp] diff --git a/sdk/storage/Azure.Storage.Common/tests/Shared/StorageRecordMatcher.cs b/sdk/storage/Azure.Storage.Common/tests/Shared/StorageRecordMatcher.cs index c3ade9ab1692..44c760ffe912 100644 --- a/sdk/storage/Azure.Storage.Common/tests/Shared/StorageRecordMatcher.cs +++ b/sdk/storage/Azure.Storage.Common/tests/Shared/StorageRecordMatcher.cs @@ -83,9 +83,8 @@ public class StorageRecordMatcher : RecordMatcher /// Creates a new StorageRecordMatcher to determine whether recordings /// have been meaningfully updated. /// - /// The test record sanitizer. - public StorageRecordMatcher(RecordedTestSanitizer sanitizer) - : base(sanitizer) + // TODO: https://github.com/Azure/azure-sdk-for-net/issues/11632 + public StorageRecordMatcher():base(compareBodies: false) { // Storage specific request headers to ignore VolatileHeaders.Add("x-ms-source-if-match"); diff --git a/sdk/storage/Azure.Storage.Common/tests/Shared/StorageTestBase.cs b/sdk/storage/Azure.Storage.Common/tests/Shared/StorageTestBase.cs index 3e367a857711..ae9a44a56e14 100644 --- a/sdk/storage/Azure.Storage.Common/tests/Shared/StorageTestBase.cs +++ b/sdk/storage/Azure.Storage.Common/tests/Shared/StorageTestBase.cs @@ -41,7 +41,7 @@ public StorageTestBase(bool async, RecordedTestMode? mode = null) : base(async, mode ?? RecordedTestUtilities.GetModeFromEnvironment()) { Sanitizer = new StorageRecordedTestSanitizer(); - Matcher = new StorageRecordMatcher(Sanitizer); + Matcher = new StorageRecordMatcher(); } /// diff --git a/sdk/tables/Azure.Data.Tables/tests/TableClientLiveTests.cs b/sdk/tables/Azure.Data.Tables/tests/TableClientLiveTests.cs index 9df7c3b27f89..5de93e2d7690 100644 --- a/sdk/tables/Azure.Data.Tables/tests/TableClientLiveTests.cs +++ b/sdk/tables/Azure.Data.Tables/tests/TableClientLiveTests.cs @@ -24,7 +24,6 @@ public class TableClientLiveTests : RecordedTestBase public TableClientLiveTests(bool isAsync) : base(isAsync /* To record tests, add this argument, RecordedTestMode.Record */) { Sanitizer = new TablesRecordedTestSanitizer(); - Matcher = new TablesRecordMatcher(Sanitizer); } /// diff --git a/sdk/tables/Azure.Data.Tables/tests/TableServiceClientLiveTests.cs b/sdk/tables/Azure.Data.Tables/tests/TableServiceClientLiveTests.cs index d7f718e59e5e..0054761ae261 100644 --- a/sdk/tables/Azure.Data.Tables/tests/TableServiceClientLiveTests.cs +++ b/sdk/tables/Azure.Data.Tables/tests/TableServiceClientLiveTests.cs @@ -24,7 +24,6 @@ public class TableServiceClientLiveTests : RecordedTestBase diff --git a/sdk/tables/Azure.Data.Tables/tests/TablesRecordMatcher.cs b/sdk/tables/Azure.Data.Tables/tests/TablesRecordMatcher.cs deleted file mode 100644 index 1dd2cae8d3df..000000000000 --- a/sdk/tables/Azure.Data.Tables/tests/TablesRecordMatcher.cs +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Azure.Core.Testing; - -namespace Azure.Data.Tables.Tests -{ - public class TablesRecordMatcher : RecordMatcher - { - public TablesRecordMatcher(RecordedTestSanitizer sanitizer) : base(sanitizer) - { - ExcludeHeaders.Add("Content-Type"); - } - } -} diff --git a/sdk/textanalytics/Azure.AI.TextAnalytics/tests/TextAnalyticsClientLiveTests.cs b/sdk/textanalytics/Azure.AI.TextAnalytics/tests/TextAnalyticsClientLiveTests.cs index 7091ea0e52b3..de6b0d0454e7 100644 --- a/sdk/textanalytics/Azure.AI.TextAnalytics/tests/TextAnalyticsClientLiveTests.cs +++ b/sdk/textanalytics/Azure.AI.TextAnalytics/tests/TextAnalyticsClientLiveTests.cs @@ -16,7 +16,6 @@ public class TextAnalyticsClientLiveTests : RecordedTestBase