Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions app/glue.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,10 @@ def update_vos(self):
self._vos = vos
except httpx.HTTPError as e:
logging.error(f"Unable to load VOs: {e}")
self._vos = []
logging.debug("Will use cached list of VOs")
return self._vos

def get_vos(self):
if not self._vos:
self.update_vos()
return self._vos

def get_disciplines(self):
Expand Down Expand Up @@ -390,7 +389,7 @@ def _load_site(self, site):
if name in self._sites_info:
if site["last_modified"] == self._sites_info[name]["last_modified"]:
# same update, no need to reload
logging.info(f"No update neeeded for {name}")
logging.info(f"No update needed for {name}")
return {name: self._sites_info[name]}
try:
r = self.httpx_client.get(
Expand Down
13 changes: 10 additions & 3 deletions app/test_glue.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,12 @@ def test_gluesite_object(site):


def test_vo_store_get_vos(ops_portal):
vo_store = glue.VOStore(ops_portal_url="https://example.com")
vo_store._vos = ["foo", "bar"]
assert ["foo", "bar"] == vo_store.get_vos()


def test_vo_store_update_vos(ops_portal):
test_client = httpx.Client(
transport=httpx.MockTransport(
lambda request: httpx.Response(
Expand All @@ -70,10 +76,10 @@ def test_vo_store_get_vos(ops_portal):
vo_store = glue.VOStore(
ops_portal_url="https://example.com", httpx_client=test_client
)
assert vos == vo_store.get_vos()
assert vos == vo_store.update_vos()


def test_vo_store_get_vos_failure():
def test_vo_store_update_vos_failure_is_cached():
test_client = httpx.Client(
transport=httpx.MockTransport(
lambda request: httpx.Response(HTTPStatus.FORBIDDEN, content="foo")
Expand All @@ -82,7 +88,8 @@ def test_vo_store_get_vos_failure():
vo_store = glue.VOStore(
ops_portal_url="https://example.com", httpx_client=test_client
)
assert [] == vo_store.get_vos()
vo_store._vos = ["foo", "bar"]
assert ["foo", "bar"] == vo_store.update_vos()


def test_vo_store_get_disciplines(disciplines_json, discipline):
Expand Down
Loading