From 4d2740ddf748ca0135e6319a2d71aeb2654d24e4 Mon Sep 17 00:00:00 2001 From: Shubham Padkonde Date: Fri, 2 Oct 2026 16:19:44 +0530 Subject: [PATCH] fix: refresh cached lab repository properties --- tests/test_system_lab_repositories.py | 27 +++++++++++++++++++++++++++ virl2_client/models/lab_repository.py | 5 +++++ 2 files changed, 32 insertions(+) diff --git a/tests/test_system_lab_repositories.py b/tests/test_system_lab_repositories.py index 967fb062..2c422993 100644 --- a/tests/test_system_lab_repositories.py +++ b/tests/test_system_lab_repositories.py @@ -439,3 +439,30 @@ def delete_lab_repo_response(request): with pytest.raises(LabRepositoryNotFound): lab_repo_mgmt.get_lab_repository("repo-123") + + +@pytest.mark.parametrize("folder", ["updated_folder", None]) +def test_sync_updates_existing_repository(system_with_repos, folder): + from virl2_client.utils import Version + + manager = system_with_repos + manager._session.controller_version = Version("2.9.0") + repository = manager.get_lab_repository("repo-123") + updated = { + "id": "repo-123", + "url": "https://example.com/updated.git", + "name": "updated-name", + } + if folder is not None: + updated["folder"] = folder + manager._session.get.return_value.json.return_value = [updated] + + manager.sync_lab_repositories() + + assert manager.get_lab_repository("repo-123") is repository + assert repository.url == "https://example.com/updated.git" + assert repository.name == "updated-name" + assert repository.folder == folder + assert manager.get_lab_repository_by_name("updated-name") is repository + with pytest.raises(LabRepositoryNotFound): + manager.get_lab_repository_by_name("cisco-templates") diff --git a/virl2_client/models/lab_repository.py b/virl2_client/models/lab_repository.py index afa97f43..43064184 100644 --- a/virl2_client/models/lab_repository.py +++ b/virl2_client/models/lab_repository.py @@ -189,6 +189,11 @@ def sync_lab_repositories(self) -> None: repo_id = lab_repository.pop("id") if repo_id not in self._lab_repositories: self.add_lab_repository_local(repo_id, **lab_repository) + else: + repository = self._lab_repositories[repo_id] + repository._url = lab_repository["url"] + repository._name = lab_repository["name"] + repository._folder = lab_repository.get("folder") lab_repository_ids.append(repo_id) for repo_id in tuple(self._lab_repositories):