From b6e6a76248220e72d53df86b501058b097c9bb7b Mon Sep 17 00:00:00 2001 From: Laurent Mazuel Date: Tue, 22 Oct 2019 12:12:58 -0700 Subject: [PATCH 1/2] Fix #8091 --- .../azure-storage-blob/azure/storage/blob/_models.py | 10 +++++----- .../azure/storage/blob/_shared/response_handlers.py | 4 ++-- .../azure-storage-blob/tests/test_common_blob.py | 8 +++++--- .../azure-storage-blob/tests/test_common_blob_async.py | 2 ++ .../azure/storage/file/_shared/response_handlers.py | 4 ++-- .../azure/storage/queue/_shared/response_handlers.py | 4 ++-- 6 files changed, 18 insertions(+), 14 deletions(-) diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_models.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_models.py index 3d8189802865..ed284e2da18e 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_models.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_models.py @@ -358,7 +358,7 @@ class BlobProperties(DictMixin): The container in which the blob resides. :ivar str snapshot: Datetime value that uniquely identifies the blob snapshot. - :ivar ~azure.blob.storage.models.BlobType blob_type: + :ivar ~azure.blob.storage.BlobType blob_type: String indicating this blob's type. :ivar dict metadata: Name-value pairs associated with the blob as metadata. @@ -629,9 +629,9 @@ class LeaseProperties(DictMixin): """ def __init__(self, **kwargs): - self.status = kwargs.get('x-ms-lease-status') - self.state = kwargs.get('x-ms-lease-state') - self.duration = kwargs.get('x-ms-lease-duration') + self.status = get_enum_value(kwargs.get('x-ms-lease-status')) + self.state = get_enum_value(kwargs.get('x-ms-lease-state')) + self.duration = get_enum_value(kwargs.get('x-ms-lease-duration')) @classmethod def _from_generated(cls, generated): @@ -740,7 +740,7 @@ class CopyProperties(DictMixin): def __init__(self, **kwargs): self.id = kwargs.get('x-ms-copy-id') self.source = kwargs.get('x-ms-copy-source') - self.status = kwargs.get('x-ms-copy-status') + self.status = get_enum_value(kwargs.get('x-ms-copy-status')) self.progress = kwargs.get('x-ms-copy-progress') self.completion_time = kwargs.get('x-ms-copy-completion_time') self.status_description = kwargs.get('x-ms-copy-status-description') diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_shared/response_handlers.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_shared/response_handlers.py index ce625d589504..07061bea2696 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_shared/response_handlers.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_shared/response_handlers.py @@ -20,7 +20,7 @@ DecodeError) from .parser import _to_utc_datetime -from .models import StorageErrorCode, UserDelegationKey +from .models import StorageErrorCode, UserDelegationKey, get_enum_value if TYPE_CHECKING: @@ -62,7 +62,7 @@ def normalize_headers(headers): for key, value in headers.items(): if key.startswith('x-ms-'): key = key[5:] - normalized[key.lower().replace('-', '_')] = value + normalized[key.lower().replace('-', '_')] = get_enum_value(value) return normalized diff --git a/sdk/storage/azure-storage-blob/tests/test_common_blob.py b/sdk/storage/azure-storage-blob/tests/test_common_blob.py index 8de5e3645e13..482847b9d1c7 100644 --- a/sdk/storage/azure-storage-blob/tests/test_common_blob.py +++ b/sdk/storage/azure-storage-blob/tests/test_common_blob.py @@ -5,6 +5,7 @@ # Licensed under the MIT License. See License.txt in the project root for # license information. # -------------------------------------------------------------------------- +from enum import Enum import pytest import requests import time @@ -860,6 +861,7 @@ def test_copy_blob_with_existing_blob(self): # Assert self.assertIsNotNone(copy) self.assertEqual(copy['copy_status'], 'success') + self.assertFalse(isinstance(copy['copy_status'], Enum)) self.assertIsNotNone(copy['copy_id']) copy_content = copyblob.download_blob().readall() @@ -1108,7 +1110,7 @@ def test_lease_blob_acquire_and_renew(self): lease = blob.acquire_lease() first_id = lease.id lease.renew() - + # Assert self.assertEqual(first_id, lease.id) @@ -1213,7 +1215,7 @@ def test_sas_access_blob(self): # Arrange blob_name = self._create_block_blob() blob = self.bsc.get_blob_client(self.container_name, blob_name) - + token = generate_blob_sas( blob.account_name, blob.container_name, @@ -1903,7 +1905,7 @@ def test_set_blob_permission(self): self.assertEqual(permission.delete, True) self.assertEqual(permission.write, True) self.assertEqual(permission._str, 'wrdx') - + def test_transport_closed_only_once(self): if TestMode.need_recording_file(self.test_mode): return diff --git a/sdk/storage/azure-storage-blob/tests/test_common_blob_async.py b/sdk/storage/azure-storage-blob/tests/test_common_blob_async.py index 6215cf05cc56..fba9122819ae 100644 --- a/sdk/storage/azure-storage-blob/tests/test_common_blob_async.py +++ b/sdk/storage/azure-storage-blob/tests/test_common_blob_async.py @@ -5,6 +5,7 @@ # Licensed under the MIT License. See License.txt in the project root for # license information. # -------------------------------------------------------------------------- +from enum import Enum import pytest import asyncio import requests @@ -1142,6 +1143,7 @@ async def _test_copy_blob_with_existing_blob(self): # Assert self.assertIsNotNone(copy) self.assertEqual(copy['copy_status'], 'success') + self.assertFalse(isinstance(copy['copy_status'], Enum)) self.assertIsNotNone(copy['copy_id']) copy_content = await (await copyblob.download_blob()).readall() diff --git a/sdk/storage/azure-storage-file/azure/storage/file/_shared/response_handlers.py b/sdk/storage/azure-storage-file/azure/storage/file/_shared/response_handlers.py index ce625d589504..07061bea2696 100644 --- a/sdk/storage/azure-storage-file/azure/storage/file/_shared/response_handlers.py +++ b/sdk/storage/azure-storage-file/azure/storage/file/_shared/response_handlers.py @@ -20,7 +20,7 @@ DecodeError) from .parser import _to_utc_datetime -from .models import StorageErrorCode, UserDelegationKey +from .models import StorageErrorCode, UserDelegationKey, get_enum_value if TYPE_CHECKING: @@ -62,7 +62,7 @@ def normalize_headers(headers): for key, value in headers.items(): if key.startswith('x-ms-'): key = key[5:] - normalized[key.lower().replace('-', '_')] = value + normalized[key.lower().replace('-', '_')] = get_enum_value(value) return normalized diff --git a/sdk/storage/azure-storage-queue/azure/storage/queue/_shared/response_handlers.py b/sdk/storage/azure-storage-queue/azure/storage/queue/_shared/response_handlers.py index ce625d589504..07061bea2696 100644 --- a/sdk/storage/azure-storage-queue/azure/storage/queue/_shared/response_handlers.py +++ b/sdk/storage/azure-storage-queue/azure/storage/queue/_shared/response_handlers.py @@ -20,7 +20,7 @@ DecodeError) from .parser import _to_utc_datetime -from .models import StorageErrorCode, UserDelegationKey +from .models import StorageErrorCode, UserDelegationKey, get_enum_value if TYPE_CHECKING: @@ -62,7 +62,7 @@ def normalize_headers(headers): for key, value in headers.items(): if key.startswith('x-ms-'): key = key[5:] - normalized[key.lower().replace('-', '_')] = value + normalized[key.lower().replace('-', '_')] = get_enum_value(value) return normalized From 83cbf0892c334c8742874ed5f35be1e00360356b Mon Sep 17 00:00:00 2001 From: Laurent Mazuel Date: Tue, 22 Oct 2019 15:01:04 -0700 Subject: [PATCH 2/2] Add one in file --- sdk/storage/azure-storage-file/azure/storage/file/_models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/storage/azure-storage-file/azure/storage/file/_models.py b/sdk/storage/azure-storage-file/azure/storage/file/_models.py index bf99c6dee92e..b723dc90163e 100644 --- a/sdk/storage/azure-storage-file/azure/storage/file/_models.py +++ b/sdk/storage/azure-storage-file/azure/storage/file/_models.py @@ -609,7 +609,7 @@ class CopyProperties(DictMixin): def __init__(self, **kwargs): self.id = kwargs.get('x-ms-copy-id') self.source = kwargs.get('x-ms-copy-source') - self.status = kwargs.get('x-ms-copy-status') + self.status = get_enum_value(kwargs.get('x-ms-copy-status')) self.progress = kwargs.get('x-ms-copy-progress') self.completion_time = kwargs.get('x-ms-copy-completion_time') self.status_description = kwargs.get('x-ms-copy-status-description')