diff --git a/go.mod b/go.mod index b6607372b78..aa2cd150fab 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ require ( github.com/coreos/go-oidc v2.2.1+incompatible github.com/coreos/go-oidc/v3 v3.4.0 github.com/cs3org/go-cs3apis v0.0.0-20221012090518-ef2996678965 - github.com/cs3org/reva/v2 v2.13.3-0.20230515075524-e00c55c0a4d3 + github.com/cs3org/reva/v2 v2.13.3-0.20230515105000-30125f104ba1 github.com/disintegration/imaging v1.6.2 github.com/dutchcoders/go-clamd v0.0.0-20170520113014-b970184f4d9e github.com/egirna/icap-client v0.1.1 diff --git a/go.sum b/go.sum index ee84597cc89..164f1331040 100644 --- a/go.sum +++ b/go.sum @@ -626,8 +626,8 @@ github.com/crewjam/httperr v0.2.0 h1:b2BfXR8U3AlIHwNeFFvZ+BV1LFvKLlzMjzaTnZMybNo github.com/crewjam/httperr v0.2.0/go.mod h1:Jlz+Sg/XqBQhyMjdDiC+GNNRzZTD7x39Gu3pglZ5oH4= github.com/crewjam/saml v0.4.13 h1:TYHggH/hwP7eArqiXSJUvtOPNzQDyQ7vwmwEqlFWhMc= github.com/crewjam/saml v0.4.13/go.mod h1:igEejV+fihTIlHXYP8zOec3V5A8y3lws5bQBFsTm4gA= -github.com/cs3org/reva/v2 v2.13.3-0.20230515075524-e00c55c0a4d3 h1:6aAwxGKm0PvQDHC0aV/Fq8/JiMfEKAbA2vPOOwfABVs= -github.com/cs3org/reva/v2 v2.13.3-0.20230515075524-e00c55c0a4d3/go.mod h1:MoymB39kU/myG7LFkaCwqtoXQHct+/8uoZAvJEmNi+I= +github.com/cs3org/reva/v2 v2.13.3-0.20230515105000-30125f104ba1 h1:M3+4wZvZolLs90wCjkJYslakQ3JAp/zs16mOwxvieJQ= +github.com/cs3org/reva/v2 v2.13.3-0.20230515105000-30125f104ba1/go.mod h1:MoymB39kU/myG7LFkaCwqtoXQHct+/8uoZAvJEmNi+I= github.com/cubewise-code/go-mime v0.0.0-20200519001935-8c5762b177d8 h1:Z9lwXumT5ACSmJ7WGnFl+OMLLjpz5uR2fyz7dC255FI= github.com/cubewise-code/go-mime v0.0.0-20200519001935-8c5762b177d8/go.mod h1:4abs/jPXcmJzYoYGF91JF9Uq9s/KL5n1jvFDix8KcqY= github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= @@ -1267,6 +1267,8 @@ github.com/maxymania/go-system v0.0.0-20170110133659-647cc364bf0b h1:Q53idHrTuQD github.com/maxymania/go-system v0.0.0-20170110133659-647cc364bf0b/go.mod h1:KirJrATYGbTyUwVR26xIkaipRqRcMRXBf8N5dacvGus= github.com/mendsley/gojwk v0.0.0-20141217222730-4d5ec6e58103 h1:Z/i1e+gTZrmcGeZyWckaLfucYG6KYOXLWo4co8pZYNY= github.com/mendsley/gojwk v0.0.0-20141217222730-4d5ec6e58103/go.mod h1:o9YPB5aGP8ob35Vy6+vyq3P3bWe7NQWzf+JLiXCiMaE= +github.com/micbar/reva/v2 v2.0.0-20230513191305-7e887c838c63 h1:dyZ5M/M1x6NGkMiagInLclbWPWCBycJpc9COtzDTOyM= +github.com/micbar/reva/v2 v2.0.0-20230513191305-7e887c838c63/go.mod h1:MoymB39kU/myG7LFkaCwqtoXQHct+/8uoZAvJEmNi+I= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.40/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= diff --git a/tests/acceptance/features/apiContract/propfind.feature b/tests/acceptance/features/apiContract/propfind.feature index 0033e51e3dc..05690fa605a 100644 --- a/tests/acceptance/features/apiContract/propfind.feature +++ b/tests/acceptance/features/apiContract/propfind.feature @@ -1,4 +1,4 @@ -@api +@api Feature: Propfind test As a user I want to check the PROPFIND response @@ -19,12 +19,12 @@ Feature: Propfind test When user "Alice" sends PROPFIND request to space "new-space" using the WebDAV API Then the HTTP status code should be "207" And the "PROPFIND" response should contain a space "new-space" with these key and value pairs: - | key | value | - | oc:fileid | UUIDof:new-space | - | oc:name | new-space | - | oc:permissions | SRDNVCKZ | - | oc:privatelink | | - | oc:size | 12 | + | key | value | + | oc:fileid | UUIDof:new-space | + | oc:name | new-space | + | oc:permissions | RDNVCKZ | + | oc:privatelink | | + | oc:size | 12 | Scenario Outline: space member with a different role checks the PROPFIND request of a space @@ -43,6 +43,6 @@ Feature: Propfind test | oc:size | 12 | Examples: | role | oc_permission | - | manager | SRDNVCKZ | - | editor | SDNVCK | - | viewer | S | + | manager | RDNVCKZ | + | editor | DNVCK | + | viewer | | diff --git a/tests/acceptance/features/bootstrap/SpacesContext.php b/tests/acceptance/features/bootstrap/SpacesContext.php index 2a6521aa037..3d04897f008 100644 --- a/tests/acceptance/features/bootstrap/SpacesContext.php +++ b/tests/acceptance/features/bootstrap/SpacesContext.php @@ -3110,7 +3110,6 @@ public function theResponseShouldContain(string $method, string $user, string $s foreach ($table->getHash() as $row) { $findItem = $row['key']; $responseValue = $xmlRes->xpath("//d:response/d:propstat/d:prop/$findItem")[0]->__toString(); - Assert::assertNotEmpty($responseValue, "response doesn't contain $findItem or empty"); $value = str_replace('UUIDof:', '', $row['value']); switch ($findItem) { case "oc:fileid": diff --git a/vendor/github.com/cs3org/reva/v2/internal/grpc/services/storageprovider/storageprovider.go b/vendor/github.com/cs3org/reva/v2/internal/grpc/services/storageprovider/storageprovider.go index eccb45ad321..b3fc565f7fe 100644 --- a/vendor/github.com/cs3org/reva/v2/internal/grpc/services/storageprovider/storageprovider.go +++ b/vendor/github.com/cs3org/reva/v2/internal/grpc/services/storageprovider/storageprovider.go @@ -282,10 +282,7 @@ func (s *service) InitiateFileDownload(ctx context.Context, req *provider.Initia protocol := &provider.FileDownloadProtocol{Expose: s.conf.ExposeDataServer} if utils.IsRelativeReference(req.Ref) { - // fill in storage provider id if it is missing - if req.GetRef().GetResourceId().GetStorageId() == "" { - req.GetRef().GetResourceId().StorageId = s.conf.MountID - } + s.addMissingStorageProviderID(req.GetRef().GetResourceId(), nil) protocol.Protocol = "spaces" u.Path = path.Join(u.Path, "spaces", storagespace.FormatResourceID(*req.Ref.ResourceId), req.Ref.Path) } else { @@ -517,9 +514,7 @@ func (s *service) CreateStorageSpace(ctx context.Context, req *provider.CreateSt }, nil } - if resp.StorageSpace != nil { - s.addMissingStorageProviderID(resp.StorageSpace.Root, resp.StorageSpace.Id) - } + s.addMissingStorageProviderID(resp.GetStorageSpace().GetRoot(), resp.GetStorageSpace().GetId()) return resp, nil } @@ -563,7 +558,7 @@ func (s *service) ListStorageSpaces(ctx context.Context, req *provider.ListStora continue } - s.addMissingStorageProviderID(sp.Root, sp.Id) + s.addMissingStorageProviderID(sp.GetRoot(), sp.GetId()) } return &provider.ListStorageSpacesResponse{ @@ -582,9 +577,7 @@ func (s *service) UpdateStorageSpace(ctx context.Context, req *provider.UpdateSt Msg("failed to update storage space") return nil, err } - if res.StorageSpace != nil { - s.addMissingStorageProviderID(res.StorageSpace.Root, res.StorageSpace.Id) - } + s.addMissingStorageProviderID(res.GetStorageSpace().GetRoot(), res.GetStorageSpace().GetId()) return res, nil } @@ -744,15 +737,9 @@ func (s *service) Stat(ctx context.Context, req *provider.StatRequest) (*provide }, nil } - // The storage driver might set the mount ID by itself, in which case skip this step - if md.Id.GetStorageId() == "" { - md.Id.StorageId = s.conf.MountID - } - - // The storage driver might set the mount ID by itself, in which case skip this step - if md.ParentId != nil && md.ParentId.GetStorageId() == "" { - md.ParentId.StorageId = s.conf.MountID - } + s.addMissingStorageProviderID(md.GetId(), nil) + s.addMissingStorageProviderID(md.GetParentId(), nil) + s.addMissingStorageProviderID(md.GetSpace().GetRoot(), nil) return &provider.StatResponse{ Status: status.NewOK(ctx), @@ -791,7 +778,9 @@ func (s *service) ListContainerStream(req *provider.ListContainerStreamRequest, } for _, md := range mds { - s.addMissingStorageProviderID(md.Id, nil) + s.addMissingStorageProviderID(md.GetId(), nil) + s.addMissingStorageProviderID(md.GetParentId(), nil) + s.addMissingStorageProviderID(md.GetSpace().GetRoot(), nil) res := &provider.ListContainerStreamResponse{ Info: md, Status: status.NewOK(ctx), @@ -816,10 +805,9 @@ func (s *service) ListContainer(ctx context.Context, req *provider.ListContainer } for _, i := range res.Infos { - s.addMissingStorageProviderID(i.Id, nil) - if i.ParentId != nil { - s.addMissingStorageProviderID(i.ParentId, nil) - } + s.addMissingStorageProviderID(i.GetId(), nil) + s.addMissingStorageProviderID(i.GetParentId(), nil) + s.addMissingStorageProviderID(i.GetSpace().GetRoot(), nil) } return res, nil } @@ -879,9 +867,7 @@ func (s *service) ListRecycleStream(req *provider.ListRecycleStreamRequest, ss p // TODO(labkode): CRITICAL: fill recycle info with storage provider. for _, item := range items { - if item.Ref != nil && item.Ref.ResourceId != nil { - s.addMissingStorageProviderID(item.Ref.GetResourceId(), nil) - } + s.addMissingStorageProviderID(item.GetRef().GetResourceId(), nil) res := &provider.ListRecycleStreamResponse{ RecycleItem: item, Status: status.NewOK(ctx), @@ -920,9 +906,7 @@ func (s *service) ListRecycle(ctx context.Context, req *provider.ListRecycleRequ } for _, i := range items { - if i.Ref != nil && i.Ref.ResourceId != nil { - s.addMissingStorageProviderID(i.Ref.GetResourceId(), nil) - } + s.addMissingStorageProviderID(i.GetRef().GetResourceId(), nil) } res := &provider.ListRecycleResponse{ Status: status.NewOK(ctx), @@ -1220,7 +1204,7 @@ func (s *service) GetQuota(ctx context.Context, req *provider.GetQuotaRequest) ( func (s *service) addMissingStorageProviderID(resourceID *provider.ResourceId, spaceID *provider.StorageSpaceId) { // The storage driver might set the mount ID by itself, in which case skip this step - if resourceID.GetStorageId() == "" { + if resourceID != nil && resourceID.GetStorageId() == "" { resourceID.StorageId = s.conf.MountID if spaceID != nil { rid, _ := storagespace.ParseID(spaceID.GetOpaqueId()) diff --git a/vendor/github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/spaces.go b/vendor/github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/spaces.go index fc49ef60ca1..12f264aeb0b 100644 --- a/vendor/github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/spaces.go +++ b/vendor/github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/spaces.go @@ -897,7 +897,7 @@ func (fs *Decomposedfs) storageSpaceFromNode(ctx context.Context, n *node.Node, &provider.Reference{ ResourceId: &provider.ResourceId{ SpaceId: n.SpaceRoot.SpaceID, - OpaqueId: n.ID}, + OpaqueId: n.SpaceRoot.ID}, }, ) if err != nil { @@ -923,7 +923,7 @@ func (fs *Decomposedfs) storageSpaceFromNode(ctx context.Context, n *node.Node, Id: &provider.StorageSpaceId{OpaqueId: ssID}, Root: &provider.ResourceId{ SpaceId: n.SpaceRoot.SpaceID, - OpaqueId: n.ID, + OpaqueId: n.SpaceRoot.ID, }, Name: sname, // SpaceType is read from xattr below @@ -974,7 +974,7 @@ func (fs *Decomposedfs) storageSpaceFromNode(ctx context.Context, n *node.Node, Value: []byte(etag), } - spaceAttributes, err := n.Xattrs() + spaceAttributes, err := n.SpaceRoot.Xattrs() if err != nil { return nil, err } diff --git a/vendor/modules.txt b/vendor/modules.txt index 6bbfffb6198..56b82d24ca7 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -349,7 +349,7 @@ github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1 github.com/cs3org/go-cs3apis/cs3/storage/registry/v1beta1 github.com/cs3org/go-cs3apis/cs3/tx/v1beta1 github.com/cs3org/go-cs3apis/cs3/types/v1beta1 -# github.com/cs3org/reva/v2 v2.13.3-0.20230515075524-e00c55c0a4d3 +# github.com/cs3org/reva/v2 v2.13.3-0.20230515105000-30125f104ba1 ## explicit; go 1.19 github.com/cs3org/reva/v2/cmd/revad/internal/grace github.com/cs3org/reva/v2/cmd/revad/runtime