Skip to content

Commit 01f34d3

Browse files
support for team based roels (#308)
1 parent 9036c50 commit 01f34d3

File tree

2 files changed

+57
-6
lines changed

2 files changed

+57
-6
lines changed

user.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,13 @@ type ReadReceipts struct {
4343
}
4444

4545
type User struct {
46-
ID string `json:"id"`
47-
Name string `json:"name,omitempty"`
48-
Image string `json:"image,omitempty"`
49-
Role string `json:"role,omitempty"`
50-
Teams []string `json:"teams,omitempty"`
51-
Language string `json:"language,omitempty"`
46+
ID string `json:"id"`
47+
Name string `json:"name,omitempty"`
48+
Image string `json:"image,omitempty"`
49+
Role string `json:"role,omitempty"`
50+
Teams []string `json:"teams,omitempty"`
51+
TeamsRole map[string]string `json:"teams_role,omitempty"`
52+
Language string `json:"language,omitempty"`
5253

5354
Online bool `json:"online,omitempty"`
5455
Invisible bool `json:"invisible,omitempty"`

user_test.go

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,28 @@ func TestClient_UpsertUsers(t *testing.T) {
212212
assert.NotEmpty(t, resp.Users[user.ID].UpdatedAt)
213213
}
214214

215+
func TestClient_UpsertUsersWithRoleAndTeamsRole(t *testing.T) {
216+
c := initClient(t)
217+
ctx := context.Background()
218+
219+
user := &User{
220+
ID: randomString(10),
221+
Role: "admin",
222+
Teams: []string{"blue"},
223+
TeamsRole: map[string]string{"blue": "admin"},
224+
}
225+
226+
resp, err := c.UpsertUsers(ctx, user)
227+
require.NoError(t, err, "update users with role and teams_role")
228+
229+
assert.Contains(t, resp.Users, user.ID)
230+
assert.Equal(t, "admin", resp.Users[user.ID].Role)
231+
assert.Equal(t, []string{"blue"}, resp.Users[user.ID].Teams)
232+
assert.Equal(t, map[string]string{"blue": "admin"}, resp.Users[user.ID].TeamsRole)
233+
assert.NotEmpty(t, resp.Users[user.ID].CreatedAt)
234+
assert.NotEmpty(t, resp.Users[user.ID].UpdatedAt)
235+
}
236+
215237
func TestClient_UpdatePrivacySettings(t *testing.T) {
216238
c := initClient(t)
217239
ctx := context.Background()
@@ -337,6 +359,34 @@ func TestClient_PartialUpdatePrivacySettings(t *testing.T) {
337359
require.False(t, partialUpdateResponse.Users[user.ID].PrivacySettings.ReadReceipts.Enabled)
338360
}
339361

362+
func TestClient_PartialUpdateUserWithTeam(t *testing.T) {
363+
c := initClient(t)
364+
ctx := context.Background()
365+
366+
// First create a basic user
367+
user := &User{ID: randomString(10)}
368+
upsertResp, err := c.UpsertUser(ctx, user)
369+
require.NoError(t, err, "create user")
370+
assert.Equal(t, upsertResp.User.ID, user.ID)
371+
372+
// Partially update the user with team and teams_role
373+
update := PartialUserUpdate{
374+
ID: user.ID,
375+
Set: map[string]interface{}{
376+
"teams": []string{"blue"},
377+
"teams_role": map[string]string{"blue": "admin"},
378+
},
379+
}
380+
381+
partialResp, err := c.PartialUpdateUsers(ctx, []PartialUserUpdate{update})
382+
require.NoError(t, err, "partial update user with team")
383+
384+
// Verify the changes
385+
assert.Contains(t, partialResp.Users, user.ID)
386+
assert.Equal(t, []string{"blue"}, partialResp.Users[user.ID].Teams)
387+
assert.Equal(t, map[string]string{"blue": "admin"}, partialResp.Users[user.ID].TeamsRole)
388+
}
389+
340390
func ExampleClient_UpsertUser() {
341391
client, _ := NewClient("XXXX", "XXXX")
342392
ctx := context.Background()

0 commit comments

Comments
 (0)