54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
from typing import Dict, List
|
|
from unittest import mock
|
|
from unittest.mock import MagicMock
|
|
|
|
import pytest
|
|
from lightning_cloud.openapi import V1ListMembershipsResponse, V1ListSecretsResponse, V1Membership, V1Secret
|
|
|
|
import lightning_app
|
|
from lightning_app.utilities.secrets import _names_to_ids
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"secret_names, secrets, expected, expected_exception",
|
|
[
|
|
([], [], {}, False),
|
|
(
|
|
["first-secret", "second-secret"],
|
|
[
|
|
V1Secret(name="first-secret", id="1234"),
|
|
],
|
|
{},
|
|
True,
|
|
),
|
|
(
|
|
["first-secret", "second-secret"],
|
|
[V1Secret(name="first-secret", id="1234"), V1Secret(name="second-secret", id="5678")],
|
|
{"first-secret": "1234", "second-secret": "5678"},
|
|
False,
|
|
),
|
|
],
|
|
)
|
|
@mock.patch("lightning_cloud.login.Auth.authenticate", MagicMock())
|
|
def test_names_to_ids(
|
|
secret_names: List[str],
|
|
secrets: List[V1Secret],
|
|
expected: Dict[str, str],
|
|
expected_exception: bool,
|
|
monkeypatch,
|
|
):
|
|
class FakeLightningClient:
|
|
def projects_service_list_memberships(self, *_, **__):
|
|
return V1ListMembershipsResponse(memberships=[V1Membership(project_id="default-project")])
|
|
|
|
def secret_service_list_secrets(self, *_, **__):
|
|
return V1ListSecretsResponse(secrets=secrets)
|
|
|
|
monkeypatch.setattr(lightning_app.utilities.secrets, "LightningClient", FakeLightningClient)
|
|
|
|
if expected_exception:
|
|
with pytest.raises(ValueError):
|
|
_names_to_ids(secret_names)
|
|
else:
|
|
assert _names_to_ids(secret_names) == expected
|