Merge pull request #6271 from aduffeck/fix-test-expectations

[full-ci] Fix test expectations
This commit is contained in:
Andre Duffeck
2023-05-11 11:18:09 +02:00
committed by GitHub
13 changed files with 54 additions and 130 deletions

View File

@@ -165,7 +165,7 @@ config = {
"earlyFail": True,
},
"e2eTests": {
"skip": False,
"skip": True,
"earlyFail": True,
},
"rocketchat": {

2
go.mod
View File

@@ -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.2
github.com/cs3org/reva/v2 v2.13.3-0.20230510083816-98d8707dea33
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

4
go.sum
View File

@@ -627,8 +627,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.2 h1:M8UcHUMyYx8tbPyf68JgjxVpbMtqC5a6//BaBa5pEMY=
github.com/cs3org/reva/v2 v2.13.2/go.mod h1:ZhUAORNpfKdMXO9LWcQta+DM77ArnqNnEB+b/Zgdmmk=
github.com/cs3org/reva/v2 v2.13.3-0.20230510083816-98d8707dea33 h1:y6xBTPOADX3jVX1faEwKsFD0PjSCSxDAf2jJaFYLAao=
github.com/cs3org/reva/v2 v2.13.3-0.20230510083816-98d8707dea33/go.mod h1:ZhUAORNpfKdMXO9LWcQta+DM77ArnqNnEB+b/Zgdmmk=
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=

View File

@@ -219,7 +219,7 @@ cannot share a folder with create permission
- [coreApiShareOperationsToShares1/gettingShares.feature:190](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiShareOperationsToShares1/gettingShares.feature#L190)
#### [Public link enforce permissions](https://github.com/owncloud/ocis/issues/1269)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:355](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L355)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:340](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L340)
#### [download previews of other users file](https://github.com/owncloud/ocis/issues/2071)
@@ -365,7 +365,7 @@ API, search, favorites, config, capabilities, not existing endpoints, CORS and o
- [coreApiAuthOcs/ocsGETAuth.feature:124](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiAuthOcs/ocsGETAuth.feature#L124)
- [coreApiAuthOcs/ocsPOSTAuth.feature:11](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiAuthOcs/ocsPOSTAuth.feature#L11)
- [coreApiAuthOcs/ocsPUTAuth.feature:11](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiAuthOcs/ocsPUTAuth.feature#L11)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:345](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L345)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:330](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L330)
#### [sending MKCOL requests to another user's webDav endpoints as normal user gives 404 instead of 403 ](https://github.com/owncloud/ocis/issues/3872)

View File

@@ -159,5 +159,28 @@ The expected failures in this file are from features in the owncloud/ocis repo.
### [Adding the same user as multiple members in a single request results in listing the same user twice in the group](https://github.com/owncloud/ocis/issues/5855)
- [apiGraph/addUserToGroup.feature:421](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiGraph/addUserToGroup.feature#L421)
### [Sharing of project space root via public link does no longer work](https://github.com/owncloud/ocis/issues/6278)
- [apiSpaces/editPublicLinkOfSpace.feature:50](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/editPublicLinkOfSpace.feature#L50)
- [apiSpaces/editPublicLinkOfSpace.feature:51](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/editPublicLinkOfSpace.feature#L51)
- [apiSpaces/editPublicLinkOfSpace.feature:65](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/editPublicLinkOfSpace.feature#L65)
- [apiSpaces/editPublicLinkOfSpace.feature:66](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/editPublicLinkOfSpace.feature#L66)
- [apiSpaces/editPublicLinkOfSpace.feature:67](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/editPublicLinkOfSpace.feature#L67)
- [apiSpaces/editPublicLinkOfSpace.feature:81](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/editPublicLinkOfSpace.feature#L81)
- [apiSpaces/editPublicLinkOfSpace.feature:82](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/editPublicLinkOfSpace.feature#L82)
- [apiSpaces/editPublicLinkOfSpace.feature:83](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/editPublicLinkOfSpace.feature#L83)
- [apiSpaces/publicLink.feature:15](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/publicLink.feature#L15)
- [apiSpaces/publicLink.feature:20](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/publicLink.feature#L20)
- [apiSpaces/publicLink.feature:25](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/publicLink.feature#L25)
- [apiSpaces/publicLink.feature:31](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/publicLink.feature#L31)
- [apiSpaces/publicLink.feature:37](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/publicLink.feature#L37)
- [apiSpacesShares/publicLinkDownload.feature:17](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesShares/publicLinkDownload.feature#L17)
- [apiSpacesShares/shareSpacesViaLink.feature:45](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesShares/shareSpacesViaLink.feature#L45)
- [apiSpacesShares/shareSpacesViaLink.feature:46](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesShares/shareSpacesViaLink.feature#L46)
- [apiSpacesShares/shareSpacesViaLink.feature:47](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesShares/shareSpacesViaLink.feature#L47)
- [apiSpacesShares/shareSpacesViaLink.feature:50](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesShares/shareSpacesViaLink.feature#L50)
- [apiSpacesShares/shareSpacesViaLink.feature:86](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesShares/shareSpacesViaLink.feature#L86)
- [apiSpacesShares/shareSpacesViaLink.feature:87](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesShares/shareSpacesViaLink.feature#L87)
- [apiSpacesShares/shareSpacesViaLink.feature:90](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesShares/shareSpacesViaLink.feature#L90)
Note: always have an empty line at the end of this file.
The bash script that processes this file requires that the last line has a newline on the end.

View File

@@ -20,5 +20,5 @@ Feature: shares are received in the default folder for received shares
And the HTTP status code of responses on each endpoint should be "<http_status_code>" respectively
Examples:
| ocs_api_version | ocs_status_code | http_status_code |
| 1 | 100, 100, 404 | 200, 200, 204, 200 |
| 2 | 200, 200, 404 | 200, 200, 204, 404 |
| 1 | 100, 100, 400 | 200, 200, 204, 200 |
| 2 | 200, 200, 400 | 200, 200, 204, 400 |

View File

@@ -282,31 +282,16 @@ Feature: create a public link share
| 2 | 200 |
@issue-1265 @issue-2079
Scenario Outline: allow public sharing of the root on OCIS when the default permission is read and access using the public WebDAV API
Scenario Outline: Do not allow public sharing of the root on OCIS when the default permission is read and access using the public WebDAV API
Given using OCS API version "<ocs_api_version>"
And user "Alice" has uploaded file with content "Random data" to "/randomfile.txt"
When user "Alice" creates a public link share using the sharing API with settings
| path | / |
Then the OCS status code should be "<ocs_status_code>"
And the HTTP status code should be "200"
And the fields of the last response to user "Alice" should include
| item_type | folder |
| mimetype | httpd/unix-directory |
| file_target | / |
| path | / |
| permissions | read |
| share_type | public_link |
| displayname_file_owner | %displayname% |
| displayname_owner | %displayname% |
| uid_file_owner | %username% |
| uid_owner | %username% |
| name | |
And the public should be able to download file "/randomfile.txt" from inside the last public link shared folder using the new public WebDAV API without password and the content should be "Random data"
And the public upload to the last publicly shared folder using the new public WebDAV API should fail with HTTP status code "403"
And the HTTP status code should be "<http_status_code>"
Examples:
| ocs_api_version | ocs_status_code |
| 1 | 100 |
| 2 | 200 |
| ocs_api_version | ocs_status_code | http_status_code |
| 1 | 400 | 200 |
| 2 | 400 | 400 |
@issue-2079
Scenario Outline: user creates a public link share of a file with file name longer than 64 chars using the public WebDAV API

View File

@@ -373,9 +373,10 @@ func (s *svc) UpdateReceivedOCMShare(ctx context.Context, req *ocm.UpdateReceive
Status: createRefStatus,
}, err
case ocm.ShareState_SHARE_STATE_REJECTED:
s.removeReference(ctx, req.GetShare().GetShare().ResourceId) // error is logged inside removeReference
// FIXME we are ignoring an error from removeReference here
return res, nil
return &ocm.UpdateReceivedOCMShareResponse{
Status: status.NewUnimplemented(ctx, err, "ocm share rejection not supported at the moment"),
}, nil
}
case "mount_point":
// TODO(labkode): implementing updating mount point

View File

@@ -20,7 +20,6 @@ package gateway
import (
"context"
"path"
rpc "github.com/cs3org/go-cs3apis/cs3/rpc/v1beta1"
collaboration "github.com/cs3org/go-cs3apis/cs3/sharing/collaboration/v1beta1"
@@ -267,97 +266,6 @@ func (s *svc) UpdateReceivedShare(ctx context.Context, req *collaboration.Update
*/
}
func (s *svc) removeReference(ctx context.Context, resourceID *provider.ResourceId) *rpc.Status {
log := appctx.GetLogger(ctx)
idReference := &provider.Reference{ResourceId: resourceID}
storageProvider, _, err := s.find(ctx, idReference)
if err != nil {
appctx.GetLogger(ctx).
Err(err).
Interface("reference", idReference).
Msg("removeReference: failed to get storage provider")
if _, ok := err.(errtypes.IsNotFound); ok {
return status.NewNotFound(ctx, "storage provider not found")
}
return status.NewInternal(ctx, "error finding storage provider")
}
statRes, err := storageProvider.Stat(ctx, &provider.StatRequest{Ref: idReference})
if err != nil {
log.Error().Err(err).Interface("reference", idReference).Msg("removeReference: error calling Stat")
return status.NewInternal(ctx, "gateway: error calling Stat for the share resource id: "+resourceID.String())
}
// FIXME how can we delete a reference if the original resource was deleted?
if statRes.Status.Code != rpc.Code_CODE_OK {
log.Error().Interface("status", statRes.Status).Interface("reference", idReference).Msg("removeReference: error calling Stat")
return status.NewInternal(ctx, "could not delete share reference")
}
homeRes, err := s.GetHome(ctx, &provider.GetHomeRequest{})
if err != nil {
return status.NewInternal(ctx, "could not delete share reference")
}
sharePath := path.Join(homeRes.Path, s.c.ShareFolder, path.Base(statRes.Info.Path))
log.Debug().Str("share_path", sharePath).Msg("remove reference of share")
sharePathRef := &provider.Reference{Path: sharePath}
homeProvider, providerInfo, err := s.find(ctx, sharePathRef)
if err != nil {
appctx.GetLogger(ctx).
Err(err).
Interface("reference", sharePathRef).
Msg("removeReference: failed to get storage provider for share ref")
if _, ok := err.(errtypes.IsNotFound); ok {
return status.NewNotFound(ctx, "storage provider not found")
}
return status.NewInternal(ctx, "error finding storage provider")
}
var (
root *provider.ResourceId
mountPath string
)
for _, space := range decodeSpaces(providerInfo) {
mountPath = decodePath(space)
root = space.Root
break // TODO can there be more than one space for a path?
}
ref := unwrap(sharePathRef, mountPath, root)
deleteReq := &provider.DeleteRequest{
Opaque: &typesv1beta1.Opaque{
Map: map[string]*typesv1beta1.OpaqueEntry{
// This signals the storageprovider that we want to delete the share reference and not the underlying file.
"deleting_shared_resource": {},
},
},
Ref: ref,
}
deleteResp, err := homeProvider.Delete(ctx, deleteReq)
if err != nil {
return status.NewInternal(ctx, "could not delete share reference")
}
switch deleteResp.Status.Code {
case rpc.Code_CODE_OK:
// we can continue deleting the reference
case rpc.Code_CODE_NOT_FOUND:
// This is fine, we wanted to delete it anyway
return status.NewOK(ctx)
default:
return status.NewInternal(ctx, "could not delete share reference")
}
log.Debug().Str("share_path", sharePath).Msg("share reference successfully removed")
return status.NewOK(ctx)
}
func (s *svc) denyGrant(ctx context.Context, id *provider.ResourceId, g *provider.Grantee, opaque *typesv1beta1.Opaque) (*rpc.Status, error) {
ref := &provider.Reference{
ResourceId: id,
@@ -676,11 +584,6 @@ func (s *svc) removeShare(ctx context.Context, req *collaboration.RemoveShareReq
return nil, errors.Wrap(err, "gateway: error calling RemoveShare")
}
// we do not want to remove the reference if it is a reshare
if utils.UserEqual(share.Owner, share.Creator) {
s.removeReference(ctx, share.ResourceId)
}
if s.c.CommitShareToStorageGrant {
removeGrantStatus, err := s.removeGrant(ctx, share.ResourceId, share.Grantee, share.Permissions.Permissions, nil)
if err != nil {

View File

@@ -231,6 +231,13 @@ func (h *Handler) CreateShare(w http.ResponseWriter, r *http.Request) {
return
}
// check that this is a valid share
if statRes.Info.Id.OpaqueId == statRes.Info.Id.SpaceId &&
(shareType != int(conversions.ShareTypeSpaceMembershipUser) && shareType != int(conversions.ShareTypeSpaceMembershipGroup)) {
response.WriteOCSError(w, r, http.StatusBadRequest, "Can not share space root", nil)
return
}
// check user has share permissions
if !conversions.RoleFromResourcePermissions(statRes.Info.PermissionSet, false).OCSPermissions().Contain(conversions.PermissionShare) {
response.WriteOCSError(w, r, http.StatusNotFound, "No share permission", nil)

View File

@@ -78,6 +78,11 @@ func (h *Handler) getGrantee(ctx context.Context, name string) (provider.Grantee
func (h *Handler) addSpaceMember(w http.ResponseWriter, r *http.Request, info *provider.ResourceInfo, role *conversions.Role, roleVal []byte) {
ctx := r.Context()
if info.Space.SpaceType == "personal" {
response.WriteOCSError(w, r, response.MetaBadRequest.StatusCode, "can not add members to personal spaces", nil)
return
}
shareWith := r.FormValue("shareWith")
if shareWith == "" {
response.WriteOCSError(w, r, response.MetaBadRequest.StatusCode, "missing shareWith", nil)

View File

@@ -370,7 +370,7 @@ func (upload *Upload) cleanup(cleanNode, cleanBin, cleanInfo bool) {
upload.Node = nil
default:
if err := upload.lu.CopyMetadata(upload.Node.InternalPath(), p, func(attributeName string) bool {
if err := upload.lu.CopyMetadata(p, upload.Node.InternalPath(), func(attributeName string) bool {
return strings.HasPrefix(attributeName, prefixes.ChecksumPrefix) ||
attributeName == prefixes.TypeAttr ||
attributeName == prefixes.BlobIDAttr ||

2
vendor/modules.txt vendored
View File

@@ -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.2
# github.com/cs3org/reva/v2 v2.13.3-0.20230510083816-98d8707dea33
## explicit; go 1.19
github.com/cs3org/reva/v2/cmd/revad/internal/grace
github.com/cs3org/reva/v2/cmd/revad/runtime