diff options
3 files changed, 23 insertions, 1 deletions
diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usertoken/ws/SearchAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usertoken/ws/SearchAction.java index 653c700e704..f25d5eb1282 100644 --- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usertoken/ws/SearchAction.java +++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usertoken/ws/SearchAction.java @@ -94,7 +94,10 @@ public class SearchAction implements UserTokensWsAction { .setCreatedAt(formatDateTime(userTokenDto.getCreatedAt())) .setType(userTokenDto.getType()); ofNullable(userTokenDto.getLastConnectionDate()).ifPresent(date -> userTokenBuilder.setLastConnectionDate(formatDateTime(date))); - ofNullable(userTokenDto.getExpirationDate()).ifPresent(expirationDate -> userTokenBuilder.setExpirationDate(formatDateTime(expirationDate))); + ofNullable(userTokenDto.getExpirationDate()).ifPresent(expirationDate -> { + userTokenBuilder.setExpirationDate(formatDateTime(expirationDate)); + userTokenBuilder.setIsExpired(userTokenDto.isExpired()); + }); if (!isNullOrEmpty(userTokenDto.getProjectKey()) && !isNullOrEmpty(userTokenDto.getProjectName())) { Project.Builder projectBuilder = newBuilder().getProjectBuilder() diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/usertoken/ws/SearchActionTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/usertoken/ws/SearchActionTest.java index 6b1d152d521..758033f5834 100644 --- a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/usertoken/ws/SearchActionTest.java +++ b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/usertoken/ws/SearchActionTest.java @@ -136,6 +136,24 @@ public class SearchActionTest { } @Test + public void isExpired_is_returned_only_when_expiration_date_is_set() { + UserDto user = db.users().insertUser(); + UserTokenDto token1 = db.users().insertToken(user, t -> t.setExpirationDate(10_000_000_000_000L)); + UserTokenDto token2 = db.users().insertToken(user, t -> t.setExpirationDate(1_000_000_000_000L)); + UserTokenDto token3 = db.users().insertToken(user); + logInAsSystemAdministrator(); + + SearchWsResponse response = newRequest(user.getLogin()); + + assertThat(response.getUserTokensList()) + .extracting(UserToken::getName, UserToken::hasIsExpired, UserToken::getIsExpired) + .containsExactlyInAnyOrder( + tuple(token1.getName(), true, false), + tuple(token2.getName(), true, true), + tuple(token3.getName(), false, false)); + } + + @Test public void fail_when_login_does_not_exist() { logInAsSystemAdministrator(); diff --git a/sonar-ws/src/main/protobuf/ws-user_tokens.proto b/sonar-ws/src/main/protobuf/ws-user_tokens.proto index a96d9551ffd..71dcf70db68 100644 --- a/sonar-ws/src/main/protobuf/ws-user_tokens.proto +++ b/sonar-ws/src/main/protobuf/ws-user_tokens.proto @@ -47,6 +47,7 @@ message SearchWsResponse { optional string type = 4; optional Project project = 5; optional string expirationDate = 6; + optional bool isExpired = 7; message Project { optional string key = 1; |