Skip to content
This repository has been archived by the owner on Feb 4, 2025. It is now read-only.

Commit

Permalink
[QI2-1176] Add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
eliasKA committed Dec 31, 2024
1 parent fd05886 commit 4523f75
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 17 deletions.
2 changes: 1 addition & 1 deletion quantuminspire/util/configuration.py
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ async def fetch_suggested_auth_settings(self, host: Optional[Url] = None) -> Non
host = self.default_host
async with ApiClient(Configuration(host=host)) as api_client:
auth_config = await AuthConfigApi(api_client).auth_config_auth_config_get()
self.auths[self.default_host] = AuthSettings(
self.auths[host] = AuthSettings(
client_id=auth_config.client_id,
audience=auth_config.audience,
well_known_endpoint=auth_config.well_known_endpoint,
Expand Down
17 changes: 14 additions & 3 deletions tests/cli/test_command_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,6 @@ def test_results_get(mocker: MockerFixture) -> None:
assert result.exit_code == 0
mock_remote_backend_inst.get_results.assert_called_once()


def test_results_get_no_results(mocker: MockerFixture) -> None:
mock_remote_backend_inst = MagicMock()
mock_remote_backend_inst.get_results.return_value = None
Expand Down Expand Up @@ -141,11 +140,23 @@ def test_final_results_get_no_results(mocker: MockerFixture) -> None:
mock_remote_backend_inst.get_final_results.assert_called_once()


def test_login(mocker: MockerFixture, mocked_config_file: MagicMock) -> None:
@pytest.mark.parametrize("use_local_auth_config", [
True,
False
])
def test_login(mocker: MockerFixture, mocked_config_file: MagicMock, use_local_auth_config: bool) -> None:
device_session = mocker.patch("quantuminspire.cli.command_list.OauthDeviceSession")()
webbrowser_open = mocker.patch("quantuminspire.cli.command_list.webbrowser.open")
store_tokens = mocker.patch("quantuminspire.cli.command_list.Settings.store_tokens")
result = runner.invoke(app, ["login", "https://host"])
fetch_auth = mocker.patch("quantuminspire.cli.command_list.Settings.fetch_suggested_auth_settings")

if use_local_auth_config:
result = runner.invoke(app, ["login", "https://host", "--use-local-auth-config"])
fetch_auth.assert_not_called()
else:
result = runner.invoke(app, ["login", "https://host"])
fetch_auth.assert_called_once()

assert result.exit_code == 0, repr(result.exception)
webbrowser_open.assert_called_once()
device_session.initialize_authorization.assert_called_once()
Expand Down
42 changes: 29 additions & 13 deletions tests/util/test_configuration.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,19 +26,7 @@ def test_force_file_into_existence_file_does_not_exist(mocked_config_file: Magic
mocked_config_file.parent.mkdir.assert_called_once_with(parents=True, exist_ok=True)
mocked_config_file.open.assert_called_once_with("w", encoding="utf-8")
open_mock.write.assert_called_once_with(
"""
{
"auths": {
"https://staging.qi2.quantum-inspire.com": {
"client_id": "Yz7ni9PUAyT43eUASZfmc1yqI66QxLUJ",
"well_known_endpoint": "https://quantum-inspire-staging.eu.auth0.com/.well-known/openid-configuration"
},
"https://api.qi2.quantum-inspire.com": {
"well_known_endpoint": "https://auth.qi2.quantum-inspire.com/realms/oidc_production/.well-known/openid-configuration"
}
}
}
"""
configuration.DEFAULT_CONFIG
)


Expand Down Expand Up @@ -145,3 +133,31 @@ def __init__(self, items_list: list[Member]) -> None:
member_id = configuration.Settings.get_team_member_id(host="https://host", access_token="some token")
assert member_id == expected_member_id
assert mock_input.call_count == len(side_effect_user_input)

@pytest.mark.parametrize(
"host",
[
"https://test.host",
None
],
)
async def test_fetch_suggested_auth_settings(mocked_config_file: MagicMock, mocker: MockerFixture, host: str) -> None:
settings = configuration.Settings()
api_client = MagicMock()
auth_config = MagicMock()
auth_config.client_id = "test_client_id"
auth_config.audience = "test_audience"
auth_config.well_known_endpoint = "https://test.endpoint/.well-known/config"

auth_config_api = AsyncMock()
auth_config_api.auth_config_auth_config_get = AsyncMock(return_value=auth_config)

mocker.patch("quantuminspire.util.configuration.ApiClient", return_value=api_client)
mocker.patch("quantuminspire.util.configuration.AuthConfigApi", return_value=auth_config_api)

await settings.fetch_suggested_auth_settings(host)
auth_settings = settings.auths[settings.default_host] if host is None else settings.auths[host]

assert auth_settings.client_id == "test_client_id"
assert auth_settings.audience == "test_audience"
assert auth_settings.well_known_endpoint == "https://test.endpoint/.well-known/config"

0 comments on commit 4523f75

Please sign in to comment.