aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server/sonar-webserver-webapi/src/main/java/org/sonar/server/usertoken/ws/SearchAction.java5
-rw-r--r--server/sonar-webserver-webapi/src/test/java/org/sonar/server/usertoken/ws/SearchActionTest.java18
-rw-r--r--sonar-ws/src/main/protobuf/ws-user_tokens.proto1
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;