From: Wojtek Wajerowicz <115081248+wojciech-wajerowicz-sonarsource@users.noreply.github.com>
Date: Wed, 8 Feb 2023 14:00:03 +0000 (+0100)
Subject: SONAR-18397 Add SCIM protocol DELETE /Users endpoint.
X-Git-Tag: 10.0.0.68432~240
X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=a582f329240c1a204abf3fb611a3194160b7d6ad;p=sonarqube.git
SONAR-18397 Add SCIM protocol DELETE /Users endpoint.
---
diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/scim/ScimUserDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/scim/ScimUserDao.java
index 44fdeb33bc9..9476e7d842d 100644
--- a/server/sonar-db-dao/src/main/java/org/sonar/db/scim/ScimUserDao.java
+++ b/server/sonar-db-dao/src/main/java/org/sonar/db/scim/ScimUserDao.java
@@ -66,4 +66,8 @@ public class ScimUserDao implements Dao {
public void deleteByUserUuid(DbSession dbSession, String userUuid) {
mapper(dbSession).deleteByUserUuid(userUuid);
}
+
+ public void deleteByScimUuid(DbSession dbSession, String scimUuid) {
+ mapper(dbSession).deleteByScimUuid(scimUuid);
+ }
}
diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/scim/ScimUserMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/scim/ScimUserMapper.java
index 5958f3967a0..c850448f0f3 100644
--- a/server/sonar-db-dao/src/main/java/org/sonar/db/scim/ScimUserMapper.java
+++ b/server/sonar-db-dao/src/main/java/org/sonar/db/scim/ScimUserMapper.java
@@ -41,4 +41,6 @@ public interface ScimUserMapper {
int countScimUsers(@Param("query") ScimUserQuery scimUserQuery);
void deleteByUserUuid(@Param("userUuid") String userUuid);
+
+ void deleteByScimUuid(@Param("scimUuid") String scimUuid);
}
diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/scim/ScimUserMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/scim/ScimUserMapper.xml
index 2c99a131fc0..734cbb15a26 100644
--- a/server/sonar-db-dao/src/main/resources/org/sonar/db/scim/ScimUserMapper.xml
+++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/scim/ScimUserMapper.xml
@@ -64,5 +64,9 @@
delete from scim_users where user_uuid = #{userUuid, jdbcType=VARCHAR}
+
+ delete from scim_users where scim_uuid = #{scimUuid, jdbcType=VARCHAR}
+
+
diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/scim/ScimUserDaoTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/scim/ScimUserDaoTest.java
index 26fc9ae6e45..ba7983ef674 100644
--- a/server/sonar-db-dao/src/test/java/org/sonar/db/scim/ScimUserDaoTest.java
+++ b/server/sonar-db-dao/src/test/java/org/sonar/db/scim/ScimUserDaoTest.java
@@ -201,7 +201,7 @@ public class ScimUserDaoTest {
}
@Test
- public void deleteFromUserUuid_shouldDeleteScimUser() {
+ public void deleteByUserUuid_shouldDeleteScimUser() {
ScimUserTestData scimUserTestData = insertScimUser("scimUser");
scimUserDao.deleteByUserUuid(dbSession, scimUserTestData.getUserUuid());
@@ -209,6 +209,21 @@ public class ScimUserDaoTest {
assertThat(scimUserDao.findAll(dbSession)).isEmpty();
}
+ @Test
+ public void deleteByScimUuid_shouldDeleteScimUser() {
+ ScimUserTestData scimUserTestData = insertScimUser("scimUser");
+ ScimUserTestData scimUserTestData2 = insertScimUser("scimUser2");
+
+ scimUserDao.deleteByScimUuid(dbSession, scimUserTestData.getScimUserUuid());
+
+ List remainingUsers = scimUserDao.findAll(dbSession);
+ assertThat(remainingUsers).hasSize(1);
+
+ ScimUserDto remainingUser = remainingUsers.get(0);
+ assertThat(remainingUser.getScimUserUuid()).isEqualTo(scimUserTestData2.scimUserUuid);
+ assertThat(remainingUser.getUserUuid()).isEqualTo(scimUserTestData2.userUuid);
+ }
+
@Test
public void deleteFromUserUuid_shouldNotFail_whenNoUser() {
assertThatCode(() -> scimUserDao.deleteByUserUuid(dbSession, randomAlphanumeric(6))).doesNotThrowAnyException();