diff --git a/.drone.env b/.drone.env index 73b2d160f3..ccce19b28f 100644 --- a/.drone.env +++ b/.drone.env @@ -1,5 +1,5 @@ # The test runner source for API tests -CORE_COMMITID=af211e517ac4771d9a318b2a5c8682237a3718a1 +CORE_COMMITID=0439daa95d1e63c45086ab3fff251f4e9890f8b6 CORE_BRANCH=master # The test runner source for UI tests diff --git a/.drone.star b/.drone.star index 3ef255a172..98f27960d0 100644 --- a/.drone.star +++ b/.drone.star @@ -282,7 +282,7 @@ def testOcisModule(ctx, module): }, { "name": "scan-result-cache", - "image": "plugins/s3:1", + "image": "plugins/s3:latest", "settings": { "endpoint": { "from_secret": "cache_s3_endpoint", @@ -1111,7 +1111,7 @@ def binaryRelease(ctx, name): }, { "name": "upload", - "image": "plugins/s3:1", + "image": "plugins/s3:latest", "pull": "always", "settings": settings, "when": { diff --git a/.gitignore b/.gitignore index 9a2e33a360..0f6d809d95 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ node_modules/ ocis/ocis ocis/cmd/ocis/__debug_bin ocis/cmd/ocis/config/ +config/ .idea diff --git a/CHANGELOG.md b/CHANGELOG.md index ea61a63c67..528d87165f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,12 +12,14 @@ The following sections list the changes for unreleased. * Change - Make the drives create method odata compliant: [#2531](https://github.com/owncloud/ocis/pull/2531) * Enhancement - Add maximum files and size to archiver capabilities: [#2544](https://github.com/owncloud/ocis/pull/2544) * Enhancement - Expose the reva archiver in OCIS: [#2509](https://github.com/owncloud/ocis/pull/2509) +* Enhancement - Make mimetype allow list configurable for app provider: [#2553](https://github.com/owncloud/ocis/pull/2553) * Enhancement - Add option to skip generation of demo users and groups: [#2495](https://github.com/owncloud/ocis/pull/2495) * Enhancement - Allow overriding the cookie based route by claim: [#2508](https://github.com/owncloud/ocis/pull/2508) * Enhancement - Redirect invalid links to oC Web: [#2493](https://github.com/owncloud/ocis/pull/2493) * Enhancement - Use reva's Authenticate method instead of spawning token managers: [#2528](https://github.com/owncloud/ocis/pull/2528) * Enhancement - TLS config options for ldap in reva: [#2492](https://github.com/owncloud/ocis/pull/2492) * Enhancement - Set reva JWT token expiration time to 24 hours by default: [#2527](https://github.com/owncloud/ocis/pull/2527) +* Enhancement - Update reva to v1.13.1-0.20211001063718-477bb18843a9: [#2566](https://github.com/owncloud/ocis/pull/2566) ## Details @@ -66,6 +68,16 @@ The following sections list the changes for unreleased. https://github.com/owncloud/ocis/pull/2509 +* Enhancement - Make mimetype allow list configurable for app provider: [#2553](https://github.com/owncloud/ocis/pull/2553) + + We've added a configuration option to configure the mimetype allow list introduced in + cs3org/reva#2095. This also makes it possible to set one application per mime type as a + default. + + https://github.com/owncloud/ocis/issues/2563 + https://github.com/owncloud/ocis/pull/2553 + https://github.com/cs3org/reva/pull/2095 + * Enhancement - Add option to skip generation of demo users and groups: [#2495](https://github.com/owncloud/ocis/pull/2495) We've added a new environment variable to decide whether we should generate the demo users and @@ -116,6 +128,30 @@ The following sections list the changes for unreleased. * Enhancement - Set reva JWT token expiration time to 24 hours by default: [#2527](https://github.com/owncloud/ocis/pull/2527) https://github.com/owncloud/ocis/pull/2527 + +* Enhancement - Update reva to v1.13.1-0.20211001063718-477bb18843a9: [#2566](https://github.com/owncloud/ocis/pull/2566) + + This update includes: + + * Bugfix [cs3org/reva#2076](https://github.com/cs3org/reva/pull/2076): Fix chi routing + * Bugfix [cs3org/reva#2077](https://github.com/cs3org/reva/pull/2077): Fix concurrent registration of mimetypes + * Bugfix [cs3org/reva#2074](https://github.com/cs3org/reva/pull/2074): Fix Stat() for eos storage provider + * Bugfix [cs3org/reva#2072](https://github.com/cs3org/reva/pull/2072): Fix denial shares being visible on Shared-with-me page + * Bugfix [cs3org/reva#2073](https://github.com/cs3org/reva/pull/2073): Fix opening a readonly filetype with WOPI + * Bugfix [cs3org/reva#2114](https://github.com/cs3org/reva/pull/2114): Fix apps as default while registering and skip unset mimetypes + * Security [cs3org/reva#2093](https://github.com/cs3org/reva/pull/2093): Limit the data exposed to resourceinfo and publicshare scopes + * Security [cs3org/reva#2053](https://github.com/cs3org/reva/pull/2053): Use safer defaults for TLS verification on LDAP connections + * Enhancement [cs3org/reva#1989](https://github.com/cs3org/reva/pull/1989): Implement url translation for legacy urls + * Enhancement [cs3org/reva#2075](https://github.com/cs3org/reva/pull/2075): Make owncloudsql leverage existing filecache index + * Enhancement [cs3org/reva#2090](https://github.com/cs3org/reva/pull/2090): Add space name during listStorageSpaces on decomposedfs + * Enhancement [cs3org/reva#2088](https://github.com/cs3org/reva/pull/2088): Add archiver and app provider capabilities + * Enhancement [cs3org/reva#2106](https://github.com/cs3org/reva/pull/2106): Add max num files and max size to the archiver capabilities + * Enhancement [cs3org/reva#2067](https://github.com/cs3org/reva/pull/2067): Extend AppRegistry and AppProvider + * Enhancement [cs3org/reva#2095](https://github.com/cs3org/reva/pull/2095): Whitelist apps via AppRegistry and AppProvider + * Enhancement [cs3org/reva#2115](https://github.com/cs3org/reva/pull/2115): Reduce code duplication in LDAP related drivers + * Enhancement [cs3org/reva#2100](https://github.com/cs3org/reva/pull/2100): Resource id based archiver for zip/tar downloads + + https://github.com/owncloud/ocis/pull/2566 # Changelog for [1.12.0] (2021-09-14) The following sections list the changes for 1.12.0. diff --git a/changelog/unreleased/make-allow-list-mimetypes-configurable.md b/changelog/unreleased/make-allow-list-mimetypes-configurable.md new file mode 100644 index 0000000000..95d1f8b186 --- /dev/null +++ b/changelog/unreleased/make-allow-list-mimetypes-configurable.md @@ -0,0 +1,7 @@ +Enhancement: Make mimetype allow list configurable for app provider + +We've added a configuration option to configure the mimetype allow list introduced in cs3org/reva#2095. This also makes it possible to set one application per mime type as a default. + +https://github.com/owncloud/ocis/pull/2553 +https://github.com/cs3org/reva/pull/2095 +https://github.com/owncloud/ocis/issues/2563 diff --git a/changelog/unreleased/update-reva-to-477bb18843a97c6e392dd316e8735ccbe44f16ed.md b/changelog/unreleased/update-reva-to-477bb18843a97c6e392dd316e8735ccbe44f16ed.md new file mode 100644 index 0000000000..3b720c229f --- /dev/null +++ b/changelog/unreleased/update-reva-to-477bb18843a97c6e392dd316e8735ccbe44f16ed.md @@ -0,0 +1,23 @@ +Enhancement: Update reva to v1.13.1-0.20211001063718-477bb18843a9 + +This update includes: + +* Bugfix [cs3org/reva#2076](https://github.com/cs3org/reva/pull/2076): Fix chi routing +* Bugfix [cs3org/reva#2077](https://github.com/cs3org/reva/pull/2077): Fix concurrent registration of mimetypes +* Bugfix [cs3org/reva#2074](https://github.com/cs3org/reva/pull/2074): Fix Stat() for eos storage provider +* Bugfix [cs3org/reva#2072](https://github.com/cs3org/reva/pull/2072): Fix denial shares being visible on Shared-with-me page +* Bugfix [cs3org/reva#2073](https://github.com/cs3org/reva/pull/2073): Fix opening a readonly filetype with WOPI +* Bugfix [cs3org/reva#2114](https://github.com/cs3org/reva/pull/2114): Fix apps as default while registering and skip unset mimetypes +* Security [cs3org/reva#2093](https://github.com/cs3org/reva/pull/2093): Limit the data exposed to resourceinfo and publicshare scopes +* Security [cs3org/reva#2053](https://github.com/cs3org/reva/pull/2053): Use safer defaults for TLS verification on LDAP connections +* Enhancement [cs3org/reva#1989](https://github.com/cs3org/reva/pull/1989): Implement url translation for legacy urls +* Enhancement [cs3org/reva#2075](https://github.com/cs3org/reva/pull/2075): Make owncloudsql leverage existing filecache index +* Enhancement [cs3org/reva#2090](https://github.com/cs3org/reva/pull/2090): Add space name during listStorageSpaces on decomposedfs +* Enhancement [cs3org/reva#2088](https://github.com/cs3org/reva/pull/2088): Add archiver and app provider capabilities +* Enhancement [cs3org/reva#2106](https://github.com/cs3org/reva/pull/2106): Add max num files and max size to the archiver capabilities +* Enhancement [cs3org/reva#2067](https://github.com/cs3org/reva/pull/2067): Extend AppRegistry and AppProvider +* Enhancement [cs3org/reva#2095](https://github.com/cs3org/reva/pull/2095): Whitelist apps via AppRegistry and AppProvider +* Enhancement [cs3org/reva#2115](https://github.com/cs3org/reva/pull/2115): Reduce code duplication in LDAP related drivers +* Enhancement [cs3org/reva#2100](https://github.com/cs3org/reva/pull/2100): Resource id based archiver for zip/tar downloads + +https://github.com/owncloud/ocis/pull/2566 diff --git a/go.mod b/go.mod index 5aaa90ec2b..f1474c6904 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/blevesearch/bleve/v2 v2.1.0 github.com/coreos/go-oidc/v3 v3.0.0 github.com/cs3org/go-cs3apis v0.0.0-20210922150613-cb9e3c99f8de - github.com/cs3org/reva v1.13.1-0.20210930071148-6823079c1702 + github.com/cs3org/reva v1.13.1-0.20211001063718-477bb18843a9 github.com/disintegration/imaging v1.6.2 github.com/glauth/glauth v1.1.3-0.20210729125545-b9aecdfcac31 github.com/go-chi/chi/v5 v5.0.4 @@ -38,6 +38,7 @@ require ( github.com/justinas/alice v1.2.0 github.com/libregraph/lico v0.34.1-0.20210803054646-b584e0372224 github.com/mennanov/fieldmask-utils v0.4.0 + github.com/mitchellh/mapstructure v1.4.2 github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 github.com/nmcclain/asn1-ber v0.0.0-20170104154839-2661553a0484 github.com/nmcclain/ldap v0.0.0-20210720162743-7f8d1e44eeba diff --git a/go.sum b/go.sum index 5380e499c7..414604c334 100644 --- a/go.sum +++ b/go.sum @@ -291,8 +291,8 @@ github.com/crewjam/saml v0.4.5/go.mod h1:qCJQpUtZte9R1ZjUBcW8qtCNlinbO363ooNl02S github.com/cs3org/cato v0.0.0-20200828125504-e418fc54dd5e/go.mod h1:XJEZ3/EQuI3BXTp/6DUzFr850vlxq11I6satRtz0YQ4= github.com/cs3org/go-cs3apis v0.0.0-20210922150613-cb9e3c99f8de h1:N+AI8wz7yhDDqHDuq9EGaqQoFhAOi9XW37xt0ormflw= github.com/cs3org/go-cs3apis v0.0.0-20210922150613-cb9e3c99f8de/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY= -github.com/cs3org/reva v1.13.1-0.20210930071148-6823079c1702 h1:/z6evkFEnUOHg/1BaWGoaLmvd+zQIUn7SGZVn9aYtho= -github.com/cs3org/reva v1.13.1-0.20210930071148-6823079c1702/go.mod h1:fLBEUChifLlv/b2cmkOB5E4jeD7xvyXbD6yZ6G4va0s= +github.com/cs3org/reva v1.13.1-0.20211001063718-477bb18843a9 h1:0R1Gk+pIOyZpz4h1Ts/Fal9XAumC9162ppKM+QByb/w= +github.com/cs3org/reva v1.13.1-0.20211001063718-477bb18843a9/go.mod h1:fLBEUChifLlv/b2cmkOB5E4jeD7xvyXbD6yZ6G4va0s= 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= diff --git a/storage/config/mimetypes.json b/storage/config/mimetypes.json new file mode 100644 index 0000000000..935b3d26ef --- /dev/null +++ b/storage/config/mimetypes.json @@ -0,0 +1,72 @@ +{ + "application/pdf": { + "extension": "pdf", + "name": "PDF", + "description": "PDF document", + "icon": "", + "default_app": "" + }, + "application/vnd.oasis.opendocument.text": { + "extension": "odt", + "name": "OpenDocument", + "description": "OpenDocument text document", + "icon": "", + "default_app": "" + }, + "application/vnd.oasis.opendocument.spreadsheet": { + "extension": "ods", + "name": "OpenSpreadsheet", + "description": "OpenDocument spreadsheet document", + "icon": "", + "default_app": "" + }, + "application/vnd.oasis.opendocument.presentation": { + "extension": "odp", + "name": "OpenPresentation", + "description": "OpenDocument presentation document", + "icon": "", + "default_app": "" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { + "extension": "docx", + "name": "Microsoft Word", + "description": "Microsoft Word document", + "icon": "", + "default_app": "" + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + "extension": "xlsx", + "name": "Microsoft Excel", + "description": "Microsoft Excel document", + "icon": "", + "default_app": "" + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation": { + "extension": "pptx", + "name": "Microsoft PowerPoint", + "description": "Microsoft PowerPoint document", + "icon": "", + "default_app": "" + }, + "application/vnd.jupyter": { + "extension": "ipynb", + "name": "Jupyter Notebook", + "description": "Jupyter Notebook", + "icon": "", + "default_app": "" + }, + "text/markdown": { + "extension": "md", + "name": "Markdown file", + "description": "Markdown file", + "icon": "", + "default_app": "" + }, + "application/compressed-markdown": { + "extension": "zmd", + "name": "Compressed markdown file", + "description": "Compressed markdown file", + "icon": "", + "default_app": "" + } +} diff --git a/storage/pkg/command/gateway.go b/storage/pkg/command/gateway.go index 20256775ce..1aa235fb9c 100644 --- a/storage/pkg/command/gateway.go +++ b/storage/pkg/command/gateway.go @@ -9,6 +9,7 @@ import ( "path" "strings" + "github.com/mitchellh/mapstructure" "github.com/owncloud/ocis/storage/pkg/tracing" "github.com/owncloud/ocis/ocis-pkg/sync" @@ -167,6 +168,11 @@ func gatewayConfigFromStruct(c *cli.Context, cfg *config.Config, logger log.Logg }, "appregistry": map[string]interface{}{ "driver": "static", + "drivers": map[string]interface{}{ + "static": map[string]interface{}{ + "mime_types": mimetypes(cfg, logger), + }, + }, }, "storageregistry": map[string]interface{}{ "driver": cfg.Reva.StorageRegistry.Driver, @@ -222,6 +228,102 @@ func rules(cfg *config.Config, logger log.Logger) map[string]map[string]interfac } } +func mimetypes(cfg *config.Config, logger log.Logger) map[string]map[string]string { + + type mimeTypeConfig struct { + Extension string `json:"extension" mapstructure:"extension"` + Name string `json:"name" mapstructure:"name"` + Description string `json:"description" mapstructure:"description"` + Icon string `json:"icon" mapstructure:"icon"` + DefaultApp string `json:"default_app" mapstructure:"default_app"` + } + type mimetypesConfig map[string]mimeTypeConfig + + var mimetypes mimetypesConfig + + // load default app mimetypes from a json file + if cfg.Reva.AppRegistry.MimetypesJSON != "" { + data, err := ioutil.ReadFile(cfg.Reva.AppRegistry.MimetypesJSON) + if err != nil { + logger.Error().Err(err).Msg("Failed to read app registry mimetypes from JSON file: " + cfg.Reva.AppRegistry.MimetypesJSON) + return nil + } + if err = json.Unmarshal(data, &mimetypes); err != nil { + logger.Error().Err(err).Msg("Failed to unmarshal storage registry rules") + return nil + } + var m map[string]map[string]string + if err := mapstructure.Decode(mimetypes, &m); err != nil { + logger.Error().Err(err).Msg("Failed to decode defaultapp registry mimetypes to mapstructure") + return nil + } + return m + } + + logger.Info().Msg("No app registry mimetypes JSON file provided, loading default configuration") + + mimetypes = map[string]mimeTypeConfig{ + "application/pdf": { + Extension: "pdf", + Name: "PDF", + Description: "PDF document", + }, + "application/vnd.oasis.opendocument.text": { + Extension: "odt", + Name: "OpenDocument", + Description: "OpenDocument text document", + }, + "application/vnd.oasis.opendocument.spreadsheet": { + Extension: "ods", + Name: "OpenSpreadsheet", + Description: "OpenDocument spreadsheet document", + }, + "application/vnd.oasis.opendocument.presentation": { + Extension: "odp", + Name: "OpenPresentation", + Description: "OpenDocument presentation document", + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { + Extension: "docx", + Name: "Microsoft Word", + Description: "Microsoft Word document", + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + Extension: "xlsx", + Name: "Microsoft Excel", + Description: "Microsoft Excel document", + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation": { + Extension: "pptx", + Name: "Microsoft PowerPoint", + Description: "Microsoft PowerPoint document", + }, + "application/vnd.jupyter": { + Extension: "ipynb", + Name: "Jupyter Notebook", + Description: "Jupyter Notebook", + }, + "text/markdown": { + Extension: "md", + Name: "Markdown file", + Description: "Markdown file", + }, + "application/compressed-markdown": { + Extension: "zmd", + Name: "Compressed markdown file", + Description: "Compressed markdown file", + }, + } + + var m map[string]map[string]string + if err := mapstructure.Decode(mimetypes, &m); err != nil { + logger.Error().Err(err).Msg("Failed to decode defaultapp registry mimetypes to mapstructure") + return nil + } + return m + +} + // GatewaySutureService allows for the storage-gateway command to be embedded and supervised by a suture supervisor tree. type GatewaySutureService struct { cfg *config.Config diff --git a/storage/pkg/config/config.go b/storage/pkg/config/config.go index 5d377820fa..7d34e71871 100644 --- a/storage/pkg/config/config.go +++ b/storage/pkg/config/config.go @@ -39,6 +39,12 @@ type StorageRegistry struct { JSON string } +// AppRegistry defines the available app registry configuration +type AppRegistry struct { + Driver string + MimetypesJSON string +} + // AppProvider defines the available app provider configuration type AppProvider struct { Port @@ -438,6 +444,7 @@ type Reva struct { DataGateway DataGatewayPort Gateway Gateway StorageRegistry StorageRegistry + AppRegistry AppRegistry Users Users Groups Groups AuthProvider Users diff --git a/storage/pkg/flagset/gateway.go b/storage/pkg/flagset/gateway.go index 9b5ef80cf5..59795d467d 100644 --- a/storage/pkg/flagset/gateway.go +++ b/storage/pkg/flagset/gateway.go @@ -155,6 +155,23 @@ func GatewayWithConfig(cfg *config.Config) []cli.Flag { Destination: &cfg.Reva.StorageRegistry.JSON, }, + // app registry + + &cli.StringFlag{ + Name: "app-registry-driver", + Value: flags.OverrideDefaultString(cfg.Reva.AppRegistry.Driver, "static"), + Usage: "driver of the app registry", + EnvVars: []string{"STORAGE_APP_REGISTRY_DRIVER"}, + Destination: &cfg.Reva.AppRegistry.Driver, + }, + &cli.StringFlag{ + Name: "app-registry-mimetypes-json", + Value: flags.OverrideDefaultString(cfg.Reva.AppRegistry.MimetypesJSON, ""), + Usage: "JSON file containing the storage registry rules", + EnvVars: []string{"STORAGE_APP_REGISTRY_MIMETYPES_JSON"}, + Destination: &cfg.Reva.AppRegistry.MimetypesJSON, + }, + // please note that STORAGE_FRONTEND_PUBLIC_URL is also defined in // storage/pkg/flagset/frontend.go because this setting may be consumed // by both the gateway and frontend service diff --git a/tests/acceptance/expected-failures-API-on-OCIS-storage.md b/tests/acceptance/expected-failures-API-on-OCIS-storage.md index 34603a8c89..95b5050283 100644 --- a/tests/acceptance/expected-failures-API-on-OCIS-storage.md +++ b/tests/acceptance/expected-failures-API-on-OCIS-storage.md @@ -325,14 +325,14 @@ File and sync features in a shared scenario - [apiSharees/sharees.feature:681](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiSharees/sharees.feature#L681) #### User cannot create a folder named Share -- [apiShareManagementToShares/acceptShares.feature:371](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/acceptShares.feature#L371) -- [apiShareManagementToShares/acceptShares.feature:405](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/acceptShares.feature#L405) +- [apiShareManagementToShares/acceptShares.feature:373](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/acceptShares.feature#L373) +- [apiShareManagementToShares/acceptShares.feature:407](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/acceptShares.feature#L407) #### [cannot accept identical pending shares from different user serially](https://github.com/owncloud/ocis/issues/2131) -- [apiShareManagementToShares/acceptShares.feature:310](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/acceptShares.feature#L310) +- [apiShareManagementToShares/acceptShares.feature:311](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/acceptShares.feature#L311) - [apiShareCreateSpecialToShares1/createShareUniqueReceivedNames.feature:15](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareCreateSpecialToShares1/createShareUniqueReceivedNames.feature#L15) -- [apiShareManagementToShares/acceptShares.feature:591](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/acceptShares.feature#L591) -- [apiShareManagementToShares/acceptShares.feature:652](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/acceptShares.feature#L652) +- [apiShareManagementToShares/acceptShares.feature:597](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/acceptShares.feature#L597) +- [apiShareManagementToShares/acceptShares.feature:658](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/acceptShares.feature#L658) - [apiShareCreateSpecialToShares1/createShareReceivedInMultipleWays.feature:174](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareCreateSpecialToShares1/createShareReceivedInMultipleWays.feature#L174) - [apiShareCreateSpecialToShares1/createShareReceivedInMultipleWays.feature:175](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareCreateSpecialToShares1/createShareReceivedInMultipleWays.feature#L175) - [apiShareCreateSpecialToShares1/createShareReceivedInMultipleWays.feature:214](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareCreateSpecialToShares1/createShareReceivedInMultipleWays.feature#L214) @@ -349,10 +349,7 @@ File and sync features in a shared scenario - [apiShareManagementBasicToShares/createShareToSharesFolder.feature:291](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L291) #### [Cannot move a file to a shared folder](https://github.com/owncloud/ocis/issues/2146) -- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:515](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L515) - -#### [sharing via API and changing the cases in the username does not work correctly](https://github.com/owncloud/core/issues/35484) -- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:373](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L373) +- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:509](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L515) #### [File deletion using dav gives unique string in filename in the trashbin](https://github.com/owncloud/product/issues/178) @@ -681,7 +678,7 @@ Scenario Outline: Moving a file into a shared folder as the sharee and as the sh - [apiVersions/fileVersionsSharingToShares.feature:32](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiVersions/fileVersionsSharingToShares.feature#L32) #### [restoring an older version of a shared file deletes the share](https://github.com/owncloud/ocis/issues/765) -- [apiShareManagementToShares/acceptShares.feature:581](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/acceptShares.feature#L581) +- [apiShareManagementToShares/acceptShares.feature:587](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/acceptShares.feature#L587) - [apiVersions/fileVersionsSharingToShares.feature:43](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiVersions/fileVersionsSharingToShares.feature#L43) #### [not possible to move file into a received folder](https://github.com/owncloud/ocis/issues/764) @@ -853,12 +850,12 @@ _ocs: api compatibility, return correct status code_ #### [Sharing seems to work but does not work](https://github.com/owncloud/ocis/issues/1303) - [apiShareCreateSpecialToShares1/createShareUniqueReceivedNames.feature:15](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareCreateSpecialToShares1/createShareUniqueReceivedNames.feature#L15) -- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:740](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L740) -- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:741](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L741) -- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:759](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L759) -- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:760](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L760) -- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:775](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L775) -- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:776](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L776) +- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:735](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L735) +- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:736](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L736) +- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:754](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L754) +- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:755](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L755) +- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:770](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L770) +- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:771](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L771) #### [reshared resource is not listed for sharee after accepting share](https://github.com/owncloud/ocis/issues/2214) - [apiShareReshareToShares2/reShareSubfolder.feature:180](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareReshareToShares2/reShareSubfolder.feature#L180) @@ -887,8 +884,8 @@ _ocs: api compatibility, return correct status code_ - [apiVersions/fileVersionsSharingToShares.feature:282](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiVersions/fileVersionsSharingToShares.feature#L282) #### [Share lists deleted user as 'user'](https://github.com/owncloud/ocis/issues/903) -- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:675](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L675) -- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:676](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L676) +- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:670](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L670) +- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:671](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L671) #### [OCIS-storage overwriting a file as share receiver, does not create a new file version for the sharer](https://github.com/owncloud/ocis/issues/766) - [apiVersions/fileVersionsSharingToShares.feature:294](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiVersions/fileVersionsSharingToShares.feature#L294) @@ -1305,10 +1302,10 @@ Scenario Outline: Unauthenticated call - [apiShareCreateSpecialToShares1/createShareWhenExcludedFromSharing.feature:61](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareCreateSpecialToShares1/createShareWhenExcludedFromSharing.feature#L61) - [apiShareCreateSpecialToShares1/createShareWhenExcludedFromSharing.feature:78](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareCreateSpecialToShares1/createShareWhenExcludedFromSharing.feature#L78) - [apiShareCreateSpecialToShares1/createShareWhenExcludedFromSharing.feature:79](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareCreateSpecialToShares1/createShareWhenExcludedFromSharing.feature#L79) -- [apiShareCreateSpecialToShares2/createShareWhenShareWithOnlyMembershipGroups.feature:26](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareCreateSpecialToShares2/createShareWhenShareWithOnlyMembershipGroups.feature#L26) - [apiShareCreateSpecialToShares2/createShareWhenShareWithOnlyMembershipGroups.feature:27](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareCreateSpecialToShares2/createShareWhenShareWithOnlyMembershipGroups.feature#L27) -- [apiShareCreateSpecialToShares2/createShareWhenShareWithOnlyMembershipGroups.feature:87](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareCreateSpecialToShares2/createShareWhenShareWithOnlyMembershipGroups.feature#L87) -- [apiShareCreateSpecialToShares2/createShareWhenShareWithOnlyMembershipGroups.feature:88](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareCreateSpecialToShares2/createShareWhenShareWithOnlyMembershipGroups.feature#L88) +- [apiShareCreateSpecialToShares2/createShareWhenShareWithOnlyMembershipGroups.feature:28](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareCreateSpecialToShares2/createShareWhenShareWithOnlyMembershipGroups.feature#L28) +- [apiShareCreateSpecialToShares2/createShareWhenShareWithOnlyMembershipGroups.feature:91](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareCreateSpecialToShares2/createShareWhenShareWithOnlyMembershipGroups.feature#L91) +- [apiShareCreateSpecialToShares2/createShareWhenShareWithOnlyMembershipGroups.feature:92](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareCreateSpecialToShares2/createShareWhenShareWithOnlyMembershipGroups.feature#L92) - [apiMain/caldav.feature:8](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiMain/caldav.feature#L8) - [apiMain/caldav.feature:15](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiMain/caldav.feature#L15) @@ -1332,8 +1329,8 @@ Scenario Outline: Unauthenticated call - [apiAuthOcs/ocsPUTAuth.feature:26](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiAuthOcs/ocsPUTAuth.feature#L26) #### [Sharing a same file twice to the same group](https://github.com/owncloud/ocis/issues/1710) -- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:723](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L723) -- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:724](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L724) +- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:718](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L718) +- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:719](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L719) #### [PATCH request for TUS upload with wrong checksum gives incorrect response](https://github.com/owncloud/ocis/issues/1755) - [apiWebdavUploadTUS/checksums.feature:65](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiWebdavUploadTUS/checksums.feature#L65) @@ -1405,8 +1402,8 @@ Scenario Outline: Unauthenticated call - [apiWebdavProperties2/getFileProperties.feature:207](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiWebdavProperties2/getFileProperties.feature#L207) #### [Shares to deleted group listed in the response](https://github.com/owncloud/ocis/issues/2441) -- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:510](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L510) -- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:511](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L511) +- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:504](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L504) +- [apiShareManagementBasicToShares/createShareToSharesFolder.feature:505](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementBasicToShares/createShareToSharesFolder.feature#L505) #### [Trying to copy a file into a readonly share gives HTTP 500 error](https://github.com/owncloud/ocis/issues/2166) - [apiWebdavProperties1/copyFile.feature:362](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiWebdavProperties1/copyFile.feature#L362) @@ -1490,14 +1487,17 @@ Not everything needs to be implemented for ocis. While the oc10 testsuite covers ### [Cannot download preview of shared received file after the shareowner has changed the file content](https://github.com/owncloud/ocis/issues/2538) - [apiWebdavPreviews/previews.feature:196](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiWebdavPreviews/previews.feature#L196) +### [Preview of text file with UTF content does not render correctly](https://github.com/owncloud/ocis/issues/2570) +- [apiWebdavPreviews/previews.feature:208](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiWebdavPreviews/previews.feature#L208) + ### [Share path in the response is different between share states](https://github.com/owncloud/ocis/issues/2540) - [apiShareManagementToShares/acceptShares.feature:65](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/acceptShares.feature#L65) - [apiShareManagementToShares/acceptShares.feature:93](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/acceptShares.feature#L93) -- [apiShareManagementToShares/acceptShares.feature:227](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/acceptShares.feature#L227) +- [apiShareManagementToShares/acceptShares.feature:228](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/acceptShares.feature#L228) - [apiShareManagementToShares/acceptShares.feature:258](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/acceptShares.feature#L258) -- [apiShareManagementToShares/acceptShares.feature:301](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/acceptShares.feature#L301) -- [apiShareManagementToShares/acceptShares.feature:342](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/acceptShares.feature#L342) -- [apiShareManagementToShares/acceptShares.feature:570](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/acceptShares.feature#L570) -- [apiShareManagementToShares/acceptShares.feature:571](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/acceptShares.feature#L571) +- [apiShareManagementToShares/acceptShares.feature:302](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/acceptShares.feature#L302) +- [apiShareManagementToShares/acceptShares.feature:344](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/acceptShares.feature#L344) +- [apiShareManagementToShares/acceptShares.feature:576](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/acceptShares.feature#L576) +- [apiShareManagementToShares/acceptShares.feature:577](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareManagementToShares/acceptShares.feature#L577) - [apiShareOperationsToShares2/shareAccessByID.feature:124](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareOperationsToShares2/shareAccessByID.feature#L124) -- [apiShareOperationsToShares2/shareAccessByID.feature:125](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareOperationsToShares2/shareAccessByID.feature#L125) \ No newline at end of file +- [apiShareOperationsToShares2/shareAccessByID.feature:125](https://github.com/owncloud/core/blob/master/tests/acceptance/features/apiShareOperationsToShares2/shareAccessByID.feature#L125)