Skip to content

Commit be0154c

Browse files
committed
feat: Update get_all_release api to include isNewClearingWithSourceAvailable param
1 parent 4d4b8d2 commit be0154c

3 files changed

Lines changed: 41 additions & 1 deletion

File tree

ChangeLog.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,13 @@
55

66
# SW360 Base Library for Python
77

8+
## Upcoming Release
9+
10+
* Update `get_all_releases` to include `isNewClearingWithSourceAvailable` parameter:
11+
* This parameter allows filtering releases that are in the **new clearing** state and have
12+
the source available.
13+
* This feature is yet to be released in the new version of SW360.
14+
815
## V1.7.0
916

1017
* more REST API endpoints implemented:

sw360/releases.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,17 @@ def get_releases_by_name(self, name: str) -> List[Any]:
6464

6565
# return type List[Dict[str, Any]] | Optional[Dict[str, Any]] for Python 3.11 is good,
6666
# Union[List[Dict[str, Any]], Optional[Dict[str, Any]]] for lower Python versions is not good
67-
def get_all_releases(self, fields: str = "", all_details: bool = False, page: int = -1,
67+
def get_all_releases(self, fields: str = "", all_details: bool = False,
68+
isNewClearingWithSourceAvailable: bool = False, page: int = -1,
6869
page_size: int = -1, sort: str = "") -> Any:
6970
"""Get information of about all releases
7071
7172
API endpoint: GET /releases
7273
7374
:param all_details: retrieve all project details (optional))
7475
:type all_details: bool
76+
:param isNewClearingWithSourceAvailable: retrieve releases in new clearning state with source avail
77+
:type isNewClearingWithSourceAvailable: bool
7578
:param page: page to retrieve
7679
:type page: int
7780
:param page_size: page size to use
@@ -86,6 +89,9 @@ def get_all_releases(self, fields: str = "", all_details: bool = False, page: in
8689
if all_details:
8790
full_url = self._add_param(full_url, "allDetails=true")
8891

92+
if isNewClearingWithSourceAvailable:
93+
full_url = self._add_param(full_url, "isNewClearingWithSourceAvailable=true")
94+
8995
if fields:
9096
full_url = self._add_param(full_url, "fields=" + fields)
9197

tests/test_sw360_releases.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,33 @@ def test_get_all_releases(self) -> None:
149149
self.assertEqual("Tethys.Logging", releases[0]["name"])
150150
self.assertEqual("1.3.0", releases[0]["version"])
151151

152+
@responses.activate
153+
def test_get_all_releases_isnewclearing_with_source_available(self) -> None:
154+
"""
155+
Test the 'isNewClearingWithSourceAvailable' parameter in the get_all_releases method.
156+
"""
157+
lib = SW360(self.MYURL, self.MYTOKEN, False)
158+
self._add_login_response()
159+
actual = lib.login_api()
160+
self.assertTrue(actual)
161+
162+
responses.add(
163+
method=responses.GET,
164+
url=self.MYURL + "resource/api/releases?isNewClearingWithSourceAvailable=true",
165+
body='{"_embedded": {"sw360:releases": [{"name": "Tethys.Logging", "version": "1.3.0"}]}}',
166+
status=200,
167+
content_type="application/json",
168+
adding_headers={"Authorization": "Token " + self.MYTOKEN},
169+
)
170+
171+
releases = lib.get_all_releases(isNewClearingWithSourceAvailable=True)
172+
173+
self.assertIsNotNone(releases)
174+
if releases:
175+
self.assertTrue(len(releases) > 0)
176+
self.assertEqual("Tethys.Logging", releases[0]["name"])
177+
self.assertEqual("1.3.0", releases[0]["version"])
178+
152179
@responses.activate
153180
def test_get_all_releases_all_details(self) -> None:
154181
lib = SW360(self.MYURL, self.MYTOKEN, False)

0 commit comments

Comments
 (0)