Skip to content

Commit

Permalink
Make /sciencemesh/find-accepted-users response consistent with delete…
Browse files Browse the repository at this point in the history
… user parameters (#3958)

* make /sciencemesh/find-accepted response consistent with delete users reponse

* add changelog

* fix intergration tests
  • Loading branch information
gmgigi96 authored Jun 8, 2023
1 parent 39d8c23 commit 84ed9ad
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 11 deletions.
4 changes: 4 additions & 0 deletions changelog/unreleased/find-accepted-users-response.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Enhancement: Make `/sciencemesh/find-accepted-users` response
consistent with delete user parameters

https://github.com/cs3org/reva/pull/3958
19 changes: 18 additions & 1 deletion internal/http/services/sciencemesh/token.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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) {
Expand All @@ -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
}
Expand Down
39 changes: 29 additions & 10 deletions tests/integration/grpc/ocm_invitation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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)
Expand All @@ -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
}
Expand Down Expand Up @@ -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())
})
})

Expand All @@ -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())
})
})

Expand All @@ -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())
})
})

Expand All @@ -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))
Expand All @@ -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())
})
})

Expand Down

0 comments on commit 84ed9ad

Please sign in to comment.