From ef1530aee9a03a0aa9537af46ed27c0e67530523 Mon Sep 17 00:00:00 2001 From: Aditya Agarwal Date: Thu, 13 Jun 2024 16:06:10 +0200 Subject: [PATCH 1/3] feat: add block user feature --- .../getstream/chat/java/models/BlockUser.java | 153 ++++++++++++++++++ .../io/getstream/chat/java/models/User.java | 4 + .../chat/java/services/BlockUserService.java | 27 ++++ .../io/getstream/chat/java/BlockUserTest.java | 58 +++++++ 4 files changed, 242 insertions(+) create mode 100644 src/main/java/io/getstream/chat/java/models/BlockUser.java create mode 100644 src/main/java/io/getstream/chat/java/services/BlockUserService.java create mode 100644 src/test/java/io/getstream/chat/java/BlockUserTest.java diff --git a/src/main/java/io/getstream/chat/java/models/BlockUser.java b/src/main/java/io/getstream/chat/java/models/BlockUser.java new file mode 100644 index 000000000..83d1d71da --- /dev/null +++ b/src/main/java/io/getstream/chat/java/models/BlockUser.java @@ -0,0 +1,153 @@ +package io.getstream.chat.java.models; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.getstream.chat.java.models.framework.StreamRequest; +import io.getstream.chat.java.models.framework.StreamResponseObject; +import io.getstream.chat.java.services.BlockUserService; +import io.getstream.chat.java.services.UserService; +import io.getstream.chat.java.services.framework.Client; +import lombok.*; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import retrofit2.Call; + +import java.util.Date; +import java.util.List; + +@Data +@NoArgsConstructor +public class BlockUser { + + @Builder( + builderClassName = "BlockUserRequest", + builderMethodName = "", + buildMethodName = "internalBuild" + ) + public static class BlockUserRequestData { + @NotNull + @JsonProperty("blocked_user_id") + private String blockedUserID; + + @NotNull + @JsonProperty("user_id") + private String userID; + + public static class BlockUserRequest extends StreamRequest { + @Override + protected Call generateCall(Client client) { + var data = this.internalBuild(); + return client.create(BlockUserService.class).blockUser(data); + } + } + } + + @Builder( + builderClassName = "UnblockUserRequest", + builderMethodName = "", + buildMethodName = "internalBuild" + ) + public static class UnblockUserRequestData { + @NotNull + @JsonProperty("blocked_user_id") + private String blockedUserID; + + @NotNull + @JsonProperty("user_id") + private String userID; + + public static class UnblockUserRequest extends StreamRequest { + @Override + protected Call generateCall(Client client) { + var data = this.internalBuild(); + return client.create(BlockUserService.class).unblockUser(data); + } + } + } + + @NotNull + public static BlockUserRequestData.BlockUserRequest blockUser() { + return new BlockUserRequestData.BlockUserRequest(); + } + + @NotNull + public static UnblockUserRequestData.UnblockUserRequest unblockUser() { + return new UnblockUserRequestData.UnblockUserRequest(); + } + + @Data + @EqualsAndHashCode(callSuper = true) + @NoArgsConstructor + public static class BlockUserResponse extends StreamResponseObject { + @JsonProperty("blocked_by_user_id") + private String blockedByUserID; + + @JsonProperty("blocked_user_id") + private String blockedUserID; + + @JsonProperty("created_at") + private Date createdAt; + } + + @Data + @EqualsAndHashCode(callSuper = true) + @NoArgsConstructor + public static class UnblockUserResponse extends StreamResponseObject { + // Add relevant fields if needed + } + + @Data + @EqualsAndHashCode(callSuper = true) + @NoArgsConstructor + public static class GetBlockedUsersResponse extends StreamResponseObject { + @JsonProperty("blocks") + private List blockedUsers; + } + + @Data + @NoArgsConstructor + public static class BlockedUserResponse { + @JsonProperty("user") + private User blockedByUser; + + @JsonProperty("user_id") + private String blockedByUserID; + + @JsonProperty("blocked_user") + private User blockedUser; + + @JsonProperty("blocked_user_id") + private String blockedUserID; + + @JsonProperty("created_at") + private Date createdAt; + } + + @Builder( + builderClassName = "GetBlockedUsersRequest", + builderMethodName = "", + buildMethodName = "internalBuild" + ) + public static class GetBlockedUsersRequestData { + @NotNull + @JsonProperty("user_id") + private String blockedByUserID; + + public static class GetBlockedUsersRequest extends StreamRequest { + private String blockedByUserID; + + public GetBlockedUsersRequest(String blockedByUserID) { + this.blockedByUserID = blockedByUserID; + } + + @Override + protected Call generateCall(Client client) { + return client.create(BlockUserService.class).getBlockedUsers(blockedByUserID); + } + } + } + + @NotNull + public static GetBlockedUsersRequestData.GetBlockedUsersRequest getBlockedUsers(String blockedByUserID) { + return new GetBlockedUsersRequestData.GetBlockedUsersRequest(blockedByUserID); + } +} diff --git a/src/main/java/io/getstream/chat/java/models/User.java b/src/main/java/io/getstream/chat/java/models/User.java index f37afc8c9..f62bbb221 100644 --- a/src/main/java/io/getstream/chat/java/models/User.java +++ b/src/main/java/io/getstream/chat/java/models/User.java @@ -119,6 +119,10 @@ public Map getAdditionalFields() { return this.additionalFields; } + @Nullable + @JsonProperty("blocked_user_ids") + private List blockedUserIDs; + @JsonAnySetter public void setAdditionalField(String name, Object value) { this.additionalFields.put(name, value); diff --git a/src/main/java/io/getstream/chat/java/services/BlockUserService.java b/src/main/java/io/getstream/chat/java/services/BlockUserService.java new file mode 100644 index 000000000..5b2f48e56 --- /dev/null +++ b/src/main/java/io/getstream/chat/java/services/BlockUserService.java @@ -0,0 +1,27 @@ +package io.getstream.chat.java.services; + +import io.getstream.chat.java.models.BlockUser; +import io.getstream.chat.java.models.BlockUser.BlockUserResponse; +import io.getstream.chat.java.models.BlockUser.GetBlockedUsersResponse; +import io.getstream.chat.java.models.BlockUser.BlockUserRequestData.BlockUserRequest; +import io.getstream.chat.java.models.BlockUser.GetBlockedUsersRequestData.GetBlockedUsersRequest; +import io.getstream.chat.java.models.BlockUser.UnblockUserRequestData.UnblockUserRequest; +import io.getstream.chat.java.models.framework.StreamResponseObject; + +import org.jetbrains.annotations.NotNull; +import retrofit2.Call; +import retrofit2.http.Body; +import retrofit2.http.POST; +import retrofit2.http.GET; +import retrofit2.http.Query; + +public interface BlockUserService { + @POST("users/block") + Call blockUser(@NotNull @Body BlockUser.BlockUserRequestData data); + + @POST("users/unblock") + Call unblockUser(@NotNull @Body BlockUser.UnblockUserRequestData data); + + @GET("users/block") + Call getBlockedUsers(@Query("user_id") String blockedByUserID); +} diff --git a/src/test/java/io/getstream/chat/java/BlockUserTest.java b/src/test/java/io/getstream/chat/java/BlockUserTest.java new file mode 100644 index 000000000..ca6eb39b8 --- /dev/null +++ b/src/test/java/io/getstream/chat/java/BlockUserTest.java @@ -0,0 +1,58 @@ +package io.getstream.chat.java; + +import io.getstream.chat.java.models.*; +import io.getstream.chat.java.models.BlockUser.*; +import io.getstream.chat.java.models.Message.MessageRequestObject; +import io.getstream.chat.java.models.Sort.Direction; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +public class BlockUserTest extends BasicTest { + @Test + @DisplayName("Block User") + void blockUserGetUnBlock() { + Assertions.assertDoesNotThrow( + () -> { + var channel = Assertions.assertDoesNotThrow(BasicTest::createRandomChannel).getChannel(); + Assertions.assertNotNull(channel); + + var blockingUser = testUsersRequestObjects.get(0); + var blockedUser = testUsersRequestObjects.get(1); + BlockUser.BlockUserRequestData.BlockUserRequest blockRequest = BlockUser.blockUser() + .blockedUserID(blockedUser.getId()) + .userID(blockingUser.getId()); + BlockUser.BlockUserResponse blockResponse = blockRequest.request(); + Assertions.assertEquals(blockResponse.getBlockedByUserID(), blockingUser.getId()); + Assertions.assertEquals(blockResponse.getBlockedUserID(), blockedUser.getId()); + Assertions.assertNotNull(blockResponse.getCreatedAt()); + + BlockUser.GetBlockedUsersRequestData.GetBlockedUsersRequest getBlockedUsersRequest = BlockUser.getBlockedUsers(blockingUser.getId()); + + BlockUser.GetBlockedUsersResponse getBlockedUsersResponse = getBlockedUsersRequest.request(); + Assertions.assertFalse(getBlockedUsersResponse.getBlockedUsers().isEmpty()); + Assertions.assertEquals(getBlockedUsersResponse.getBlockedUsers().get(0).getBlockedUserID(), blockedUser.getId()); + + var users=User.list().filterCondition("id", blockingUser.getId()).request(); + Assertions.assertNotNull(users.getUsers().get(0).getBlockedUserIDs()); + Assertions.assertEquals(users.getUsers().get(0).getBlockedUserIDs().get(0), blockedUser.getId()); + + // Unblocking the user + BlockUser.UnblockUserRequestData.UnblockUserRequest unblockRequest = BlockUser.unblockUser() + .blockedUserID(blockedUser.getId()) + .userID(blockingUser.getId()); + + BlockUser.UnblockUserResponse unblockResponse = unblockRequest.request(); + Assertions.assertNotNull(unblockResponse); + + // Verify user is unblocked + getBlockedUsersRequest = BlockUser.getBlockedUsers(blockingUser.getId()); + + getBlockedUsersResponse = getBlockedUsersRequest.request(); + Assertions.assertTrue(getBlockedUsersResponse.getBlockedUsers().isEmpty()); + + users=User.list().filterCondition("id", blockingUser.getId()).request(); + Assertions.assertTrue(users.getUsers().get(0).getBlockedUserIDs() == null || users.getUsers().get(0).getBlockedUserIDs().isEmpty()); + }); + } +} From ed4c5828b3e261bb7d342c22cd82fcad5589ec81 Mon Sep 17 00:00:00 2001 From: Aditya Agarwal Date: Thu, 13 Jun 2024 16:08:11 +0200 Subject: [PATCH 2/3] fix: unused comments --- src/main/java/io/getstream/chat/java/models/BlockUser.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/io/getstream/chat/java/models/BlockUser.java b/src/main/java/io/getstream/chat/java/models/BlockUser.java index 83d1d71da..0254f3bab 100644 --- a/src/main/java/io/getstream/chat/java/models/BlockUser.java +++ b/src/main/java/io/getstream/chat/java/models/BlockUser.java @@ -92,7 +92,6 @@ public static class BlockUserResponse extends StreamResponseObject { @EqualsAndHashCode(callSuper = true) @NoArgsConstructor public static class UnblockUserResponse extends StreamResponseObject { - // Add relevant fields if needed } @Data From d1d33cf6ade27081a0237ee2d0343b798d3ed58b Mon Sep 17 00:00:00 2001 From: Aditya Agarwal Date: Thu, 13 Jun 2024 16:12:11 +0200 Subject: [PATCH 3/3] fix: lint --- .../getstream/chat/java/models/BlockUser.java | 242 +++++++++--------- .../chat/java/services/BlockUserService.java | 10 +- .../io/getstream/chat/java/BlockUserTest.java | 77 +++--- 3 files changed, 162 insertions(+), 167 deletions(-) diff --git a/src/main/java/io/getstream/chat/java/models/BlockUser.java b/src/main/java/io/getstream/chat/java/models/BlockUser.java index 0254f3bab..d0f1f7430 100644 --- a/src/main/java/io/getstream/chat/java/models/BlockUser.java +++ b/src/main/java/io/getstream/chat/java/models/BlockUser.java @@ -4,149 +4,143 @@ import io.getstream.chat.java.models.framework.StreamRequest; import io.getstream.chat.java.models.framework.StreamResponseObject; import io.getstream.chat.java.services.BlockUserService; -import io.getstream.chat.java.services.UserService; import io.getstream.chat.java.services.framework.Client; +import java.util.Date; +import java.util.List; import lombok.*; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import retrofit2.Call; -import java.util.Date; -import java.util.List; - @Data @NoArgsConstructor public class BlockUser { - @Builder( - builderClassName = "BlockUserRequest", - builderMethodName = "", - buildMethodName = "internalBuild" - ) - public static class BlockUserRequestData { - @NotNull - @JsonProperty("blocked_user_id") - private String blockedUserID; - - @NotNull - @JsonProperty("user_id") - private String userID; - - public static class BlockUserRequest extends StreamRequest { - @Override - protected Call generateCall(Client client) { - var data = this.internalBuild(); - return client.create(BlockUserService.class).blockUser(data); - } - } - } - - @Builder( - builderClassName = "UnblockUserRequest", - builderMethodName = "", - buildMethodName = "internalBuild" - ) - public static class UnblockUserRequestData { - @NotNull - @JsonProperty("blocked_user_id") - private String blockedUserID; - - @NotNull - @JsonProperty("user_id") - private String userID; - - public static class UnblockUserRequest extends StreamRequest { - @Override - protected Call generateCall(Client client) { - var data = this.internalBuild(); - return client.create(BlockUserService.class).unblockUser(data); - } - } - } - + @Builder( + builderClassName = "BlockUserRequest", + builderMethodName = "", + buildMethodName = "internalBuild") + public static class BlockUserRequestData { @NotNull - public static BlockUserRequestData.BlockUserRequest blockUser() { - return new BlockUserRequestData.BlockUserRequest(); - } + @JsonProperty("blocked_user_id") + private String blockedUserID; @NotNull - public static UnblockUserRequestData.UnblockUserRequest unblockUser() { - return new UnblockUserRequestData.UnblockUserRequest(); - } - - @Data - @EqualsAndHashCode(callSuper = true) - @NoArgsConstructor - public static class BlockUserResponse extends StreamResponseObject { - @JsonProperty("blocked_by_user_id") - private String blockedByUserID; - - @JsonProperty("blocked_user_id") - private String blockedUserID; - - @JsonProperty("created_at") - private Date createdAt; + @JsonProperty("user_id") + private String userID; + + public static class BlockUserRequest extends StreamRequest { + @Override + protected Call generateCall(Client client) { + var data = this.internalBuild(); + return client.create(BlockUserService.class).blockUser(data); + } } + } - @Data - @EqualsAndHashCode(callSuper = true) - @NoArgsConstructor - public static class UnblockUserResponse extends StreamResponseObject { - } + @Builder( + builderClassName = "UnblockUserRequest", + builderMethodName = "", + buildMethodName = "internalBuild") + public static class UnblockUserRequestData { + @NotNull + @JsonProperty("blocked_user_id") + private String blockedUserID; - @Data - @EqualsAndHashCode(callSuper = true) - @NoArgsConstructor - public static class GetBlockedUsersResponse extends StreamResponseObject { - @JsonProperty("blocks") - private List blockedUsers; + @NotNull + @JsonProperty("user_id") + private String userID; + + public static class UnblockUserRequest extends StreamRequest { + @Override + protected Call generateCall(Client client) { + var data = this.internalBuild(); + return client.create(BlockUserService.class).unblockUser(data); + } } + } + + @NotNull + public static BlockUserRequestData.BlockUserRequest blockUser() { + return new BlockUserRequestData.BlockUserRequest(); + } + + @NotNull + public static UnblockUserRequestData.UnblockUserRequest unblockUser() { + return new UnblockUserRequestData.UnblockUserRequest(); + } + + @Data + @EqualsAndHashCode(callSuper = true) + @NoArgsConstructor + public static class BlockUserResponse extends StreamResponseObject { + @JsonProperty("blocked_by_user_id") + private String blockedByUserID; + + @JsonProperty("blocked_user_id") + private String blockedUserID; + + @JsonProperty("created_at") + private Date createdAt; + } + + @Data + @EqualsAndHashCode(callSuper = true) + @NoArgsConstructor + public static class UnblockUserResponse extends StreamResponseObject {} + + @Data + @EqualsAndHashCode(callSuper = true) + @NoArgsConstructor + public static class GetBlockedUsersResponse extends StreamResponseObject { + @JsonProperty("blocks") + private List blockedUsers; + } + + @Data + @NoArgsConstructor + public static class BlockedUserResponse { + @JsonProperty("user") + private User blockedByUser; + + @JsonProperty("user_id") + private String blockedByUserID; + + @JsonProperty("blocked_user") + private User blockedUser; + + @JsonProperty("blocked_user_id") + private String blockedUserID; + + @JsonProperty("created_at") + private Date createdAt; + } + + @Builder( + builderClassName = "GetBlockedUsersRequest", + builderMethodName = "", + buildMethodName = "internalBuild") + public static class GetBlockedUsersRequestData { + @NotNull + @JsonProperty("user_id") + private String blockedByUserID; - @Data - @NoArgsConstructor - public static class BlockedUserResponse { - @JsonProperty("user") - private User blockedByUser; - - @JsonProperty("user_id") - private String blockedByUserID; - - @JsonProperty("blocked_user") - private User blockedUser; - - @JsonProperty("blocked_user_id") - private String blockedUserID; + public static class GetBlockedUsersRequest extends StreamRequest { + private String blockedByUserID; - @JsonProperty("created_at") - private Date createdAt; - } + public GetBlockedUsersRequest(String blockedByUserID) { + this.blockedByUserID = blockedByUserID; + } - @Builder( - builderClassName = "GetBlockedUsersRequest", - builderMethodName = "", - buildMethodName = "internalBuild" - ) - public static class GetBlockedUsersRequestData { - @NotNull - @JsonProperty("user_id") - private String blockedByUserID; - - public static class GetBlockedUsersRequest extends StreamRequest { - private String blockedByUserID; - - public GetBlockedUsersRequest(String blockedByUserID) { - this.blockedByUserID = blockedByUserID; - } - - @Override - protected Call generateCall(Client client) { - return client.create(BlockUserService.class).getBlockedUsers(blockedByUserID); - } - } + @Override + protected Call generateCall(Client client) { + return client.create(BlockUserService.class).getBlockedUsers(blockedByUserID); + } } + } - @NotNull - public static GetBlockedUsersRequestData.GetBlockedUsersRequest getBlockedUsers(String blockedByUserID) { - return new GetBlockedUsersRequestData.GetBlockedUsersRequest(blockedByUserID); - } + @NotNull + public static GetBlockedUsersRequestData.GetBlockedUsersRequest getBlockedUsers( + String blockedByUserID) { + return new GetBlockedUsersRequestData.GetBlockedUsersRequest(blockedByUserID); + } } diff --git a/src/main/java/io/getstream/chat/java/services/BlockUserService.java b/src/main/java/io/getstream/chat/java/services/BlockUserService.java index 5b2f48e56..8af4fada0 100644 --- a/src/main/java/io/getstream/chat/java/services/BlockUserService.java +++ b/src/main/java/io/getstream/chat/java/services/BlockUserService.java @@ -3,16 +3,11 @@ import io.getstream.chat.java.models.BlockUser; import io.getstream.chat.java.models.BlockUser.BlockUserResponse; import io.getstream.chat.java.models.BlockUser.GetBlockedUsersResponse; -import io.getstream.chat.java.models.BlockUser.BlockUserRequestData.BlockUserRequest; -import io.getstream.chat.java.models.BlockUser.GetBlockedUsersRequestData.GetBlockedUsersRequest; -import io.getstream.chat.java.models.BlockUser.UnblockUserRequestData.UnblockUserRequest; -import io.getstream.chat.java.models.framework.StreamResponseObject; - import org.jetbrains.annotations.NotNull; import retrofit2.Call; import retrofit2.http.Body; -import retrofit2.http.POST; import retrofit2.http.GET; +import retrofit2.http.POST; import retrofit2.http.Query; public interface BlockUserService { @@ -20,7 +15,8 @@ public interface BlockUserService { Call blockUser(@NotNull @Body BlockUser.BlockUserRequestData data); @POST("users/unblock") - Call unblockUser(@NotNull @Body BlockUser.UnblockUserRequestData data); + Call unblockUser( + @NotNull @Body BlockUser.UnblockUserRequestData data); @GET("users/block") Call getBlockedUsers(@Query("user_id") String blockedByUserID); diff --git a/src/test/java/io/getstream/chat/java/BlockUserTest.java b/src/test/java/io/getstream/chat/java/BlockUserTest.java index ca6eb39b8..4ac32d7d6 100644 --- a/src/test/java/io/getstream/chat/java/BlockUserTest.java +++ b/src/test/java/io/getstream/chat/java/BlockUserTest.java @@ -2,8 +2,6 @@ import io.getstream.chat.java.models.*; import io.getstream.chat.java.models.BlockUser.*; -import io.getstream.chat.java.models.Message.MessageRequestObject; -import io.getstream.chat.java.models.Sort.Direction; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -19,40 +17,47 @@ void blockUserGetUnBlock() { var blockingUser = testUsersRequestObjects.get(0); var blockedUser = testUsersRequestObjects.get(1); - BlockUser.BlockUserRequestData.BlockUserRequest blockRequest = BlockUser.blockUser() - .blockedUserID(blockedUser.getId()) - .userID(blockingUser.getId()); - BlockUser.BlockUserResponse blockResponse = blockRequest.request(); - Assertions.assertEquals(blockResponse.getBlockedByUserID(), blockingUser.getId()); - Assertions.assertEquals(blockResponse.getBlockedUserID(), blockedUser.getId()); - Assertions.assertNotNull(blockResponse.getCreatedAt()); - - BlockUser.GetBlockedUsersRequestData.GetBlockedUsersRequest getBlockedUsersRequest = BlockUser.getBlockedUsers(blockingUser.getId()); - - BlockUser.GetBlockedUsersResponse getBlockedUsersResponse = getBlockedUsersRequest.request(); - Assertions.assertFalse(getBlockedUsersResponse.getBlockedUsers().isEmpty()); - Assertions.assertEquals(getBlockedUsersResponse.getBlockedUsers().get(0).getBlockedUserID(), blockedUser.getId()); - - var users=User.list().filterCondition("id", blockingUser.getId()).request(); - Assertions.assertNotNull(users.getUsers().get(0).getBlockedUserIDs()); - Assertions.assertEquals(users.getUsers().get(0).getBlockedUserIDs().get(0), blockedUser.getId()); - - // Unblocking the user - BlockUser.UnblockUserRequestData.UnblockUserRequest unblockRequest = BlockUser.unblockUser() - .blockedUserID(blockedUser.getId()) - .userID(blockingUser.getId()); - - BlockUser.UnblockUserResponse unblockResponse = unblockRequest.request(); - Assertions.assertNotNull(unblockResponse); - - // Verify user is unblocked - getBlockedUsersRequest = BlockUser.getBlockedUsers(blockingUser.getId()); - - getBlockedUsersResponse = getBlockedUsersRequest.request(); - Assertions.assertTrue(getBlockedUsersResponse.getBlockedUsers().isEmpty()); - - users=User.list().filterCondition("id", blockingUser.getId()).request(); - Assertions.assertTrue(users.getUsers().get(0).getBlockedUserIDs() == null || users.getUsers().get(0).getBlockedUserIDs().isEmpty()); + BlockUser.BlockUserRequestData.BlockUserRequest blockRequest = + BlockUser.blockUser().blockedUserID(blockedUser.getId()).userID(blockingUser.getId()); + BlockUser.BlockUserResponse blockResponse = blockRequest.request(); + Assertions.assertEquals(blockResponse.getBlockedByUserID(), blockingUser.getId()); + Assertions.assertEquals(blockResponse.getBlockedUserID(), blockedUser.getId()); + Assertions.assertNotNull(blockResponse.getCreatedAt()); + + BlockUser.GetBlockedUsersRequestData.GetBlockedUsersRequest getBlockedUsersRequest = + BlockUser.getBlockedUsers(blockingUser.getId()); + + BlockUser.GetBlockedUsersResponse getBlockedUsersResponse = + getBlockedUsersRequest.request(); + Assertions.assertFalse(getBlockedUsersResponse.getBlockedUsers().isEmpty()); + Assertions.assertEquals( + getBlockedUsersResponse.getBlockedUsers().get(0).getBlockedUserID(), + blockedUser.getId()); + + var users = User.list().filterCondition("id", blockingUser.getId()).request(); + Assertions.assertNotNull(users.getUsers().get(0).getBlockedUserIDs()); + Assertions.assertEquals( + users.getUsers().get(0).getBlockedUserIDs().get(0), blockedUser.getId()); + + // Unblocking the user + BlockUser.UnblockUserRequestData.UnblockUserRequest unblockRequest = + BlockUser.unblockUser() + .blockedUserID(blockedUser.getId()) + .userID(blockingUser.getId()); + + BlockUser.UnblockUserResponse unblockResponse = unblockRequest.request(); + Assertions.assertNotNull(unblockResponse); + + // Verify user is unblocked + getBlockedUsersRequest = BlockUser.getBlockedUsers(blockingUser.getId()); + + getBlockedUsersResponse = getBlockedUsersRequest.request(); + Assertions.assertTrue(getBlockedUsersResponse.getBlockedUsers().isEmpty()); + + users = User.list().filterCondition("id", blockingUser.getId()).request(); + Assertions.assertTrue( + users.getUsers().get(0).getBlockedUserIDs() == null + || users.getUsers().get(0).getBlockedUserIDs().isEmpty()); }); } }