public StorageRecordedTestSanitizer() { UriRegexSanitizers.Add(UriRegexSanitizer.CreateWithQueryParameter(SignatureQueryName, SanitizeValue)); #if NETFRAMEWORK // Uri uses different escaping for some special characters between .NET Framework and Core. Because the Test Proxy runs on .NET // Core, we need to normalize to the .NET Core escaping when matching and storing the recordings when running tests on NetFramework. UriRegexSanitizers.Add(new UriRegexSanitizer("\\(", "%28")); UriRegexSanitizers.Add(new UriRegexSanitizer("\\)", "%29")); UriRegexSanitizers.Add(new UriRegexSanitizer("\\!", "%21")); UriRegexSanitizers.Add(new UriRegexSanitizer("\\'", "%27")); UriRegexSanitizers.Add(new UriRegexSanitizer("\\*", "%2A")); // Encode any colons in the Uri except for the one in the scheme UriRegexSanitizers.Add(new UriRegexSanitizer("(?<group>:)[^//]", "%3A") { GroupForReplace = "group" }); #endif HeaderRegexSanitizers.Add(new HeaderRegexSanitizer("x-ms-encryption-key", SanitizeValue)); HeaderRegexSanitizers.Add(new HeaderRegexSanitizer(CopySourceAuthorization, SanitizeValue)); HeaderRegexSanitizers.Add(HeaderRegexSanitizer.CreateWithQueryParameter(CopySourceName, SignatureQueryName, SanitizeValue)); HeaderRegexSanitizers.Add(HeaderRegexSanitizer.CreateWithQueryParameter(RenameSource, SignatureQueryName, SanitizeValue)); HeaderRegexSanitizers.Add(HeaderRegexSanitizer.CreateWithQueryParameter(PreviousSnapshotUrl, SignatureQueryName, SanitizeValue)); HeaderRegexSanitizers.Add(HeaderRegexSanitizer.CreateWithQueryParameter(FileRenameSource, SignatureQueryName, SanitizeValue)); BodyRegexSanitizers.Add(new BodyRegexSanitizer(@"client_secret=(?<group>.*?)(?=&|$)", SanitizeValue) { GroupForReplace = "group" }); }
public void CanSanitizeQueryParamsInHeader() { var sanitizer = HeaderRegexSanitizer.CreateWithQueryParameter("headerKey", "queryParameter", "value"); Assert.AreEqual("headerKey", sanitizer.Key); Assert.AreEqual(@"([\x0026|&|?]queryParameter=)(?<group>[\w\d%]+)", sanitizer.Regex); }
public void HeaderRegexSanitizerAggressivenessCheck() { var session = TestHelpers.LoadRecordSession("Test.RecordEntries/post_delete_get_content.json"); var targetEntry = session.Session.Entries[0]; var targetKey = "Content-Type"; var originalHeaderValue = targetEntry.Response.Headers[targetKey].First(); // where we find a key, but there is nothing to be done by the sanitizer var headerRegexSanitizer = new HeaderRegexSanitizer(targetKey, value: "fakeaccount", regex: capturingGroupReplaceRegex, groupForReplace: "account"); session.Session.Sanitize(headerRegexSanitizer); var newResult = targetEntry.Response.Headers[targetKey].First(); Assert.Equal(originalHeaderValue, newResult); }
public void HeaderRegexSanitizerGroupedRegexReplace() { var session = TestHelpers.LoadRecordSession("Test.RecordEntries/post_delete_get_content.json"); var targetKey = "Location"; var targetEntry = session.Session.Entries[0]; var originalHeaderValue = targetEntry.Response.Headers[targetKey].First(); // where we have a key, a regex, and a groupname to replace with value Y var headerRegexSanitizer = new HeaderRegexSanitizer(targetKey, value: "fakeaccount", regex: capturingGroupReplaceRegex, groupForReplace: "account"); session.Session.Sanitize(headerRegexSanitizer); var testValue = targetEntry.Response.Headers[targetKey].First(); Assert.NotEqual(originalHeaderValue, testValue); Assert.StartsWith("https://fakeaccount.table.core.windows.net", testValue); }