From 931c6625bcfa56e1279fede9b7b162940489518b Mon Sep 17 00:00:00 2001 From: candiduslynx Date: Sat, 15 Apr 2023 15:21:42 +0300 Subject: [PATCH] Add `email` field to `GroupMember` --- .gitignore | 3 ++ group_members.go | 1 + group_members_test.go | 100 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 104 insertions(+) diff --git a/.gitignore b/.gitignore index 78af853b3..ccf077922 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,6 @@ _testmain.go *.iml *.swp *.swo + +# vendor +vendor \ No newline at end of file diff --git a/group_members.go b/group_members.go index 850b02369..2acff9d83 100644 --- a/group_members.go +++ b/group_members.go @@ -54,6 +54,7 @@ type GroupMember struct { CreatedAt *time.Time `json:"created_at"` ExpiresAt *ISOTime `json:"expires_at"` AccessLevel AccessLevelValue `json:"access_level"` + Email string `json:"email,omitempty"` GroupSAMLIdentity *GroupMemberSAMLIdentity `json:"group_saml_identity"` } diff --git a/group_members_test.go b/group_members_test.go index 519b976fe..6311ce2b4 100644 --- a/group_members_test.go +++ b/group_members_test.go @@ -80,6 +80,106 @@ func TestListBillableGroupMembers(t *testing.T) { assert.Equal(t, want, billableMembers, "Expected returned Groups.ListBillableGroupMembers to equal") } +func TestListGroupMembersWithoutEmail(t *testing.T) { + mux, client := setup(t) + + mux.HandleFunc("/api/v4/groups/1/members", + func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, http.MethodGet) + fmt.Fprint(w, + `[ + { + "id": 1, + "username": "raymond_smith", + "name": "Raymond Smith", + "state": "active", + "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", + "web_url": "http://192.168.1.8:3000/root", + "created_at": "2012-10-21T14:13:35Z", + "expires_at": "2012-10-22", + "access_level": 30, + "group_saml_identity": null + } + ]`) + }) + + members, _, err := client.Groups.ListGroupMembers(1, &ListGroupMembersOptions{}) + if err != nil { + t.Errorf("Groups.ListGroupMembers returned error: %v", err) + } + + createdAt, _ := time.Parse(time.RFC3339, "2012-10-21T14:13:35Z") + expiresAt, _ := time.Parse(time.RFC3339, "2012-10-22T00:00:00Z") + expiresAtISOTime := ISOTime(expiresAt) + want := []*GroupMember{ + { + ID: 1, + Username: "raymond_smith", + Name: "Raymond Smith", + State: "active", + AvatarURL: "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", + WebURL: "http://192.168.1.8:3000/root", + CreatedAt: &createdAt, + ExpiresAt: &expiresAtISOTime, + AccessLevel: 30, + }, + } + if !reflect.DeepEqual(want, members) { + t.Errorf("Groups.ListBillableGroupMembers returned %+v, want %+v", members[0], want[0]) + } +} + +func TestListGroupMembersWithEmail(t *testing.T) { + mux, client := setup(t) + + mux.HandleFunc("/api/v4/groups/1/members", + func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, http.MethodGet) + fmt.Fprint(w, + `[ + { + "id": 1, + "username": "raymond_smith", + "name": "Raymond Smith", + "state": "active", + "avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", + "web_url": "http://192.168.1.8:3000/root", + "created_at": "2012-10-21T14:13:35Z", + "expires_at": "2012-10-22", + "access_level": 30, + "email": "john@example.com", + "group_saml_identity": null + } + ]`) + }) + + members, _, err := client.Groups.ListGroupMembers(1, &ListGroupMembersOptions{}) + if err != nil { + t.Errorf("Groups.ListGroupMembers returned error: %v", err) + } + + createdAt, _ := time.Parse(time.RFC3339, "2012-10-21T14:13:35Z") + expiresAt, _ := time.Parse(time.RFC3339, "2012-10-22T00:00:00Z") + expiresAtISOTime := ISOTime(expiresAt) + want := []*GroupMember{ + { + ID: 1, + Username: "raymond_smith", + Name: "Raymond Smith", + State: "active", + AvatarURL: "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon", + WebURL: "http://192.168.1.8:3000/root", + CreatedAt: &createdAt, + ExpiresAt: &expiresAtISOTime, + AccessLevel: 30, + Email: "john@example.com", + }, + } + if !reflect.DeepEqual(want, members) { + t.Errorf("Groups.ListBillableGroupMembers returned %+v, want %+v", members[0], want[0]) + } +} + func TestListGroupMembersWithoutSAML(t *testing.T) { mux, client := setup(t)