Skip to content

Commit d0c48c2

Browse files
Shira SassoonCopilot
andcommitted
refactor: move auth isolation tests from bridge to core auth test file
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
1 parent edfe385 commit d0c48c2

2 files changed

Lines changed: 43 additions & 46 deletions

File tree

tests/test_core/test_fab_auth_azure_cli.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -628,3 +628,46 @@ def test_cache_miss_after_ttl_expiry(self, mock_run, temp_dir_fixture):
628628
result = auth._get_azure_cli_tenant()
629629
assert result == "new-tenant"
630630
mock_run.assert_called_once()
631+
632+
633+
class TestNonAzureCliIsolation:
634+
"""Verify non-azure-cli identity types never invoke AzureCliCredential."""
635+
636+
@patch("fabric_cli.core.fab_auth.AzureCliCredential")
637+
def test_user_identity_does_not_invoke_azure_cli(
638+
self, mock_credential_class, temp_dir_fixture
639+
):
640+
"""When identity_type is 'user', AzureCliCredential must not be instantiated."""
641+
auth = FabAuth()
642+
auth.set_access_mode("user")
643+
644+
mock_app = MagicMock()
645+
mock_app.get_accounts.return_value = [{"username": "test@contoso.com"}]
646+
mock_app.acquire_token_silent.return_value = {
647+
"access_token": "msal-user-token",
648+
"expires_on": str(int(time.time()) + 3600),
649+
}
650+
auth.app = mock_app
651+
652+
result = auth.acquire_token(con.SCOPE_FABRIC_DEFAULT)
653+
assert result["access_token"] == "msal-user-token"
654+
mock_credential_class.assert_not_called()
655+
656+
@patch("fabric_cli.core.fab_auth.AzureCliCredential")
657+
def test_service_principal_does_not_invoke_azure_cli(
658+
self, mock_credential_class, temp_dir_fixture
659+
):
660+
"""When identity_type is 'service_principal', AzureCliCredential must not be instantiated."""
661+
auth = FabAuth()
662+
auth.set_access_mode("service_principal")
663+
664+
mock_app = MagicMock()
665+
mock_app.acquire_token_for_client.return_value = {
666+
"access_token": "spn-token",
667+
"expires_on": str(int(time.time()) + 3600),
668+
}
669+
auth.app = mock_app
670+
671+
result = auth.acquire_token(con.SCOPE_FABRIC_DEFAULT)
672+
assert result["access_token"] == "spn-token"
673+
mock_credential_class.assert_not_called()

tests/test_core/test_fab_msal_bridge_azure_cli.py

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -65,49 +65,3 @@ def test_bridge_rejects_invalid_scope(self, mock_credential_class):
6565
credential = MsalTokenCredential(auth)
6666
with pytest.raises(ClientAuthenticationError):
6767
credential.get_token("https://evil.example.com/.default")
68-
69-
70-
class TestMsalBridgeNonAzureCli:
71-
"""Verify non-azure-cli identity types never invoke AzureCliCredential."""
72-
73-
@patch("fabric_cli.core.fab_auth.AzureCliCredential")
74-
def test_user_identity_does_not_invoke_azure_cli(self, mock_credential_class):
75-
"""When identity_type is 'user', AzureCliCredential must not be instantiated."""
76-
auth = FabAuth()
77-
auth.set_access_mode("user")
78-
79-
# Simulate MSAL returning a cached token so no interactive prompt
80-
mock_app = MagicMock()
81-
mock_app.get_accounts.return_value = [{"username": "test@contoso.com"}]
82-
mock_app.acquire_token_silent.return_value = {
83-
"access_token": "msal-user-token",
84-
"expires_on": str(int(time.time()) + 3600),
85-
}
86-
auth.app = mock_app
87-
88-
credential = MsalTokenCredential(auth)
89-
result = credential.get_token(con.SCOPE_FABRIC_DEFAULT[0])
90-
91-
assert result.token == "msal-user-token"
92-
mock_credential_class.assert_not_called()
93-
94-
@patch("fabric_cli.core.fab_auth.AzureCliCredential")
95-
def test_service_principal_does_not_invoke_azure_cli(
96-
self, mock_credential_class
97-
):
98-
"""When identity_type is 'service_principal', AzureCliCredential must not be instantiated."""
99-
auth = FabAuth()
100-
auth.set_access_mode("service_principal")
101-
102-
mock_app = MagicMock()
103-
mock_app.acquire_token_for_client.return_value = {
104-
"access_token": "spn-token",
105-
"expires_on": str(int(time.time()) + 3600),
106-
}
107-
auth.app = mock_app
108-
109-
credential = MsalTokenCredential(auth)
110-
result = credential.get_token(con.SCOPE_FABRIC_DEFAULT[0])
111-
112-
assert result.token == "spn-token"
113-
mock_credential_class.assert_not_called()

0 commit comments

Comments
 (0)