From 72e10c664cc6ad5017305f11756249d1306d4323 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?McCoy=20Pati=C3=B1o?= Date: Wed, 15 Sep 2021 09:25:44 -0700 Subject: [PATCH 1/3] Make add_sanitizer module-level --- .../azure_recorded_testcase.py | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/tools/azure-sdk-tools/devtools_testutils/azure_recorded_testcase.py b/tools/azure-sdk-tools/devtools_testutils/azure_recorded_testcase.py index d39cfe79960c..dc7ab847cf45 100644 --- a/tools/azure-sdk-tools/devtools_testutils/azure_recorded_testcase.py +++ b/tools/azure-sdk-tools/devtools_testutils/azure_recorded_testcase.py @@ -37,6 +37,19 @@ load_dotenv(find_dotenv()) +def add_sanitizer(sanitizer, regex=None, value=None): + # type: (ProxyRecordingSanitizer, Optional[str], Optional[str]) -> None + if sanitizer == ProxyRecordingSanitizer.URI: + requests.post( + "{}/Admin/AddSanitizer".format(PROXY_URL), + headers={"x-abstraction-identifier": ProxyRecordingSanitizer.URI.value}, + json={ + "regex": regex or "[a-z]+(?=(?:-secondary)\\.(?:table|blob|queue)\\.core\\.windows\\.net)", + "value": value or "fakevalue" + }, + ) + + def is_live(): """A module version of is_live, that could be used in pytest marker.""" if not hasattr(is_live, "_cache"): @@ -81,18 +94,6 @@ def in_recording(self): def recording_processors(self): return [] - def add_sanitizer(self, sanitizer, regex=None, value=None): - # type: (ProxyRecordingSanitizer, Optional[str], Optional[str]) -> None - if sanitizer == ProxyRecordingSanitizer.URI: - requests.post( - "{}/Admin/AddSanitizer".format(PROXY_URL), - headers={"x-abstraction-identifier": ProxyRecordingSanitizer.URI.value}, - json={ - "regex": regex or "[a-z]+(?=(?:-secondary)\\.(?:table|blob|queue)\\.core\\.windows\\.net)", - "value": value or "fakevalue" - }, - ) - def is_playback(self): return not self.is_live From 5fafbdcd3fd22a30814d9944103046847a7d65f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?McCoy=20Pati=C3=B1o?= Date: Wed, 15 Sep 2021 09:33:50 -0700 Subject: [PATCH 2/3] Allow import from devtools_testutils --- tools/azure-sdk-tools/devtools_testutils/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/azure-sdk-tools/devtools_testutils/__init__.py b/tools/azure-sdk-tools/devtools_testutils/__init__.py index 69db6f41dfb3..c58ea74788c2 100644 --- a/tools/azure-sdk-tools/devtools_testutils/__init__.py +++ b/tools/azure-sdk-tools/devtools_testutils/__init__.py @@ -1,5 +1,5 @@ from .mgmt_testcase import AzureMgmtTestCase, AzureMgmtPreparer -from .azure_recorded_testcase import AzureRecordedTestCase +from .azure_recorded_testcase import add_sanitizer, AzureRecordedTestCase from .azure_testcase import AzureTestCase, is_live, get_region_override from .resource_testcase import ( FakeResource, @@ -21,6 +21,7 @@ from .fake_credential import FakeTokenCredential __all__ = [ + "add_sanitizer", "AzureMgmtTestCase", "AzureMgmtPreparer", "AzureRecordedTestCase", From 47ddb2c9764ce3cddf8406a33a087ddc94c6993c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?McCoy=20Pati=C3=B1o?= Date: Wed, 15 Sep 2021 16:41:07 -0700 Subject: [PATCH 3/3] Make value/regex kwargs --- .../azure_recorded_testcase.py | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/tools/azure-sdk-tools/devtools_testutils/azure_recorded_testcase.py b/tools/azure-sdk-tools/devtools_testutils/azure_recorded_testcase.py index dc7ab847cf45..96452251da3d 100644 --- a/tools/azure-sdk-tools/devtools_testutils/azure_recorded_testcase.py +++ b/tools/azure-sdk-tools/devtools_testutils/azure_recorded_testcase.py @@ -31,21 +31,38 @@ pass if TYPE_CHECKING: - from typing import Optional + from typing import Any load_dotenv(find_dotenv()) -def add_sanitizer(sanitizer, regex=None, value=None): - # type: (ProxyRecordingSanitizer, Optional[str], Optional[str]) -> None +def add_sanitizer(sanitizer, **kwargs): + # type: (ProxyRecordingSanitizer, **Any) -> None + """Registers a sanitizer, matcher, or transform with the test proxy. + + :param sanitizer: The name of the sanitizer, matcher, or transform you want to add. + :type sanitizer: ProxyRecordingSanitizer or str + + :keyword str value: The substitution value. + :keyword str regex: A regex for a sanitizer. Can be defined as a simple regex, or if a ``group_for_replace`` is + provided, a substitution operation. + :keyword str group_for_replace: The capture group that needs to be operated upon. Do not provide if you're invoking + a simple replacement operation. + """ + request_args = {} + request_args["value"] = kwargs.get("value") or "fakevalue" + request_args["regex"] = kwargs.get("regex") or "[a-z]+(?=(?:-secondary)\\.(?:table|blob|queue)\\.core\\.windows\\.net)" + request_args["group_for_replace"] = kwargs.get("group_for_replace") + if sanitizer == ProxyRecordingSanitizer.URI: requests.post( "{}/Admin/AddSanitizer".format(PROXY_URL), headers={"x-abstraction-identifier": ProxyRecordingSanitizer.URI.value}, json={ - "regex": regex or "[a-z]+(?=(?:-secondary)\\.(?:table|blob|queue)\\.core\\.windows\\.net)", - "value": value or "fakevalue" + "regex": request_args["regex"], + "value": request_args["value"], + "groupForReplace": request_args["group_for_replace"] }, )