Skip to content

Conversation

@TheLydonKing
Copy link
Collaborator

Release Notes:

  • Removed overloaded methods and introduced AuthMethod trait to indicate authentication method. This removes ambiguity with the default parameters and avoids compilation errors.

Closes: #154

@TheLydonKing TheLydonKing self-assigned this Dec 3, 2025
@TheLydonKing TheLydonKing requested a review from dk1844 as a code owner December 3, 2025 09:38
@TheLydonKing TheLydonKing added the enhancement New feature or request label Dec 3, 2025
@github-actions
Copy link

github-actions bot commented Dec 3, 2025

Report: Report: clientLibrary - scala:2.12.17

Metric (instruction) Coverage Threshold Status
Overall 45.58% 43.0%
Changed Files 32.02% 70.0%
File Path Coverage Threshold Status
AuthMethod.scala 50.0% 0.0%
TokenRetrievalClient.scala 14.03% 0.0%

Copy link
Collaborator

@dk1844 dk1844 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code is nice, but with a library we should meet additional standards (see comments below)

* @param caseSensitiveGroups A boolean indicating whether the group prefixes should be treated as case sensitive.
* @return An AccessToken object representing the retrieved access token (JWT) from the login service.
*/
def fetchAccessToken(
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This being a library, we should not just remove API as if it was never there between versions.
The existing API should stay in place with @deprecated annotation (ideally internally calling the new methods and thus be ready for removal in the future).

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, will do

*/
def fetchRefreshToken(username: String, password: String): RefreshToken = {
fetchAccessAndRefreshToken(username, password, List.empty, false)._2
def fetchRefreshToken(authMethod: AuthMethod): RefreshToken = {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Neither the new method nor the existing (which should be present for some time as described above) seem to be covered with unit tests.

That is unfortunate, because the appropriate class TokenRetrievalClientTest already exists and it would be nice to have it covered. I see two options:

  1. You may need to mock the creation of RestTemplate & KerberosRestTemplate (could be done by moving the creation to a method that you override in the test) to write the unit test properly.
  2. A half-measure would be just to mock the fetchToken methods in the class to check if those are receiving expected parameters. Not a complete unit test, but even this would be better than nothing if the option 1 cannot be reasonably done (I believe it should be).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request tested

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Set Groups and Case sensitivity for token retrieval in client lib as optional

3 participants