diff --git a/sw360/releases.py b/sw360/releases.py index e5aec8c..f674bce 100644 --- a/sw360/releases.py +++ b/sw360/releases.py @@ -35,7 +35,7 @@ def __get_releases_filtered( :type page_size: int :param sort: sort order for the releases :type sort: SortParam - :return: list of releases + :return: response from API :rtype: list of JSON release objects :raises SW360Error: if there is a negative HTTP response """ @@ -53,12 +53,7 @@ def __get_releases_filtered( else: resp = self.api_get(full_url) - if (resp and - "_embedded" in resp and - "sw360:releases" in resp["_embedded"]): - return resp["_embedded"]["sw360:releases"] - - return [] + return resp def get_release(self, release_id: str) -> Optional[Dict[str, Any]]: """Get information of about a release @@ -128,9 +123,14 @@ def get_releases_by_name( else: sort = ReleaseSortColumn.VERSION.desc() - return self.__get_releases_filtered(url_with_param, page, page_size, + resp = self.__get_releases_filtered(url_with_param, page, page_size, sort) + if resp and ("_embedded" in resp) and ("sw360:releases" in resp["_embedded"]): + return resp["_embedded"]["sw360:releases"] + + return [] + # return type List[Dict[str, Any]] | Optional[Dict[str, Any]] for Python 3.11 is good, # Union[List[Dict[str, Any]], Optional[Dict[str, Any]]] for lower Python versions is not good def get_all_releases( @@ -175,9 +175,14 @@ def get_all_releases( if sort is None: sort = ReleaseSortColumn.NAME.asc() - return self.__get_releases_filtered(url_with_param, page, page_size, + resp = self.__get_releases_filtered(url_with_param, page, page_size, sort) + if page == -1 and resp and ("_embedded" in resp) and ("sw360:releases" in resp["_embedded"]): + return resp["_embedded"]["sw360:releases"] + + return resp + def get_releases_by_external_id(self, ext_id_name: str, ext_id_value: str = "") -> List[Dict[str, Any]]: """Get releases by external id. `ext_id_value` can be left blank to search for all releases with `ext_id_name`. diff --git a/tests/test_sw360_releases.py b/tests/test_sw360_releases.py index 183e8ca..772316e 100644 --- a/tests/test_sw360_releases.py +++ b/tests/test_sw360_releases.py @@ -313,8 +313,9 @@ def test_get_all_releases_with_paging_and_sorting(self) -> None: releases = lib.get_all_releases(page=2, page_size=5, sort=ReleaseSortColumn.NAME.asc()) self.assertIsNotNone(releases) self.assertTrue(len(releases) > 0) - self.assertEqual("Tethys.Logging", releases[0]["name"]) - self.assertEqual("1.3.0", releases[0]["version"]) + rel = releases["_embedded"]["sw360:releases"] + self.assertEqual("Tethys.Logging", rel[0]["name"]) + self.assertEqual("1.3.0", rel[0]["version"]) @responses.activate def test_get_releases_by_external_id(self) -> None: