From 8b83dbde40756ff25fab623e4893b845eab4108a Mon Sep 17 00:00:00 2001 From: scbedd <45376673+scbedd@users.noreply.github.com> Date: Wed, 3 Aug 2022 10:36:23 -0700 Subject: [PATCH 1/3] adding a proxy setup to base conftest. just need to disable it when proxy isn't enabled. --- sdk/conftest.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/sdk/conftest.py b/sdk/conftest.py index f98006995cb3..75e2dd094f19 100644 --- a/sdk/conftest.py +++ b/sdk/conftest.py @@ -26,7 +26,7 @@ import os import pytest -from devtools_testutils import recorded_test, test_proxy, variable_recorder +from devtools_testutils import recorded_test, test_proxy, variable_recorder, add_general_regex_sanitizer def pytest_configure(config): @@ -74,3 +74,11 @@ def pytest_runtest_makereport(item, call) -> None: error = call.excinfo.value # set a test_error attribute on the item (available to other fixtures from request.node) setattr(item, "test_error", error) + + +@pytest.fixture(scope="session", autouse=True) +def add_sanitizers(test_proxy): + client_id = os.environ.get("AZURE_CLIENT_ID", "00000000-0000-0000-0000-000000000000") + client_secret = os.environ.get("AZURE_CLIENT_SECRET", "00000000-0000-0000-0000-000000000000") + add_general_regex_sanitizer(regex=client_id, value="00000000-0000-0000-0000-000000000000") + add_general_regex_sanitizer(regex=client_secret, value="00000000-0000-0000-0000-000000000000") \ No newline at end of file From 95c5b9eab2e3ac673eab51d23073de6d8713bd23 Mon Sep 17 00:00:00 2001 From: scbedd <45376673+scbedd@users.noreply.github.com> Date: Wed, 3 Aug 2022 11:13:58 -0700 Subject: [PATCH 2/3] removing default settings from conftest. adding to reset. sending reset during startup. --- sdk/conftest.py | 8 -------- .../devtools_testutils/proxy_startup.py | 9 +++------ tools/azure-sdk-tools/devtools_testutils/sanitizers.py | 10 ++++++++++ 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/sdk/conftest.py b/sdk/conftest.py index 75e2dd094f19..11647c230327 100644 --- a/sdk/conftest.py +++ b/sdk/conftest.py @@ -74,11 +74,3 @@ def pytest_runtest_makereport(item, call) -> None: error = call.excinfo.value # set a test_error attribute on the item (available to other fixtures from request.node) setattr(item, "test_error", error) - - -@pytest.fixture(scope="session", autouse=True) -def add_sanitizers(test_proxy): - client_id = os.environ.get("AZURE_CLIENT_ID", "00000000-0000-0000-0000-000000000000") - client_secret = os.environ.get("AZURE_CLIENT_SECRET", "00000000-0000-0000-0000-000000000000") - add_general_regex_sanitizer(regex=client_id, value="00000000-0000-0000-0000-000000000000") - add_general_regex_sanitizer(regex=client_secret, value="00000000-0000-0000-0000-000000000000") \ No newline at end of file diff --git a/tools/azure-sdk-tools/devtools_testutils/proxy_startup.py b/tools/azure-sdk-tools/devtools_testutils/proxy_startup.py index a98c3a5881c9..1b9210affbe5 100644 --- a/tools/azure-sdk-tools/devtools_testutils/proxy_startup.py +++ b/tools/azure-sdk-tools/devtools_testutils/proxy_startup.py @@ -18,7 +18,7 @@ from .config import PROXY_URL from .helpers import is_live_and_not_recording -from .sanitizers import add_remove_header_sanitizer, set_custom_default_matcher +from .sanitizers import add_remove_header_sanitizer, set_custom_default_matcher, add_general_regex_sanitizer, _send_reset_request if TYPE_CHECKING: from typing import Optional @@ -173,11 +173,8 @@ def start_test_proxy() -> None: # Wait for the proxy server to become available check_proxy_availability() - # remove headers from recordings if we don't need them, and ignore them if present - # Authorization, for example, can contain sensitive info and can cause matching failures during challenge auth - headers_to_ignore = "Authorization, x-ms-client-request-id, x-ms-request-id" - add_remove_header_sanitizer(headers=headers_to_ignore) - set_custom_default_matcher(excluded_headers=headers_to_ignore) + # Call reset to ensure default matcher and sanitizers are set + _send_reset_request({}) def stop_test_proxy() -> None: diff --git a/tools/azure-sdk-tools/devtools_testutils/sanitizers.py b/tools/azure-sdk-tools/devtools_testutils/sanitizers.py index dc0539d6c9d5..7564d8b2edc3 100644 --- a/tools/azure-sdk-tools/devtools_testutils/sanitizers.py +++ b/tools/azure-sdk-tools/devtools_testutils/sanitizers.py @@ -6,6 +6,7 @@ from typing import TYPE_CHECKING from urllib.error import HTTPError import requests +import os from .config import PROXY_URL from .helpers import get_recording_id, is_live, is_live_and_not_recording @@ -597,6 +598,15 @@ def _send_reset_request(headers: dict) -> None: ) response.raise_for_status() + headers_to_ignore = "Authorization, x-ms-client-request-id, x-ms-request-id" + add_remove_header_sanitizer(headers=headers_to_ignore) + set_custom_default_matcher(excluded_headers=headers_to_ignore) + + client_id = os.environ.get("AZURE_CLIENT_ID", "00000000-0000-0000-0000-000000000000") + client_secret = os.environ.get("AZURE_CLIENT_SECRET", "00000000-0000-0000-0000-000000000000") + add_general_regex_sanitizer(regex=client_id, value="00000000-0000-0000-0000-000000000000") + add_general_regex_sanitizer(regex=client_secret, value="00000000-0000-0000-0000-000000000000") + def _send_sanitizer_request(sanitizer: str, parameters: dict) -> None: """Sends a POST request to the test proxy endpoint to register the specified sanitizer. From f4e57aafa72982568142d8ed9660070fbcd35430 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?McCoy=20Pati=C3=B1o?= <39780829+mccoyp@users.noreply.github.com> Date: Fri, 30 Dec 2022 10:35:58 -0800 Subject: [PATCH 3/3] Add other defaults, use string sanitizer --- tools/azure-sdk-tools/devtools_testutils/sanitizers.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tools/azure-sdk-tools/devtools_testutils/sanitizers.py b/tools/azure-sdk-tools/devtools_testutils/sanitizers.py index 63236f6cb034..68ef203058d8 100644 --- a/tools/azure-sdk-tools/devtools_testutils/sanitizers.py +++ b/tools/azure-sdk-tools/devtools_testutils/sanitizers.py @@ -597,8 +597,12 @@ def _send_reset_request(headers: dict) -> None: client_id = os.environ.get("AZURE_CLIENT_ID", "00000000-0000-0000-0000-000000000000") client_secret = os.environ.get("AZURE_CLIENT_SECRET", "00000000-0000-0000-0000-000000000000") - add_general_regex_sanitizer(regex=client_id, value="00000000-0000-0000-0000-000000000000") - add_general_regex_sanitizer(regex=client_secret, value="00000000-0000-0000-0000-000000000000") + tenant_id = os.environ.get("AZURE_TENANT_ID", "00000000-0000-0000-0000-000000000000") + sub_id = os.environ.get("AZURE_SUBSCRIPTION_ID", "00000000-0000-0000-0000-000000000000") + add_general_string_sanitizer(target=client_id, value="00000000-0000-0000-0000-000000000000") + add_general_string_sanitizer(target=client_secret, value="00000000-0000-0000-0000-000000000000") + add_general_string_sanitizer(target=tenant_id, value="00000000-0000-0000-0000-000000000000") + add_general_string_sanitizer(target=sub_id, value="00000000-0000-0000-0000-000000000000") def _send_sanitizer_request(sanitizer: str, parameters: dict) -> None: