From 413435ea49e7a1b17c7353e8c262f1aa6d719c24 Mon Sep 17 00:00:00 2001 From: Peter Wu Date: Thu, 29 Jan 2026 15:50:38 -0500 Subject: [PATCH 1/5] [Storage] [STG 102] Put Block, Put Block from URL, and Put Block List with UDS create permission --- sdk/storage/azure-storage-blob/assets.json | 2 +- .../tests/test_block_blob.py | 106 ++++++++++++++++ .../tests/test_block_blob_async.py | 115 ++++++++++++++++++ 3 files changed, 222 insertions(+), 1 deletion(-) diff --git a/sdk/storage/azure-storage-blob/assets.json b/sdk/storage/azure-storage-blob/assets.json index f94cd70f1a2d..0f30db68d7e0 100644 --- a/sdk/storage/azure-storage-blob/assets.json +++ b/sdk/storage/azure-storage-blob/assets.json @@ -2,5 +2,5 @@ "AssetsRepo": "Azure/azure-sdk-assets", "AssetsRepoPrefixPath": "python", "TagPrefix": "python/storage/azure-storage-blob", - "Tag": "python/storage/azure-storage-blob_16c5acad24" + "Tag": "python/storage/azure-storage-blob_29dc922409" } diff --git a/sdk/storage/azure-storage-blob/tests/test_block_blob.py b/sdk/storage/azure-storage-blob/tests/test_block_blob.py index f6c3e0205cc3..a32b09c6aead 100644 --- a/sdk/storage/azure-storage-blob/tests/test_block_blob.py +++ b/sdk/storage/azure-storage-blob/tests/test_block_blob.py @@ -1984,4 +1984,110 @@ def test_upload_blob_copy_source_error_and_status_code(self, **kwargs): finally: self.bsc.delete_container(self.container_name) + @BlobPreparer() + @recorded_by_proxy + def test_upload_blob_uds(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + variables = kwargs.pop("variables", {}) + + token_credential = self.get_credential(BlobServiceClient) + service = BlobServiceClient(self.account_url(storage_account_name, "blob"), credential=token_credential) + container_name, blob_name = self.get_resource_name('oauthcontainer'), self.get_resource_name('oauthblob') + container = service.create_container(container_name) + blob = container.get_blob_client(blob_name) + + start = self.get_datetime_variable(variables, 'start', datetime.utcnow()) + expiry = self.get_datetime_variable(variables, 'expiry', datetime.utcnow() + timedelta(hours=1)) + user_delegation_key = service.get_user_delegation_key(key_start_time=start, key_expiry_time=expiry) + sas = self.generate_sas( + generate_blob_sas, + blob.account_name, + blob.container_name, + blob.blob_name, + user_delegation_key=user_delegation_key, + permission=BlobSasPermissions(create=True), + expiry=expiry, + ) + + data = b"abc123" + identity_blob = BlobClient.from_blob_url(f"{blob.url}?{sas}") + identity_blob.upload_blob(data) + + return variables + + @BlobPreparer() + @recorded_by_proxy + def test_upload_blob_from_url_uds(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + variables = kwargs.pop("variables", {}) + + token_credential = self.get_credential(BlobServiceClient) + service = BlobServiceClient(self.account_url(storage_account_name, "blob"), credential=token_credential) + container_name, blob_name = self.get_resource_name('oauthcontainer'), self.get_resource_name('oauthblob') + container = service.create_container(container_name) + blob = container.get_blob_client(blob_name) + + start = self.get_datetime_variable(variables, 'start', datetime.utcnow()) + expiry = self.get_datetime_variable(variables, 'expiry', datetime.utcnow() + timedelta(hours=1)) + user_delegation_key = service.get_user_delegation_key(key_start_time=start, key_expiry_time=expiry) + dst_sas = self.generate_sas( + generate_blob_sas, + blob.account_name, + blob.container_name, + blob.blob_name, + user_delegation_key=user_delegation_key, + permission=BlobSasPermissions(create=True), + expiry=expiry, + ) + dst_blob = BlobClient.from_blob_url(f"{blob.url}?{dst_sas}") + + src_blob_name = self.get_resource_name('oauthblob2') + src_sas = self.generate_sas( + generate_blob_sas, + blob.account_name, + blob.container_name, + src_blob_name, + user_delegation_key=user_delegation_key, + permission=BlobSasPermissions(read=True, add=True, create=True, write=True, delete=True), + expiry=expiry, + ) + data = b"abc123" + src_blob = BlobClient.from_blob_url(f"{container.url}/{src_blob_name}?{src_sas}") + src_blob.upload_blob(data) + + dst_blob.upload_blob_from_url(src_blob.url) + + return variables + + @BlobPreparer() + @recorded_by_proxy + def test_commit_block_list_uds(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + variables = kwargs.pop("variables", {}) + + token_credential = self.get_credential(BlobServiceClient) + service = BlobServiceClient(self.account_url(storage_account_name, "blob"), credential=token_credential) + container_name, blob_name = self.get_resource_name('oauthcontainer'), self.get_resource_name('oauthblob') + container = service.create_container(container_name) + blob = container.get_blob_client(blob_name) + + start = self.get_datetime_variable(variables, 'start', datetime.utcnow()) + expiry = self.get_datetime_variable(variables, 'expiry', datetime.utcnow() + timedelta(hours=1)) + user_delegation_key = service.get_user_delegation_key(key_start_time=start, key_expiry_time=expiry) + sas = self.generate_sas( + generate_blob_sas, + blob.account_name, + blob.container_name, + blob.blob_name, + user_delegation_key=user_delegation_key, + permission=BlobSasPermissions(create=True), + expiry=expiry, + ) + + identity_blob = BlobClient.from_blob_url(f"{blob.url}?{sas}") + block_list = [] + identity_blob.commit_block_list(block_list=block_list) + + return variables + #------------------------------------------------------------------------------ diff --git a/sdk/storage/azure-storage-blob/tests/test_block_blob_async.py b/sdk/storage/azure-storage-blob/tests/test_block_blob_async.py index 46f3db2e50b3..31a0750ed590 100644 --- a/sdk/storage/azure-storage-blob/tests/test_block_blob_async.py +++ b/sdk/storage/azure-storage-blob/tests/test_block_blob_async.py @@ -2102,4 +2102,119 @@ async def test_upload_blob_copy_source_error_and_status_code(self, **kwargs): finally: await self.bsc.delete_container(self.container_name) + @BlobPreparer() + @recorded_by_proxy_async + async def test_upload_blob_uds(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + variables = kwargs.pop("variables", {}) + + token_credential = self.get_credential(BlobServiceClient, is_async=True) + service = BlobServiceClient( + self.account_url(storage_account_name, "blob"), + credential=token_credential + ) + container_name, blob_name = self.get_resource_name('oauthcontainer'), self.get_resource_name('oauthblob') + container = await service.create_container(container_name) + blob = container.get_blob_client(blob_name) + + start = self.get_datetime_variable(variables, 'start', datetime.utcnow()) + expiry = self.get_datetime_variable(variables, 'expiry', datetime.utcnow() + timedelta(hours=1)) + user_delegation_key = await service.get_user_delegation_key(key_start_time=start, key_expiry_time=expiry) + sas = self.generate_sas( + generate_blob_sas, + blob.account_name, + blob.container_name, + blob.blob_name, + user_delegation_key=user_delegation_key, + permission=BlobSasPermissions(create=True), + expiry=expiry, + ) + + data = b"abc123" + identity_blob = BlobClient.from_blob_url(f"{blob.url}?{sas}") + await identity_blob.upload_blob(data) + + return variables + + @BlobPreparer() + @recorded_by_proxy_async + async def test_upload_blob_from_url_uds(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + variables = kwargs.pop("variables", {}) + + token_credential = self.get_credential(BlobServiceClient, is_async=True) + service = BlobServiceClient( + self.account_url(storage_account_name, "blob"), + credential=token_credential + ) + container_name, blob_name = self.get_resource_name('oauthcontainer'), self.get_resource_name('oauthblob') + container = await service.create_container(container_name) + blob = container.get_blob_client(blob_name) + + start = self.get_datetime_variable(variables, 'start', datetime.utcnow()) + expiry = self.get_datetime_variable(variables, 'expiry', datetime.utcnow() + timedelta(hours=1)) + user_delegation_key = await service.get_user_delegation_key(key_start_time=start, key_expiry_time=expiry) + dst_sas = self.generate_sas( + generate_blob_sas, + blob.account_name, + blob.container_name, + blob.blob_name, + user_delegation_key=user_delegation_key, + permission=BlobSasPermissions(create=True), + expiry=expiry, + ) + dst_blob = BlobClient.from_blob_url(f"{blob.url}?{dst_sas}") + + src_blob_name = self.get_resource_name('oauthblob2') + src_sas = self.generate_sas( + generate_blob_sas, + blob.account_name, + blob.container_name, + src_blob_name, + user_delegation_key=user_delegation_key, + permission=BlobSasPermissions(read=True, add=True, create=True, write=True, delete=True), + expiry=expiry, + ) + data = b"abc123" + src_blob = BlobClient.from_blob_url(f"{container.url}/{src_blob_name}?{src_sas}") + await src_blob.upload_blob(data) + + await dst_blob.upload_blob_from_url(src_blob.url) + + return variables + + @BlobPreparer() + @recorded_by_proxy_async + async def test_commit_block_list_uds(self, **kwargs): + storage_account_name = kwargs.pop("storage_account_name") + variables = kwargs.pop("variables", {}) + + token_credential = self.get_credential(BlobServiceClient, is_async=True) + service = BlobServiceClient( + self.account_url(storage_account_name, "blob"), + credential=token_credential + ) + container_name, blob_name = self.get_resource_name('oauthcontainer'), self.get_resource_name('oauthblob') + container = await service.create_container(container_name) + blob = container.get_blob_client(blob_name) + + start = self.get_datetime_variable(variables, 'start', datetime.utcnow()) + expiry = self.get_datetime_variable(variables, 'expiry', datetime.utcnow() + timedelta(hours=1)) + user_delegation_key = await service.get_user_delegation_key(key_start_time=start, key_expiry_time=expiry) + sas = self.generate_sas( + generate_blob_sas, + blob.account_name, + blob.container_name, + blob.blob_name, + user_delegation_key=user_delegation_key, + permission=BlobSasPermissions(create=True), + expiry=expiry, + ) + + identity_blob = BlobClient.from_blob_url(f"{blob.url}?{sas}") + block_list = [] + await identity_blob.commit_block_list(block_list=block_list) + + return variables + # ------------------------------------------------------------------------------ From dd264db7b77ac9cb811c9782c7655562e854bd6d Mon Sep 17 00:00:00 2001 From: Peter Wu Date: Tue, 3 Feb 2026 15:52:09 -0500 Subject: [PATCH 2/5] Modified conftest to sanitize Tenant ID --- sdk/storage/azure-storage-blob/tests/conftest.py | 1 + sdk/storage/azure-storage-file-share/tests/conftest.py | 1 + sdk/storage/azure-storage-queue/tests/conftest.py | 1 + 3 files changed, 3 insertions(+) diff --git a/sdk/storage/azure-storage-blob/tests/conftest.py b/sdk/storage/azure-storage-blob/tests/conftest.py index 5925851aebb9..b20031c2404d 100644 --- a/sdk/storage/azure-storage-blob/tests/conftest.py +++ b/sdk/storage/azure-storage-blob/tests/conftest.py @@ -22,6 +22,7 @@ def add_sanitizers(test_proxy): tenant_id = os.environ.get("STORAGE_TENANT_ID", "00000000-0000-0000-0000-000000000000") add_general_regex_sanitizer(regex=subscription_id, value="00000000-0000-0000-0000-000000000000") add_general_regex_sanitizer(regex=tenant_id, value="00000000-0000-0000-0000-000000000000") + add_general_regex_sanitizer(regex="sktid", value="00000000-0000-0000-0000-000000000000") add_header_regex_sanitizer(key="Set-Cookie", value="[set-cookie;]") add_header_regex_sanitizer(key="Cookie", value="cookie;") add_oauth_response_sanitizer() diff --git a/sdk/storage/azure-storage-file-share/tests/conftest.py b/sdk/storage/azure-storage-file-share/tests/conftest.py index 66cd7dd21ae2..4594df73f58c 100644 --- a/sdk/storage/azure-storage-file-share/tests/conftest.py +++ b/sdk/storage/azure-storage-file-share/tests/conftest.py @@ -24,6 +24,7 @@ def add_sanitizers(test_proxy): tenant_id = os.environ.get("STORAGE_TENANT_ID", "00000000-0000-0000-0000-000000000000") add_general_regex_sanitizer(regex=subscription_id, value="00000000-0000-0000-0000-000000000000") add_general_regex_sanitizer(regex=tenant_id, value="00000000-0000-0000-0000-000000000000") + add_general_regex_sanitizer(regex="sktid", value="00000000-0000-0000-0000-000000000000") add_header_regex_sanitizer(key="Set-Cookie", value="[set-cookie;]") add_header_regex_sanitizer(key="Cookie", value="cookie;") add_oauth_response_sanitizer() diff --git a/sdk/storage/azure-storage-queue/tests/conftest.py b/sdk/storage/azure-storage-queue/tests/conftest.py index ca09905c2ca6..dea97d03a441 100644 --- a/sdk/storage/azure-storage-queue/tests/conftest.py +++ b/sdk/storage/azure-storage-queue/tests/conftest.py @@ -24,6 +24,7 @@ def add_sanitizers(test_proxy): tenant_id = os.environ.get("STORAGE_TENANT_ID", "00000000-0000-0000-0000-000000000000") add_general_regex_sanitizer(regex=subscription_id, value="00000000-0000-0000-0000-000000000000") add_general_regex_sanitizer(regex=tenant_id, value="00000000-0000-0000-0000-000000000000") + add_general_regex_sanitizer(regex="sktid", value="00000000-0000-0000-0000-000000000000") add_header_regex_sanitizer(key="Set-Cookie", value="[set-cookie;]") add_header_regex_sanitizer(key="Cookie", value="cookie;") add_oauth_response_sanitizer() From a06ae6f76a9b1d609a696206de7012026acebf34 Mon Sep 17 00:00:00 2001 From: Peter Wu Date: Tue, 3 Feb 2026 16:15:07 -0500 Subject: [PATCH 3/5] Fixed tests according to PR feedback --- sdk/storage/azure-storage-blob/assets.json | 2 +- .../tests/test_block_blob.py | 40 +++-------------- .../tests/test_block_blob_async.py | 43 +++---------------- 3 files changed, 13 insertions(+), 72 deletions(-) diff --git a/sdk/storage/azure-storage-blob/assets.json b/sdk/storage/azure-storage-blob/assets.json index 0f30db68d7e0..000375f36025 100644 --- a/sdk/storage/azure-storage-blob/assets.json +++ b/sdk/storage/azure-storage-blob/assets.json @@ -2,5 +2,5 @@ "AssetsRepo": "Azure/azure-sdk-assets", "AssetsRepoPrefixPath": "python", "TagPrefix": "python/storage/azure-storage-blob", - "Tag": "python/storage/azure-storage-blob_29dc922409" + "Tag": "python/storage/azure-storage-blob_365db1596b" } diff --git a/sdk/storage/azure-storage-blob/tests/test_block_blob.py b/sdk/storage/azure-storage-blob/tests/test_block_blob.py index a32b09c6aead..be679816e824 100644 --- a/sdk/storage/azure-storage-blob/tests/test_block_blob.py +++ b/sdk/storage/azure-storage-blob/tests/test_block_blob.py @@ -1986,38 +1986,7 @@ def test_upload_blob_copy_source_error_and_status_code(self, **kwargs): @BlobPreparer() @recorded_by_proxy - def test_upload_blob_uds(self, **kwargs): - storage_account_name = kwargs.pop("storage_account_name") - variables = kwargs.pop("variables", {}) - - token_credential = self.get_credential(BlobServiceClient) - service = BlobServiceClient(self.account_url(storage_account_name, "blob"), credential=token_credential) - container_name, blob_name = self.get_resource_name('oauthcontainer'), self.get_resource_name('oauthblob') - container = service.create_container(container_name) - blob = container.get_blob_client(blob_name) - - start = self.get_datetime_variable(variables, 'start', datetime.utcnow()) - expiry = self.get_datetime_variable(variables, 'expiry', datetime.utcnow() + timedelta(hours=1)) - user_delegation_key = service.get_user_delegation_key(key_start_time=start, key_expiry_time=expiry) - sas = self.generate_sas( - generate_blob_sas, - blob.account_name, - blob.container_name, - blob.blob_name, - user_delegation_key=user_delegation_key, - permission=BlobSasPermissions(create=True), - expiry=expiry, - ) - - data = b"abc123" - identity_blob = BlobClient.from_blob_url(f"{blob.url}?{sas}") - identity_blob.upload_blob(data) - - return variables - - @BlobPreparer() - @recorded_by_proxy - def test_upload_blob_from_url_uds(self, **kwargs): + def test_stage_block_from_url_uds(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") variables = kwargs.pop("variables", {}) @@ -2055,7 +2024,7 @@ def test_upload_blob_from_url_uds(self, **kwargs): src_blob = BlobClient.from_blob_url(f"{container.url}/{src_blob_name}?{src_sas}") src_blob.upload_blob(data) - dst_blob.upload_blob_from_url(src_blob.url) + dst_blob.stage_block_from_url('1', src_blob.url) return variables @@ -2085,7 +2054,10 @@ def test_commit_block_list_uds(self, **kwargs): ) identity_blob = BlobClient.from_blob_url(f"{blob.url}?{sas}") - block_list = [] + identity_blob.stage_block('1', b'AAA') + identity_blob.stage_block('2', b'BBB') + identity_blob.stage_block('3', b'CCC') + block_list = [BlobBlock(block_id='3'), BlobBlock(block_id='2'), BlobBlock(block_id='1')] identity_blob.commit_block_list(block_list=block_list) return variables diff --git a/sdk/storage/azure-storage-blob/tests/test_block_blob_async.py b/sdk/storage/azure-storage-blob/tests/test_block_blob_async.py index 31a0750ed590..360a9f90ba6c 100644 --- a/sdk/storage/azure-storage-blob/tests/test_block_blob_async.py +++ b/sdk/storage/azure-storage-blob/tests/test_block_blob_async.py @@ -2104,41 +2104,7 @@ async def test_upload_blob_copy_source_error_and_status_code(self, **kwargs): @BlobPreparer() @recorded_by_proxy_async - async def test_upload_blob_uds(self, **kwargs): - storage_account_name = kwargs.pop("storage_account_name") - variables = kwargs.pop("variables", {}) - - token_credential = self.get_credential(BlobServiceClient, is_async=True) - service = BlobServiceClient( - self.account_url(storage_account_name, "blob"), - credential=token_credential - ) - container_name, blob_name = self.get_resource_name('oauthcontainer'), self.get_resource_name('oauthblob') - container = await service.create_container(container_name) - blob = container.get_blob_client(blob_name) - - start = self.get_datetime_variable(variables, 'start', datetime.utcnow()) - expiry = self.get_datetime_variable(variables, 'expiry', datetime.utcnow() + timedelta(hours=1)) - user_delegation_key = await service.get_user_delegation_key(key_start_time=start, key_expiry_time=expiry) - sas = self.generate_sas( - generate_blob_sas, - blob.account_name, - blob.container_name, - blob.blob_name, - user_delegation_key=user_delegation_key, - permission=BlobSasPermissions(create=True), - expiry=expiry, - ) - - data = b"abc123" - identity_blob = BlobClient.from_blob_url(f"{blob.url}?{sas}") - await identity_blob.upload_blob(data) - - return variables - - @BlobPreparer() - @recorded_by_proxy_async - async def test_upload_blob_from_url_uds(self, **kwargs): + async def test_stage_block_from_url_uds(self, **kwargs): storage_account_name = kwargs.pop("storage_account_name") variables = kwargs.pop("variables", {}) @@ -2179,7 +2145,7 @@ async def test_upload_blob_from_url_uds(self, **kwargs): src_blob = BlobClient.from_blob_url(f"{container.url}/{src_blob_name}?{src_sas}") await src_blob.upload_blob(data) - await dst_blob.upload_blob_from_url(src_blob.url) + await dst_blob.stage_block_from_url('1', src_blob.url) return variables @@ -2212,7 +2178,10 @@ async def test_commit_block_list_uds(self, **kwargs): ) identity_blob = BlobClient.from_blob_url(f"{blob.url}?{sas}") - block_list = [] + await blob.stage_block('1', b'AAA') + await blob.stage_block('2', b'BBB') + await blob.stage_block('3', b'CCC') + block_list = [BlobBlock(block_id='3'), BlobBlock(block_id='2'), BlobBlock(block_id='1')] await identity_blob.commit_block_list(block_list=block_list) return variables From 9168002cde6933d9186f5e770a24976103f314bd Mon Sep 17 00:00:00 2001 From: Peter Wu Date: Tue, 3 Feb 2026 18:37:32 -0500 Subject: [PATCH 4/5] Fixed bug in conftest --- sdk/storage/azure-storage-blob/tests/conftest.py | 5 ++++- sdk/storage/azure-storage-file-share/tests/conftest.py | 5 ++++- sdk/storage/azure-storage-queue/tests/conftest.py | 5 ++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/sdk/storage/azure-storage-blob/tests/conftest.py b/sdk/storage/azure-storage-blob/tests/conftest.py index b20031c2404d..fcd64db13d4c 100644 --- a/sdk/storage/azure-storage-blob/tests/conftest.py +++ b/sdk/storage/azure-storage-blob/tests/conftest.py @@ -22,7 +22,6 @@ def add_sanitizers(test_proxy): tenant_id = os.environ.get("STORAGE_TENANT_ID", "00000000-0000-0000-0000-000000000000") add_general_regex_sanitizer(regex=subscription_id, value="00000000-0000-0000-0000-000000000000") add_general_regex_sanitizer(regex=tenant_id, value="00000000-0000-0000-0000-000000000000") - add_general_regex_sanitizer(regex="sktid", value="00000000-0000-0000-0000-000000000000") add_header_regex_sanitizer(key="Set-Cookie", value="[set-cookie;]") add_header_regex_sanitizer(key="Cookie", value="cookie;") add_oauth_response_sanitizer() @@ -32,3 +31,7 @@ def add_sanitizers(test_proxy): add_general_regex_sanitizer(regex=r'"EncryptionLibrary": "Python .*?"', value='"EncryptionLibrary": "Python x.x.x"') add_uri_regex_sanitizer(regex=r"\.preprod\.", value=".") + add_uri_regex_sanitizer( + regex=r"([?&]sktid=)[^&#]+", + value=r"\g<1>00000000-0000-0000-0000-000000000000", + ) diff --git a/sdk/storage/azure-storage-file-share/tests/conftest.py b/sdk/storage/azure-storage-file-share/tests/conftest.py index 4594df73f58c..6df952e979c1 100644 --- a/sdk/storage/azure-storage-file-share/tests/conftest.py +++ b/sdk/storage/azure-storage-file-share/tests/conftest.py @@ -24,7 +24,6 @@ def add_sanitizers(test_proxy): tenant_id = os.environ.get("STORAGE_TENANT_ID", "00000000-0000-0000-0000-000000000000") add_general_regex_sanitizer(regex=subscription_id, value="00000000-0000-0000-0000-000000000000") add_general_regex_sanitizer(regex=tenant_id, value="00000000-0000-0000-0000-000000000000") - add_general_regex_sanitizer(regex="sktid", value="00000000-0000-0000-0000-000000000000") add_header_regex_sanitizer(key="Set-Cookie", value="[set-cookie;]") add_header_regex_sanitizer(key="Cookie", value="cookie;") add_oauth_response_sanitizer() @@ -34,3 +33,7 @@ def add_sanitizers(test_proxy): add_body_regex_sanitizer(regex=r".*?", value="0.0.0.0:0") add_uri_string_sanitizer(target=".preprod.", value=".") + add_uri_regex_sanitizer( + regex=r"([?&]sktid=)[^&#]+", + value=r"\g<1>00000000-0000-0000-0000-000000000000", + ) diff --git a/sdk/storage/azure-storage-queue/tests/conftest.py b/sdk/storage/azure-storage-queue/tests/conftest.py index dea97d03a441..341f181de4cd 100644 --- a/sdk/storage/azure-storage-queue/tests/conftest.py +++ b/sdk/storage/azure-storage-queue/tests/conftest.py @@ -24,7 +24,6 @@ def add_sanitizers(test_proxy): tenant_id = os.environ.get("STORAGE_TENANT_ID", "00000000-0000-0000-0000-000000000000") add_general_regex_sanitizer(regex=subscription_id, value="00000000-0000-0000-0000-000000000000") add_general_regex_sanitizer(regex=tenant_id, value="00000000-0000-0000-0000-000000000000") - add_general_regex_sanitizer(regex="sktid", value="00000000-0000-0000-0000-000000000000") add_header_regex_sanitizer(key="Set-Cookie", value="[set-cookie;]") add_header_regex_sanitizer(key="Cookie", value="cookie;") add_oauth_response_sanitizer() @@ -34,3 +33,7 @@ def add_sanitizers(test_proxy): add_general_regex_sanitizer(regex=r'"EncryptionLibrary": "Python .*?"', value='"EncryptionLibrary": "Python x.x.x"') add_uri_string_sanitizer(target=".preprod.", value=".") + add_uri_regex_sanitizer( + regex=r"([?&]sktid=)[^&#]+", + value=r"\g<1>00000000-0000-0000-0000-000000000000", + ) From 80fe2ad94122c973ad6dd60e25e99b7651f5d26a Mon Sep 17 00:00:00 2001 From: Peter Wu Date: Tue, 3 Feb 2026 21:28:46 -0500 Subject: [PATCH 5/5] Should fix regression --- sdk/storage/azure-storage-blob/tests/conftest.py | 4 ++-- sdk/storage/azure-storage-file-share/tests/conftest.py | 5 +++-- sdk/storage/azure-storage-queue/tests/conftest.py | 5 +++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/sdk/storage/azure-storage-blob/tests/conftest.py b/sdk/storage/azure-storage-blob/tests/conftest.py index fcd64db13d4c..593332e2e8e9 100644 --- a/sdk/storage/azure-storage-blob/tests/conftest.py +++ b/sdk/storage/azure-storage-blob/tests/conftest.py @@ -32,6 +32,6 @@ def add_sanitizers(test_proxy): add_uri_regex_sanitizer(regex=r"\.preprod\.", value=".") add_uri_regex_sanitizer( - regex=r"([?&]sktid=)[^&#]+", - value=r"\g<1>00000000-0000-0000-0000-000000000000", + regex=r"([?&])sktid=[^&#]+", + value=r"\g<1>sktid=00000000-0000-0000-0000-000000000000", ) diff --git a/sdk/storage/azure-storage-file-share/tests/conftest.py b/sdk/storage/azure-storage-file-share/tests/conftest.py index 6df952e979c1..9945ebe84a16 100644 --- a/sdk/storage/azure-storage-file-share/tests/conftest.py +++ b/sdk/storage/azure-storage-file-share/tests/conftest.py @@ -15,6 +15,7 @@ add_header_regex_sanitizer, add_oauth_response_sanitizer, add_uri_string_sanitizer, + add_uri_regex_sanitizer, test_proxy ) @@ -34,6 +35,6 @@ def add_sanitizers(test_proxy): add_uri_string_sanitizer(target=".preprod.", value=".") add_uri_regex_sanitizer( - regex=r"([?&]sktid=)[^&#]+", - value=r"\g<1>00000000-0000-0000-0000-000000000000", + regex=r"([?&])sktid=[^&#]+", + value=r"\g<1>sktid=00000000-0000-0000-0000-000000000000", ) diff --git a/sdk/storage/azure-storage-queue/tests/conftest.py b/sdk/storage/azure-storage-queue/tests/conftest.py index 341f181de4cd..92363ff93ad4 100644 --- a/sdk/storage/azure-storage-queue/tests/conftest.py +++ b/sdk/storage/azure-storage-queue/tests/conftest.py @@ -14,6 +14,7 @@ add_header_regex_sanitizer, add_oauth_response_sanitizer, add_uri_string_sanitizer, + add_uri_regex_sanitizer, test_proxy, ) @@ -34,6 +35,6 @@ def add_sanitizers(test_proxy): add_uri_string_sanitizer(target=".preprod.", value=".") add_uri_regex_sanitizer( - regex=r"([?&]sktid=)[^&#]+", - value=r"\g<1>00000000-0000-0000-0000-000000000000", + regex=r"([?&])sktid=[^&#]+", + value=r"\g<1>sktid=00000000-0000-0000-0000-000000000000", )