Skip to content

Commit 539663f

Browse files
[CHA-663] - Support for team based roles (#176)
* support for team based roles * removed commit linter * fixed format_with_docker * fixing tests --------- Co-authored-by: Ali Momen Sani <[email protected]>
1 parent c483494 commit 539663f

File tree

5 files changed

+96
-4
lines changed

5 files changed

+96
-4
lines changed

.github/workflows/ci.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@ jobs:
1616
with:
1717
fetch-depth: 0
1818

19-
- name: Commit message lint
20-
uses: wagoid/commitlint-github-action@v4
21-
2219
- name: Test
2320
env:
2421
STREAM_KEY: ${{ secrets.STREAM_KEY }}

Dockerfile

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
FROM amazoncorretto:11
2+
3+
WORKDIR /code
4+
5+
# Copy the Gradle wrapper files
6+
COPY gradlew .
7+
COPY gradle gradle/
8+
COPY build.gradle .
9+
COPY settings.gradle .
10+
11+
# Make gradlew executable
12+
RUN chmod +x gradlew
13+
14+
CMD ["sh", "-c", "./gradlew :spotlessApply"]

Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@ test_with_docker:
1111
docker run -t -i -w /code -v $(PWD):/code --env-file .env amazoncorretto:17 sh -c "sh ./gradlew test"
1212

1313
format_with_docker:
14-
docker run -t -i -w /code -v $(PWD):/code amazoncorretto:17 sh -c "sh ./gradlew :spotlessApply"
14+
docker build -t stream-chat-java-formatter . && \
15+
docker run -v $(PWD):/code stream-chat-java-formatter

src/main/java/io/getstream/chat/java/models/User.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ public class User {
5959
@JsonProperty("teams")
6060
private List<String> teams;
6161

62+
@JsonProperty("teams_role")
63+
private Map<String, String> teamsRole;
64+
6265
@NotNull
6366
@JsonProperty("online")
6467
private Boolean online;
@@ -219,6 +222,10 @@ public static class OwnUser {
219222
@JsonProperty("role")
220223
private String role;
221224

225+
@Nullable
226+
@JsonProperty("teams_role")
227+
private Map<String, String> teamsRole;
228+
222229
@Nullable
223230
@JsonProperty("roles")
224231
private List<String> roles;
@@ -361,6 +368,10 @@ public static class UserRequestObject {
361368
@JsonProperty("teams")
362369
private List<String> teams;
363370

371+
@Nullable
372+
@JsonProperty("teams_role")
373+
private Map<String, String> teamsRole;
374+
364375
@Singular @Nullable @JsonIgnore private Map<String, Object> additionalFields;
365376

366377
@JsonAnyGetter

src/test/java/io/getstream/chat/java/UserTest.java

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,33 @@ void whenParsingNotDefinedLanguage_thenUnknown() {
7171
Assertions.assertEquals(lang, Language.UNKNOWN);
7272
}
7373

74+
@DisplayName("Can create a user with team and teams_role")
75+
@Test
76+
void whenCreatingUserWithTeam_thenNoException() {
77+
var id = RandomStringUtils.randomAlphabetic(10);
78+
var team = "blue";
79+
var role = "admin";
80+
81+
// Create user with team and teams_role
82+
UserUpsertResponse response =
83+
Assertions.assertDoesNotThrow(
84+
() ->
85+
User.upsert()
86+
.user(
87+
UserRequestObject.builder()
88+
.id(id)
89+
.teams(Collections.singletonList(team))
90+
.teamsRole(Collections.singletonMap(team, role))
91+
.build())
92+
.request());
93+
94+
// Verify the user was created with correct team and role
95+
User createdUser = response.getUsers().get(id);
96+
Assertions.assertNotNull(createdUser);
97+
Assertions.assertEquals(team, createdUser.getTeams().get(0));
98+
Assertions.assertEquals(role, createdUser.getTeamsRole().get(team));
99+
}
100+
74101
@DisplayName("Can partial update a user")
75102
@Test
76103
void whenPartiallyUpdatingUser_thenNoException() {
@@ -109,6 +136,48 @@ void whenPartiallyUpdatingUser_thenNoException() {
109136
Assertions.assertEquals(addedValue, updatedUser.getAdditionalFields().get(addedKey));
110137
}
111138

139+
@DisplayName("Can partial update a user with team and teams_role")
140+
@Test
141+
void whenPartiallyUpdatingUserWithTeam_thenNoException() {
142+
// First create a basic user
143+
UserUpsertRequest usersUpsertRequest = User.upsert();
144+
User user =
145+
Assertions.assertDoesNotThrow(
146+
() ->
147+
usersUpsertRequest
148+
.user(
149+
UserRequestObject.builder()
150+
.id(RandomStringUtils.randomAlphabetic(10))
151+
.name("Test User")
152+
.build())
153+
.request())
154+
.getUsers()
155+
.values()
156+
.iterator()
157+
.next();
158+
159+
// Partially update the user with team and teams_role
160+
UserPartialUpdateRequestObject userPartialUpdateRequestObject =
161+
UserPartialUpdateRequestObject.builder()
162+
.id(user.getId())
163+
.setValue("teams", Collections.singletonList("blue"))
164+
.setValue("teams_role", Collections.singletonMap("blue", "admin"))
165+
.build();
166+
167+
User updatedUser =
168+
Assertions.assertDoesNotThrow(
169+
() ->
170+
User.partialUpdate()
171+
.users(Arrays.asList(userPartialUpdateRequestObject))
172+
.request())
173+
.getUsers()
174+
.get(user.getId());
175+
176+
// Verify the changes
177+
Assertions.assertEquals("blue", updatedUser.getTeams().get(0));
178+
Assertions.assertEquals("admin", updatedUser.getTeamsRole().get("blue"));
179+
}
180+
112181
@DisplayName("Can ban user")
113182
@Test
114183
void whenBanUser_thenIsBanned() {

0 commit comments

Comments
 (0)