From 82e37d30c91e4280bea0e701699e6ab7f4163512 Mon Sep 17 00:00:00 2001 From: Xiang Yan Date: Tue, 9 Jun 2020 09:34:31 -0700 Subject: [PATCH 01/16] update error msg if not supported --- .../identity/_credentials/linux_vscode_adapter.py | 2 ++ .../azure/identity/_credentials/vscode_credential.py | 10 +++++++--- .../azure-identity/tests/test_vscode_credential.py | 8 ++++++++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py b/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py index f13802275f47..ecf8e89d2f61 100644 --- a/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py +++ b/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py @@ -100,5 +100,7 @@ def get_credentials(): environment_name = _get_user_settings() credentials = _get_refresh_token(VSCODE_CREDENTIALS_SECTION, environment_name) return credentials + except NotImplementedError: # pylint:disable=try-except-raise + raise except Exception: # pylint: disable=broad-except return None diff --git a/sdk/identity/azure-identity/azure/identity/_credentials/vscode_credential.py b/sdk/identity/azure-identity/azure/identity/_credentials/vscode_credential.py index c40636c24e96..2c459587db6b 100644 --- a/sdk/identity/azure-identity/azure/identity/_credentials/vscode_credential.py +++ b/sdk/identity/azure-identity/azure/identity/_credentials/vscode_credential.py @@ -52,9 +52,13 @@ def get_token(self, *scopes, **kwargs): return token if not self._refresh_token: - self._refresh_token = get_credentials() - if not self._refresh_token: - raise CredentialUnavailableError(message="No Azure user is logged in to Visual Studio Code.") + try: + self._refresh_token = get_credentials() + if not self._refresh_token: + raise CredentialUnavailableError(message="No Azure user is logged in to Visual Studio Code.") + except NotImplementedError: # pylint:disable=try-except-raise + raise CredentialUnavailableError(message="No supported") + token = self._client.obtain_token_by_refresh_token(scopes, self._refresh_token, **kwargs) return token diff --git a/sdk/identity/azure-identity/tests/test_vscode_credential.py b/sdk/identity/azure-identity/tests/test_vscode_credential.py index 66789026155c..a13d944dd6c0 100644 --- a/sdk/identity/azure-identity/tests/test_vscode_credential.py +++ b/sdk/identity/azure-identity/tests/test_vscode_credential.py @@ -132,6 +132,14 @@ def test_distro(): with pytest.raises(NotImplementedError): credential = _get_refresh_token("test", "test") + with mock.patch("platform.uname", + return_value=('Linux', 'deb', '4.19.0-9-cloud-amd64', + '#1 SMP Debian 4.19.118-2 (2020-04-29)', 'x86_64', '')): + if sys.version_info[0] == 3 and sys.version_info[1] == 8: + with pytest.raises(CredentialUnavailableError): + credential = VSCodeCredential(_client=mock_client) + token = credential.get_token("scope") + @pytest.mark.skipif(not sys.platform.startswith("darwin"), reason="This test only runs on MacOS") def test_mac_keychain_valid_value(): From 2a87ae4a9d50d7f3282f78026fa2e533e168b870 Mon Sep 17 00:00:00 2001 From: Xiang Yan Date: Tue, 9 Jun 2020 09:49:15 -0700 Subject: [PATCH 02/16] async --- .../aio/_credentials/vscode_credential.py | 9 +++-- .../tests/test_vscode_credential_async.py | 40 +++++++++++++++++++ 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/sdk/identity/azure-identity/azure/identity/aio/_credentials/vscode_credential.py b/sdk/identity/azure-identity/azure/identity/aio/_credentials/vscode_credential.py index fcf392421294..0c3612a0eba6 100644 --- a/sdk/identity/azure-identity/azure/identity/aio/_credentials/vscode_credential.py +++ b/sdk/identity/azure-identity/azure/identity/aio/_credentials/vscode_credential.py @@ -56,9 +56,12 @@ async def get_token(self, *scopes, **kwargs): return token if not self._refresh_token: - self._refresh_token = get_credentials() - if not self._refresh_token: - raise CredentialUnavailableError(message="No Azure user is logged in to Visual Studio Code.") + try: + self._refresh_token = get_credentials() + if not self._refresh_token: + raise CredentialUnavailableError(message="No Azure user is logged in to Visual Studio Code.") + except NotImplementedError: # pylint:disable=try-except-raise + raise CredentialUnavailableError(message="No supported") token = await self._client.obtain_token_by_refresh_token(scopes, self._refresh_token, **kwargs) return token diff --git a/sdk/identity/azure-identity/tests/test_vscode_credential_async.py b/sdk/identity/azure-identity/tests/test_vscode_credential_async.py index edd59dcc0b3d..688c8ff6644d 100644 --- a/sdk/identity/azure-identity/tests/test_vscode_credential_async.py +++ b/sdk/identity/azure-identity/tests/test_vscode_credential_async.py @@ -4,6 +4,7 @@ # ------------------------------------ from unittest import mock +import sys from azure.core.credentials import AccessToken from azure.identity import CredentialUnavailableError from azure.identity.aio import VSCodeCredential @@ -105,3 +106,42 @@ async def test_no_obtain_token_if_cached(): credential = VSCodeCredential(_client=mock_client) token = await credential.get_token("scope") assert token_by_refresh_token.call_count == 0 + + +@pytest.mark.skipif(not sys.platform.startswith("linux"), reason="This test only runs on Linux") +@pytest.mark.asyncio +async def test_distro(): + from azure.identity._credentials.linux_vscode_adapter import _get_refresh_token + expected_token = AccessToken("token", 42) + + mock_client = mock.Mock(spec=object) + token_by_refresh_token = mock.Mock(return_value=expected_token) + mock_client.obtain_token_by_refresh_token = wrap_in_future(token_by_refresh_token) + mock_client.get_cached_access_token = mock.Mock(return_value="VALUE") + + with mock.patch("platform.uname", + return_value=('Linux', 'redhat', '4.18.0-193.el8.x86_64', + '#1 SMP Fri Mar 27 14:35:58 UTC 2020', 'x86_64', 'x86_64')): + credential = VSCodeCredential(_client=mock_client) + token = await credential.get_token("scope") + + with mock.patch("platform.uname", + return_value=('Linux', 'ubuntu', '5.3.0-1022-azure', + '#23~18.04.1-Ubuntu SMP Mon May 11 11:55:56 UTC 2020', 'x86_64', 'x86_64')): + credential = VSCodeCredential(_client=mock_client) + token = await credential.get_token("scope") + + with mock.patch("platform.uname", + return_value=('Linux', 'deb', '4.19.0-9-cloud-amd64', + '#1 SMP Debian 4.19.118-2 (2020-04-29)', 'x86_64', '')): + if sys.version_info[0] == 3 and sys.version_info[1] == 8: + with pytest.raises(NotImplementedError): + credential = _get_refresh_token("test", "test") + + with mock.patch("platform.uname", + return_value=('Linux', 'deb', '4.19.0-9-cloud-amd64', + '#1 SMP Debian 4.19.118-2 (2020-04-29)', 'x86_64', '')): + if sys.version_info[0] == 3 and sys.version_info[1] == 8: + with pytest.raises(CredentialUnavailableError): + credential = VSCodeCredential(_client=mock_client) + token = await credential.get_token("scope") From 5f2849d706a3c215930adc979d8b98cb0c909037 Mon Sep 17 00:00:00 2001 From: Xiang Yan Date: Tue, 9 Jun 2020 09:51:22 -0700 Subject: [PATCH 03/16] update --- .../azure/identity/_credentials/vscode_credential.py | 2 +- .../azure/identity/aio/_credentials/vscode_credential.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/identity/azure-identity/azure/identity/_credentials/vscode_credential.py b/sdk/identity/azure-identity/azure/identity/_credentials/vscode_credential.py index 2c459587db6b..f2bfd660711a 100644 --- a/sdk/identity/azure-identity/azure/identity/_credentials/vscode_credential.py +++ b/sdk/identity/azure-identity/azure/identity/_credentials/vscode_credential.py @@ -57,7 +57,7 @@ def get_token(self, *scopes, **kwargs): if not self._refresh_token: raise CredentialUnavailableError(message="No Azure user is logged in to Visual Studio Code.") except NotImplementedError: # pylint:disable=try-except-raise - raise CredentialUnavailableError(message="No supported") + raise CredentialUnavailableError(message="Not supported") token = self._client.obtain_token_by_refresh_token(scopes, self._refresh_token, **kwargs) diff --git a/sdk/identity/azure-identity/azure/identity/aio/_credentials/vscode_credential.py b/sdk/identity/azure-identity/azure/identity/aio/_credentials/vscode_credential.py index 0c3612a0eba6..e2fdce06f19b 100644 --- a/sdk/identity/azure-identity/azure/identity/aio/_credentials/vscode_credential.py +++ b/sdk/identity/azure-identity/azure/identity/aio/_credentials/vscode_credential.py @@ -61,7 +61,7 @@ async def get_token(self, *scopes, **kwargs): if not self._refresh_token: raise CredentialUnavailableError(message="No Azure user is logged in to Visual Studio Code.") except NotImplementedError: # pylint:disable=try-except-raise - raise CredentialUnavailableError(message="No supported") + raise CredentialUnavailableError(message="Not supported") token = await self._client.obtain_token_by_refresh_token(scopes, self._refresh_token, **kwargs) return token From ae4f3bb4f6f6bcf311ab5a05df24db882dcf68c0 Mon Sep 17 00:00:00 2001 From: Xiang Yan Date: Tue, 9 Jun 2020 10:14:59 -0700 Subject: [PATCH 04/16] update --- sdk/identity/azure-identity/tests/test_vscode_credential.py | 3 +-- .../azure-identity/tests/test_vscode_credential_async.py | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/sdk/identity/azure-identity/tests/test_vscode_credential.py b/sdk/identity/azure-identity/tests/test_vscode_credential.py index a13d944dd6c0..23035b1b70af 100644 --- a/sdk/identity/azure-identity/tests/test_vscode_credential.py +++ b/sdk/identity/azure-identity/tests/test_vscode_credential.py @@ -107,10 +107,9 @@ def test_no_obtain_token_if_cached(): @pytest.mark.skipif(not sys.platform.startswith("linux"), reason="This test only runs on Linux") def test_distro(): from azure.identity._credentials.linux_vscode_adapter import _get_refresh_token - expected_token = AccessToken("token", 42) mock_client = mock.Mock(spec=object) - mock_client.obtain_token_by_refresh_token = mock.Mock(return_value=expected_token) + mock_client.obtain_token_by_refresh_token = mock.Mock(return_value=None) mock_client.get_cached_access_token = mock.Mock(return_value="VALUE") with mock.patch("platform.uname", diff --git a/sdk/identity/azure-identity/tests/test_vscode_credential_async.py b/sdk/identity/azure-identity/tests/test_vscode_credential_async.py index 688c8ff6644d..3bbcbb954cf9 100644 --- a/sdk/identity/azure-identity/tests/test_vscode_credential_async.py +++ b/sdk/identity/azure-identity/tests/test_vscode_credential_async.py @@ -112,10 +112,9 @@ async def test_no_obtain_token_if_cached(): @pytest.mark.asyncio async def test_distro(): from azure.identity._credentials.linux_vscode_adapter import _get_refresh_token - expected_token = AccessToken("token", 42) mock_client = mock.Mock(spec=object) - token_by_refresh_token = mock.Mock(return_value=expected_token) + token_by_refresh_token = mock.Mock(return_value=None) mock_client.obtain_token_by_refresh_token = wrap_in_future(token_by_refresh_token) mock_client.get_cached_access_token = mock.Mock(return_value="VALUE") From 555fdb255aeb1687bc8be0b2c477e55976894071 Mon Sep 17 00:00:00 2001 From: Xiang Yan Date: Tue, 9 Jun 2020 10:31:30 -0700 Subject: [PATCH 05/16] update --- sdk/identity/azure-identity/tests/test_vscode_credential.py | 2 +- .../azure-identity/tests/test_vscode_credential_async.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/identity/azure-identity/tests/test_vscode_credential.py b/sdk/identity/azure-identity/tests/test_vscode_credential.py index 23035b1b70af..9794e61b48a0 100644 --- a/sdk/identity/azure-identity/tests/test_vscode_credential.py +++ b/sdk/identity/azure-identity/tests/test_vscode_credential.py @@ -110,7 +110,7 @@ def test_distro(): mock_client = mock.Mock(spec=object) mock_client.obtain_token_by_refresh_token = mock.Mock(return_value=None) - mock_client.get_cached_access_token = mock.Mock(return_value="VALUE") + mock_client.get_cached_access_token = mock.Mock(return_value=None) with mock.patch("platform.uname", return_value=('Linux', 'redhat', '4.18.0-193.el8.x86_64', diff --git a/sdk/identity/azure-identity/tests/test_vscode_credential_async.py b/sdk/identity/azure-identity/tests/test_vscode_credential_async.py index 3bbcbb954cf9..bb78f3998aa4 100644 --- a/sdk/identity/azure-identity/tests/test_vscode_credential_async.py +++ b/sdk/identity/azure-identity/tests/test_vscode_credential_async.py @@ -100,7 +100,7 @@ async def test_no_obtain_token_if_cached(): mock_client = mock.Mock(spec=object) token_by_refresh_token = mock.Mock(return_value=expected_token) mock_client.obtain_token_by_refresh_token = wrap_in_future(token_by_refresh_token) - mock_client.get_cached_access_token = mock.Mock(return_value="VALUE") + mock_client.get_cached_access_token = mock.Mock(return_value=None) with mock.patch(VSCodeCredential.__module__ + ".get_credentials", return_value="VALUE"): credential = VSCodeCredential(_client=mock_client) From aed3fadb34b316d4d125902b8bd36d69011eaeb1 Mon Sep 17 00:00:00 2001 From: Xiang Yan Date: Tue, 9 Jun 2020 10:50:26 -0700 Subject: [PATCH 06/16] update --- .../azure-identity/tests/test_vscode_credential_async.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/identity/azure-identity/tests/test_vscode_credential_async.py b/sdk/identity/azure-identity/tests/test_vscode_credential_async.py index bb78f3998aa4..ef0c73ca721b 100644 --- a/sdk/identity/azure-identity/tests/test_vscode_credential_async.py +++ b/sdk/identity/azure-identity/tests/test_vscode_credential_async.py @@ -100,7 +100,7 @@ async def test_no_obtain_token_if_cached(): mock_client = mock.Mock(spec=object) token_by_refresh_token = mock.Mock(return_value=expected_token) mock_client.obtain_token_by_refresh_token = wrap_in_future(token_by_refresh_token) - mock_client.get_cached_access_token = mock.Mock(return_value=None) + mock_client.get_cached_access_token = mock.Mock(return_value="VALUE") with mock.patch(VSCodeCredential.__module__ + ".get_credentials", return_value="VALUE"): credential = VSCodeCredential(_client=mock_client) @@ -116,7 +116,7 @@ async def test_distro(): mock_client = mock.Mock(spec=object) token_by_refresh_token = mock.Mock(return_value=None) mock_client.obtain_token_by_refresh_token = wrap_in_future(token_by_refresh_token) - mock_client.get_cached_access_token = mock.Mock(return_value="VALUE") + mock_client.get_cached_access_token = mock.Mock(return_value=None) with mock.patch("platform.uname", return_value=('Linux', 'redhat', '4.18.0-193.el8.x86_64', From d422a34a146143bc8fc7533709bd16dded8f5d08 Mon Sep 17 00:00:00 2001 From: Xiang Yan Date: Tue, 9 Jun 2020 11:08:06 -0700 Subject: [PATCH 07/16] update --- .../azure/identity/_credentials/linux_vscode_adapter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py b/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py index ecf8e89d2f61..642e2d03e65d 100644 --- a/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py +++ b/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py @@ -69,7 +69,7 @@ def _get_refresh_token(service_name, account_name): try: import platform distro = platform.uname() - if sys.version_info >= (3, 8) and not ("redhat" in distro or "ubuntu" in distro): + if sys.version_info >= (3, 8): raise NotImplementedError("Not supported") except Exception: # pylint: disable=broad-except raise NotImplementedError("Not supported") From ce8c7b398d4af0bc584c2fc59a630d3c13dc3bc9 Mon Sep 17 00:00:00 2001 From: Xiang Yan Date: Tue, 9 Jun 2020 11:13:00 -0700 Subject: [PATCH 08/16] update --- .../tests/test_vscode_credential.py | 18 ++++++++++++++---- .../tests/test_vscode_credential_async.py | 18 ++++++++++++++---- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/sdk/identity/azure-identity/tests/test_vscode_credential.py b/sdk/identity/azure-identity/tests/test_vscode_credential.py index 9794e61b48a0..22486b89e107 100644 --- a/sdk/identity/azure-identity/tests/test_vscode_credential.py +++ b/sdk/identity/azure-identity/tests/test_vscode_credential.py @@ -115,14 +115,24 @@ def test_distro(): with mock.patch("platform.uname", return_value=('Linux', 'redhat', '4.18.0-193.el8.x86_64', '#1 SMP Fri Mar 27 14:35:58 UTC 2020', 'x86_64', 'x86_64')): - credential = VSCodeCredential(_client=mock_client) - token = credential.get_token("scope") + if sys.version_info[0] < 3: + with pytest.raises(NotImplementedError): + credential = VSCodeCredential(_client=mock_client) + token = credential.get_token("scope") + else: + credential = VSCodeCredential(_client=mock_client) + token = credential.get_token("scope") with mock.patch("platform.uname", return_value=('Linux', 'ubuntu', '5.3.0-1022-azure', '#23~18.04.1-Ubuntu SMP Mon May 11 11:55:56 UTC 2020', 'x86_64', 'x86_64')): - credential = VSCodeCredential(_client=mock_client) - token = credential.get_token("scope") + if sys.version_info[0] < 3: + with pytest.raises(NotImplementedError): + credential = VSCodeCredential(_client=mock_client) + token = credential.get_token("scope") + else: + credential = VSCodeCredential(_client=mock_client) + token = credential.get_token("scope") with mock.patch("platform.uname", return_value=('Linux', 'deb', '4.19.0-9-cloud-amd64', diff --git a/sdk/identity/azure-identity/tests/test_vscode_credential_async.py b/sdk/identity/azure-identity/tests/test_vscode_credential_async.py index ef0c73ca721b..d1e636f5a5a3 100644 --- a/sdk/identity/azure-identity/tests/test_vscode_credential_async.py +++ b/sdk/identity/azure-identity/tests/test_vscode_credential_async.py @@ -121,14 +121,24 @@ async def test_distro(): with mock.patch("platform.uname", return_value=('Linux', 'redhat', '4.18.0-193.el8.x86_64', '#1 SMP Fri Mar 27 14:35:58 UTC 2020', 'x86_64', 'x86_64')): - credential = VSCodeCredential(_client=mock_client) - token = await credential.get_token("scope") + if sys.version_info[0] < 3: + with pytest.raises(NotImplementedError): + credential = VSCodeCredential(_client=mock_client) + token = await credential.get_token("scope") + else: + credential = VSCodeCredential(_client=mock_client) + token = await credential.get_token("scope") with mock.patch("platform.uname", return_value=('Linux', 'ubuntu', '5.3.0-1022-azure', '#23~18.04.1-Ubuntu SMP Mon May 11 11:55:56 UTC 2020', 'x86_64', 'x86_64')): - credential = VSCodeCredential(_client=mock_client) - token = await credential.get_token("scope") + if sys.version_info[0] < 3: + with pytest.raises(NotImplementedError): + credential = VSCodeCredential(_client=mock_client) + token = await credential.get_token("scope") + else: + credential = VSCodeCredential(_client=mock_client) + token = await credential.get_token("scope") with mock.patch("platform.uname", return_value=('Linux', 'deb', '4.19.0-9-cloud-amd64', From 042a951f3859e99ad6b407849d731c6695e32634 Mon Sep 17 00:00:00 2001 From: Xiang Yan Date: Tue, 9 Jun 2020 11:13:44 -0700 Subject: [PATCH 09/16] update --- sdk/identity/azure-identity/tests/test_vscode_credential.py | 4 ++-- .../azure-identity/tests/test_vscode_credential_async.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sdk/identity/azure-identity/tests/test_vscode_credential.py b/sdk/identity/azure-identity/tests/test_vscode_credential.py index 22486b89e107..70ee435f90b3 100644 --- a/sdk/identity/azure-identity/tests/test_vscode_credential.py +++ b/sdk/identity/azure-identity/tests/test_vscode_credential.py @@ -116,7 +116,7 @@ def test_distro(): return_value=('Linux', 'redhat', '4.18.0-193.el8.x86_64', '#1 SMP Fri Mar 27 14:35:58 UTC 2020', 'x86_64', 'x86_64')): if sys.version_info[0] < 3: - with pytest.raises(NotImplementedError): + with pytest.raises(CredentialUnavailableError): credential = VSCodeCredential(_client=mock_client) token = credential.get_token("scope") else: @@ -127,7 +127,7 @@ def test_distro(): return_value=('Linux', 'ubuntu', '5.3.0-1022-azure', '#23~18.04.1-Ubuntu SMP Mon May 11 11:55:56 UTC 2020', 'x86_64', 'x86_64')): if sys.version_info[0] < 3: - with pytest.raises(NotImplementedError): + with pytest.raises(CredentialUnavailableError): credential = VSCodeCredential(_client=mock_client) token = credential.get_token("scope") else: diff --git a/sdk/identity/azure-identity/tests/test_vscode_credential_async.py b/sdk/identity/azure-identity/tests/test_vscode_credential_async.py index d1e636f5a5a3..24f00d229474 100644 --- a/sdk/identity/azure-identity/tests/test_vscode_credential_async.py +++ b/sdk/identity/azure-identity/tests/test_vscode_credential_async.py @@ -122,7 +122,7 @@ async def test_distro(): return_value=('Linux', 'redhat', '4.18.0-193.el8.x86_64', '#1 SMP Fri Mar 27 14:35:58 UTC 2020', 'x86_64', 'x86_64')): if sys.version_info[0] < 3: - with pytest.raises(NotImplementedError): + with pytest.raises(CredentialUnavailableError): credential = VSCodeCredential(_client=mock_client) token = await credential.get_token("scope") else: @@ -133,7 +133,7 @@ async def test_distro(): return_value=('Linux', 'ubuntu', '5.3.0-1022-azure', '#23~18.04.1-Ubuntu SMP Mon May 11 11:55:56 UTC 2020', 'x86_64', 'x86_64')): if sys.version_info[0] < 3: - with pytest.raises(NotImplementedError): + with pytest.raises(CredentialUnavailableError): credential = VSCodeCredential(_client=mock_client) token = await credential.get_token("scope") else: From 380e98a405ac00a39aee553bce3f2144990788da Mon Sep 17 00:00:00 2001 From: Xiang Yan Date: Tue, 9 Jun 2020 11:22:02 -0700 Subject: [PATCH 10/16] update --- .../tests/test_vscode_credential.py | 41 ++++--------------- .../tests/test_vscode_credential_async.py | 41 ++++--------------- 2 files changed, 18 insertions(+), 64 deletions(-) diff --git a/sdk/identity/azure-identity/tests/test_vscode_credential.py b/sdk/identity/azure-identity/tests/test_vscode_credential.py index 70ee435f90b3..ed49e73720ea 100644 --- a/sdk/identity/azure-identity/tests/test_vscode_credential.py +++ b/sdk/identity/azure-identity/tests/test_vscode_credential.py @@ -112,42 +112,19 @@ def test_distro(): mock_client.obtain_token_by_refresh_token = mock.Mock(return_value=None) mock_client.get_cached_access_token = mock.Mock(return_value=None) - with mock.patch("platform.uname", - return_value=('Linux', 'redhat', '4.18.0-193.el8.x86_64', - '#1 SMP Fri Mar 27 14:35:58 UTC 2020', 'x86_64', 'x86_64')): - if sys.version_info[0] < 3: - with pytest.raises(CredentialUnavailableError): - credential = VSCodeCredential(_client=mock_client) - token = credential.get_token("scope") - else: + if sys.version_info[0] < 3: + with pytest.raises(CredentialUnavailableError): credential = VSCodeCredential(_client=mock_client) token = credential.get_token("scope") - - with mock.patch("platform.uname", - return_value=('Linux', 'ubuntu', '5.3.0-1022-azure', - '#23~18.04.1-Ubuntu SMP Mon May 11 11:55:56 UTC 2020', 'x86_64', 'x86_64')): - if sys.version_info[0] < 3: - with pytest.raises(CredentialUnavailableError): - credential = VSCodeCredential(_client=mock_client) - token = credential.get_token("scope") - else: + elif sys.version_info >= (3, 8): + with pytest.raises(NotImplementedError): + credential = _get_refresh_token("test", "test") + with pytest.raises(CredentialUnavailableError): credential = VSCodeCredential(_client=mock_client) token = credential.get_token("scope") - - with mock.patch("platform.uname", - return_value=('Linux', 'deb', '4.19.0-9-cloud-amd64', - '#1 SMP Debian 4.19.118-2 (2020-04-29)', 'x86_64', '')): - if sys.version_info[0] == 3 and sys.version_info[1] == 8: - with pytest.raises(NotImplementedError): - credential = _get_refresh_token("test", "test") - - with mock.patch("platform.uname", - return_value=('Linux', 'deb', '4.19.0-9-cloud-amd64', - '#1 SMP Debian 4.19.118-2 (2020-04-29)', 'x86_64', '')): - if sys.version_info[0] == 3 and sys.version_info[1] == 8: - with pytest.raises(CredentialUnavailableError): - credential = VSCodeCredential(_client=mock_client) - token = credential.get_token("scope") + else: + credential = VSCodeCredential(_client=mock_client) + token = credential.get_token("scope") @pytest.mark.skipif(not sys.platform.startswith("darwin"), reason="This test only runs on MacOS") diff --git a/sdk/identity/azure-identity/tests/test_vscode_credential_async.py b/sdk/identity/azure-identity/tests/test_vscode_credential_async.py index 24f00d229474..2437325d1943 100644 --- a/sdk/identity/azure-identity/tests/test_vscode_credential_async.py +++ b/sdk/identity/azure-identity/tests/test_vscode_credential_async.py @@ -118,39 +118,16 @@ async def test_distro(): mock_client.obtain_token_by_refresh_token = wrap_in_future(token_by_refresh_token) mock_client.get_cached_access_token = mock.Mock(return_value=None) - with mock.patch("platform.uname", - return_value=('Linux', 'redhat', '4.18.0-193.el8.x86_64', - '#1 SMP Fri Mar 27 14:35:58 UTC 2020', 'x86_64', 'x86_64')): - if sys.version_info[0] < 3: - with pytest.raises(CredentialUnavailableError): - credential = VSCodeCredential(_client=mock_client) - token = await credential.get_token("scope") - else: + if sys.version_info[0] < 3: + with pytest.raises(CredentialUnavailableError): credential = VSCodeCredential(_client=mock_client) token = await credential.get_token("scope") - - with mock.patch("platform.uname", - return_value=('Linux', 'ubuntu', '5.3.0-1022-azure', - '#23~18.04.1-Ubuntu SMP Mon May 11 11:55:56 UTC 2020', 'x86_64', 'x86_64')): - if sys.version_info[0] < 3: - with pytest.raises(CredentialUnavailableError): - credential = VSCodeCredential(_client=mock_client) - token = await credential.get_token("scope") - else: + elif sys.version_info >= (3, 8): + with pytest.raises(NotImplementedError): + credential = _get_refresh_token("test", "test") + with pytest.raises(CredentialUnavailableError): credential = VSCodeCredential(_client=mock_client) token = await credential.get_token("scope") - - with mock.patch("platform.uname", - return_value=('Linux', 'deb', '4.19.0-9-cloud-amd64', - '#1 SMP Debian 4.19.118-2 (2020-04-29)', 'x86_64', '')): - if sys.version_info[0] == 3 and sys.version_info[1] == 8: - with pytest.raises(NotImplementedError): - credential = _get_refresh_token("test", "test") - - with mock.patch("platform.uname", - return_value=('Linux', 'deb', '4.19.0-9-cloud-amd64', - '#1 SMP Debian 4.19.118-2 (2020-04-29)', 'x86_64', '')): - if sys.version_info[0] == 3 and sys.version_info[1] == 8: - with pytest.raises(CredentialUnavailableError): - credential = VSCodeCredential(_client=mock_client) - token = await credential.get_token("scope") + else: + credential = VSCodeCredential(_client=mock_client) + token = await credential.get_token("scope") From 3187e1c22481411c66baa107dfe19be9391000f6 Mon Sep 17 00:00:00 2001 From: Xiang Yan Date: Tue, 9 Jun 2020 11:35:24 -0700 Subject: [PATCH 11/16] update --- .../azure/identity/_credentials/linux_vscode_adapter.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py b/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py index 642e2d03e65d..c752b40fd201 100644 --- a/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py +++ b/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py @@ -67,8 +67,6 @@ def _get_refresh_token(service_name, account_name): raise NotImplementedError("Not supported on Python 2.7") try: - import platform - distro = platform.uname() if sys.version_info >= (3, 8): raise NotImplementedError("Not supported") except Exception: # pylint: disable=broad-except From 3eefd3722bced87ab3bde64af329541625593c4d Mon Sep 17 00:00:00 2001 From: Xiang Yan Date: Tue, 9 Jun 2020 12:45:11 -0700 Subject: [PATCH 12/16] update --- .../azure/identity/_credentials/linux_vscode_adapter.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py b/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py index c752b40fd201..94f6f178e88f 100644 --- a/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py +++ b/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py @@ -66,10 +66,7 @@ def _get_refresh_token(service_name, account_name): if sys.version_info[0] < 3: raise NotImplementedError("Not supported on Python 2.7") - try: - if sys.version_info >= (3, 8): - raise NotImplementedError("Not supported") - except Exception: # pylint: disable=broad-except + if sys.version_info >= (3, 8): raise NotImplementedError("Not supported") err = ct.c_int() From bc2470e0a7a6a5cfff7430b2fada20d01e10384f Mon Sep 17 00:00:00 2001 From: Xiang Yan Date: Tue, 9 Jun 2020 13:01:18 -0700 Subject: [PATCH 13/16] disable linux suppport --- .../identity/_credentials/linux_vscode_adapter.py | 10 ++-------- .../tests/test_vscode_credential.py | 14 +++----------- .../tests/test_vscode_credential_async.py | 15 ++++----------- 3 files changed, 9 insertions(+), 30 deletions(-) diff --git a/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py b/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py index 94f6f178e88f..431ca95958b3 100644 --- a/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py +++ b/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py @@ -91,11 +91,5 @@ def _get_refresh_token(service_name, account_name): def get_credentials(): - try: - environment_name = _get_user_settings() - credentials = _get_refresh_token(VSCODE_CREDENTIALS_SECTION, environment_name) - return credentials - except NotImplementedError: # pylint:disable=try-except-raise - raise - except Exception: # pylint: disable=broad-except - return None + # Disable linux support for further investigation + raise NotImplementedError("Not supported") diff --git a/sdk/identity/azure-identity/tests/test_vscode_credential.py b/sdk/identity/azure-identity/tests/test_vscode_credential.py index ed49e73720ea..791a063d3bb0 100644 --- a/sdk/identity/azure-identity/tests/test_vscode_credential.py +++ b/sdk/identity/azure-identity/tests/test_vscode_credential.py @@ -112,17 +112,9 @@ def test_distro(): mock_client.obtain_token_by_refresh_token = mock.Mock(return_value=None) mock_client.get_cached_access_token = mock.Mock(return_value=None) - if sys.version_info[0] < 3: - with pytest.raises(CredentialUnavailableError): - credential = VSCodeCredential(_client=mock_client) - token = credential.get_token("scope") - elif sys.version_info >= (3, 8): - with pytest.raises(NotImplementedError): - credential = _get_refresh_token("test", "test") - with pytest.raises(CredentialUnavailableError): - credential = VSCodeCredential(_client=mock_client) - token = credential.get_token("scope") - else: + with pytest.raises(NotImplementedError): + credential = _get_refresh_token("test", "test") + with pytest.raises(CredentialUnavailableError): credential = VSCodeCredential(_client=mock_client) token = credential.get_token("scope") diff --git a/sdk/identity/azure-identity/tests/test_vscode_credential_async.py b/sdk/identity/azure-identity/tests/test_vscode_credential_async.py index 2437325d1943..0e1227c6523c 100644 --- a/sdk/identity/azure-identity/tests/test_vscode_credential_async.py +++ b/sdk/identity/azure-identity/tests/test_vscode_credential_async.py @@ -118,16 +118,9 @@ async def test_distro(): mock_client.obtain_token_by_refresh_token = wrap_in_future(token_by_refresh_token) mock_client.get_cached_access_token = mock.Mock(return_value=None) - if sys.version_info[0] < 3: - with pytest.raises(CredentialUnavailableError): - credential = VSCodeCredential(_client=mock_client) - token = await credential.get_token("scope") - elif sys.version_info >= (3, 8): - with pytest.raises(NotImplementedError): - credential = _get_refresh_token("test", "test") - with pytest.raises(CredentialUnavailableError): - credential = VSCodeCredential(_client=mock_client) - token = await credential.get_token("scope") - else: + with pytest.raises(NotImplementedError): + credential = _get_refresh_token("test", "test") + with pytest.raises(CredentialUnavailableError): credential = VSCodeCredential(_client=mock_client) token = await credential.get_token("scope") + \ No newline at end of file From d6bb255b4f770d93398f93bbbab5db159d0e6b89 Mon Sep 17 00:00:00 2001 From: Xiang Yan Date: Tue, 9 Jun 2020 13:12:03 -0700 Subject: [PATCH 14/16] update --- sdk/identity/azure-identity/tests/test_vscode_credential.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/sdk/identity/azure-identity/tests/test_vscode_credential.py b/sdk/identity/azure-identity/tests/test_vscode_credential.py index 791a063d3bb0..62848fd5e85d 100644 --- a/sdk/identity/azure-identity/tests/test_vscode_credential.py +++ b/sdk/identity/azure-identity/tests/test_vscode_credential.py @@ -133,9 +133,3 @@ def test_mac_keychain_error(): credential = VSCodeCredential() with pytest.raises(CredentialUnavailableError): token = credential.get_token("scope") - - -@pytest.mark.skipif(not sys.platform.startswith("linux"), reason="This test only runs on Linux") -def test_get_token(): - with mock.patch("azure.identity._credentials.linux_vscode_adapter._get_refresh_token", return_value="VALUE"): - assert get_credentials() == "VALUE" From 0cedf2f21848ba84f2f309b0c4418998e55798b5 Mon Sep 17 00:00:00 2001 From: Xiang Yan Date: Tue, 9 Jun 2020 13:27:01 -0700 Subject: [PATCH 15/16] update --- .../azure/identity/_credentials/linux_vscode_adapter.py | 1 - 1 file changed, 1 deletion(-) diff --git a/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py b/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py index 431ca95958b3..bfd45faeb484 100644 --- a/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py +++ b/sdk/identity/azure-identity/azure/identity/_credentials/linux_vscode_adapter.py @@ -5,7 +5,6 @@ import os import json import ctypes as ct -from .._constants import VSCODE_CREDENTIALS_SECTION def _c_str(string): From 93524f802177a3b1611aac6e7d9e8feafada1bec Mon Sep 17 00:00:00 2001 From: Xiang Yan Date: Tue, 9 Jun 2020 14:02:03 -0700 Subject: [PATCH 16/16] update --- sdk/identity/azure-identity/tests/test_vscode_credential.py | 4 ---- .../azure-identity/tests/test_vscode_credential_async.py | 4 ---- 2 files changed, 8 deletions(-) diff --git a/sdk/identity/azure-identity/tests/test_vscode_credential.py b/sdk/identity/azure-identity/tests/test_vscode_credential.py index 62848fd5e85d..e6dc70fffd00 100644 --- a/sdk/identity/azure-identity/tests/test_vscode_credential.py +++ b/sdk/identity/azure-identity/tests/test_vscode_credential.py @@ -106,14 +106,10 @@ def test_no_obtain_token_if_cached(): @pytest.mark.skipif(not sys.platform.startswith("linux"), reason="This test only runs on Linux") def test_distro(): - from azure.identity._credentials.linux_vscode_adapter import _get_refresh_token - mock_client = mock.Mock(spec=object) mock_client.obtain_token_by_refresh_token = mock.Mock(return_value=None) mock_client.get_cached_access_token = mock.Mock(return_value=None) - with pytest.raises(NotImplementedError): - credential = _get_refresh_token("test", "test") with pytest.raises(CredentialUnavailableError): credential = VSCodeCredential(_client=mock_client) token = credential.get_token("scope") diff --git a/sdk/identity/azure-identity/tests/test_vscode_credential_async.py b/sdk/identity/azure-identity/tests/test_vscode_credential_async.py index 0e1227c6523c..6bdbb430044c 100644 --- a/sdk/identity/azure-identity/tests/test_vscode_credential_async.py +++ b/sdk/identity/azure-identity/tests/test_vscode_credential_async.py @@ -111,16 +111,12 @@ async def test_no_obtain_token_if_cached(): @pytest.mark.skipif(not sys.platform.startswith("linux"), reason="This test only runs on Linux") @pytest.mark.asyncio async def test_distro(): - from azure.identity._credentials.linux_vscode_adapter import _get_refresh_token mock_client = mock.Mock(spec=object) token_by_refresh_token = mock.Mock(return_value=None) mock_client.obtain_token_by_refresh_token = wrap_in_future(token_by_refresh_token) mock_client.get_cached_access_token = mock.Mock(return_value=None) - with pytest.raises(NotImplementedError): - credential = _get_refresh_token("test", "test") with pytest.raises(CredentialUnavailableError): credential = VSCodeCredential(_client=mock_client) token = await credential.get_token("scope") - \ No newline at end of file