diff --git a/changelog/unreleased/find-accepted-users-response.md b/changelog/unreleased/find-accepted-users-response.md new file mode 100644 index 0000000000..19ee6a27d5 --- /dev/null +++ b/changelog/unreleased/find-accepted-users-response.md @@ -0,0 +1,4 @@ +Enhancement: Make `/sciencemesh/find-accepted-users` response +consistent with delete user parameters + +https://github.com/cs3org/reva/pull/3958 \ No newline at end of file diff --git a/internal/http/services/sciencemesh/token.go b/internal/http/services/sciencemesh/token.go index 06d9cc382d..4c519c038d 100644 --- a/internal/http/services/sciencemesh/token.go +++ b/internal/http/services/sciencemesh/token.go @@ -35,6 +35,7 @@ import ( ctxpkg "github.com/cs3org/reva/pkg/ctx" "github.com/cs3org/reva/pkg/rgrpc/todo/pool" "github.com/cs3org/reva/pkg/smtpclient" + "github.com/cs3org/reva/pkg/utils/list" ) type tokenHandler struct { @@ -212,6 +213,13 @@ func getAcceptInviteRequest(r *http.Request) (*acceptInviteRequest, error) { return &req, nil } +type remoteUser struct { + DisplayName string `json:"display_name"` + Idp string `json:"idp"` + UserID string `json:"user_id"` + Mail string `json:"mail"` +} + // FindAccepted returns the list of all the users that accepted the invitation // to the authenticated user. func (h *tokenHandler) FindAccepted(w http.ResponseWriter, r *http.Request) { @@ -223,7 +231,16 @@ func (h *tokenHandler) FindAccepted(w http.ResponseWriter, r *http.Request) { return } - if err := json.NewEncoder(w).Encode(res.AcceptedUsers); err != nil { + users := list.Map(res.AcceptedUsers, func(u *userpb.User) *remoteUser { + return &remoteUser{ + DisplayName: u.DisplayName, + Idp: u.Id.Idp, + UserID: u.Id.OpaqueId, + Mail: u.Mail, + } + }) + + if err := json.NewEncoder(w).Encode(users); err != nil { reqres.WriteError(w, r, reqres.APIErrorServerError, "error marshalling token data", err) return } diff --git a/tests/integration/grpc/ocm_invitation_test.go b/tests/integration/grpc/ocm_invitation_test.go index fbaec721f9..be47dcce89 100644 --- a/tests/integration/grpc/ocm_invitation_test.go +++ b/tests/integration/grpc/ocm_invitation_test.go @@ -38,6 +38,7 @@ import ( "github.com/cs3org/reva/pkg/token" jwt "github.com/cs3org/reva/pkg/token/manager/jwt" "github.com/cs3org/reva/pkg/utils" + "github.com/cs3org/reva/pkg/utils/list" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "google.golang.org/grpc/metadata" @@ -335,7 +336,25 @@ var _ = Describe("ocm invitation workflow", func() { return res.StatusCode } - findAccepted := func(revaToken, domain string) ([]*userpb.User, int) { + type remoteUser struct { + DisplayName string `json:"display_name"` + Idp string `json:"idp"` + UserID string `json:"user_id"` + Mail string `json:"mail"` + } + + remoteToCs3User := func(u *remoteUser) *userpb.User { + return &userpb.User{ + Id: &userpb.UserId{ + Idp: u.Idp, + OpaqueId: u.UserID, + }, + DisplayName: u.DisplayName, + Mail: u.Mail, + } + } + + findAccepted := func(revaToken, domain string) ([]*remoteUser, int) { req, err := http.NewRequestWithContext(context.TODO(), http.MethodGet, fmt.Sprintf("http://%s/sciencemesh/find-accepted-users", domain), nil) Expect(err).ToNot(HaveOccurred()) req.Header.Set("x-access-token", revaToken) @@ -344,7 +363,7 @@ var _ = Describe("ocm invitation workflow", func() { Expect(err).ToNot(HaveOccurred()) defer res.Body.Close() - var users []*userpb.User + var users []*remoteUser _ = json.NewDecoder(res.Body).Decode(&users) return users, res.StatusCode } @@ -374,14 +393,14 @@ var _ = Describe("ocm invitation workflow", func() { It("complete the invitation workflow", func() { users, code := findAccepted(tknEinstein, cernboxURL) Expect(code).To(Equal(http.StatusOK)) - Expect(ocmUsersEqual(users, []*userpb.User{})).To(BeTrue()) + Expect(ocmUsersEqual(list.Map(users, remoteToCs3User), []*userpb.User{})).To(BeTrue()) code = acceptInvite(tknMarie, cesnetURL, "cernbox.cern.ch", token) Expect(code).To(Equal(http.StatusOK)) users, code = findAccepted(tknEinstein, cernboxURL) Expect(code).To(Equal(http.StatusOK)) - Expect(ocmUsersEqual(users, []*userpb.User{marie})).To(BeTrue()) + Expect(ocmUsersEqual(list.Map(users, remoteToCs3User), []*userpb.User{marie})).To(BeTrue()) }) }) @@ -402,14 +421,14 @@ var _ = Describe("ocm invitation workflow", func() { It("fails the invitation workflow", func() { users, code := findAccepted(tknEinstein, cernboxURL) Expect(code).To(Equal(http.StatusOK)) - Expect(ocmUsersEqual(users, []*userpb.User{marie})).To(BeTrue()) + Expect(ocmUsersEqual(list.Map(users, remoteToCs3User), []*userpb.User{marie})).To(BeTrue()) code = acceptInvite(tknMarie, cesnetURL, "cernbox.cern.ch", token) Expect(code).To(Equal(http.StatusConflict)) users, code = findAccepted(tknEinstein, cernboxURL) Expect(code).To(Equal(http.StatusOK)) - Expect(ocmUsersEqual(users, []*userpb.User{marie})).To(BeTrue()) + Expect(ocmUsersEqual(list.Map(users, remoteToCs3User), []*userpb.User{marie})).To(BeTrue()) }) }) @@ -436,14 +455,14 @@ var _ = Describe("ocm invitation workflow", func() { It("will not complete the invitation workflow", func() { users, code := findAccepted(tknEinstein, cernboxURL) Expect(code).To(Equal(http.StatusOK)) - Expect(ocmUsersEqual(users, []*userpb.User{})).To(BeTrue()) + Expect(ocmUsersEqual(list.Map(users, remoteToCs3User), []*userpb.User{})).To(BeTrue()) code = acceptInvite(tknMarie, cesnetURL, "cernbox.cern.ch", expiredToken.Token) Expect(code).To(Equal(http.StatusBadRequest)) users, code = findAccepted(tknEinstein, cernboxURL) Expect(code).To(Equal(http.StatusOK)) - Expect(ocmUsersEqual(users, []*userpb.User{})).To(BeTrue()) + Expect(ocmUsersEqual(list.Map(users, remoteToCs3User), []*userpb.User{})).To(BeTrue()) }) }) @@ -461,7 +480,7 @@ var _ = Describe("ocm invitation workflow", func() { It("succeeds", func() { users, code := findAccepted(tknEinstein, cernboxURL) Expect(code).To(Equal(http.StatusOK)) - Expect(ocmUsersEqual(users, []*userpb.User{})).To(BeTrue()) + Expect(ocmUsersEqual(list.Map(users, remoteToCs3User), []*userpb.User{})).To(BeTrue()) ocmToken, code := generateToken(tknEinstein, cernboxURL) Expect(code).To(Equal(http.StatusOK)) @@ -471,7 +490,7 @@ var _ = Describe("ocm invitation workflow", func() { users, code = findAccepted(tknEinstein, cernboxURL) Expect(code).To(Equal(http.StatusOK)) - Expect(ocmUsersEqual(users, []*userpb.User{marie})).To(BeTrue()) + Expect(ocmUsersEqual(list.Map(users, remoteToCs3User), []*userpb.User{marie})).To(BeTrue()) }) })