Merge branch 'master' into space-id

This commit is contained in:
Michael Barz
2022-07-11 14:29:33 +02:00
29 changed files with 787 additions and 1037 deletions
+1 -1
View File
@@ -3,5 +3,5 @@ CORE_COMMITID=f1e0bf08b898c7300d4b294c8371f4025d9d99b8
CORE_BRANCH=master CORE_BRANCH=master
# The test runner source for UI tests # The test runner source for UI tests
WEB_COMMITID=06c1383810b710925149b3b51f426315cca8ed67 WEB_COMMITID=e85420c0e3f9e165832474331ff5797e471d2bc7
WEB_BRANCH=master WEB_BRANCH=master
+137 -107
View File
@@ -40,6 +40,12 @@ THEGEEKLAB_DRONE_GITHUB_COMMENT = "thegeeklab/drone-github-comment:1"
DEFAULT_PHP_VERSION = "7.4" DEFAULT_PHP_VERSION = "7.4"
DEFAULT_NODEJS_VERSION = "14" DEFAULT_NODEJS_VERSION = "14"
dirs = {
# relative paths from /drone/src
"core": "oc10/testrunner",
"testing_app": "oc10/testing",
}
# configuration # configuration
config = { config = {
"modules": [ "modules": [
@@ -147,18 +153,6 @@ pipelineVolumeGo = \
"temp": {}, "temp": {},
} }
stepVolumeOC10Tests = \
{
"name": "oC10Tests",
"path": "/srv/app",
}
pipelineVolumeOC10Tests = \
{
"name": "oC10Tests",
"temp": {},
}
def pipelineDependsOn(pipeline, dependant_pipelines): def pipelineDependsOn(pipeline, dependant_pipelines):
if "depends_on" in pipeline.keys(): if "depends_on" in pipeline.keys():
pipeline["depends_on"] = pipeline["depends_on"] + getPipelineNames(dependant_pipelines) pipeline["depends_on"] = pipeline["depends_on"] + getPipelineNames(dependant_pipelines)
@@ -203,6 +197,7 @@ def main(ctx):
cancelPreviousBuilds() + \ cancelPreviousBuilds() + \
yarnCache(ctx) + \ yarnCache(ctx) + \
[buildOcisBinaryForTesting(ctx)] + \ [buildOcisBinaryForTesting(ctx)] + \
cacheCoreReposForTesting(ctx) + \
testOcisModules(ctx) + \ testOcisModules(ctx) + \
testPipelines(ctx) testPipelines(ctx)
@@ -223,6 +218,18 @@ def main(ctx):
testPipelines(ctx), testPipelines(ctx),
), ),
) )
test_pipelines.append(
pipelineDependsOn(
purgeBuildArtifactCache(ctx, "testrunner"),
testPipelines(ctx),
),
)
test_pipelines.append(
pipelineDependsOn(
purgeBuildArtifactCache(ctx, "testing_app"),
testPipelines(ctx),
),
)
pipelines = test_pipelines + build_release_pipelines + build_release_helpers pipelines = test_pipelines + build_release_pipelines + build_release_helpers
@@ -441,6 +448,28 @@ def buildOcisBinaryForTesting(ctx):
"volumes": [pipelineVolumeGo], "volumes": [pipelineVolumeGo],
} }
def cacheCoreReposForTesting(ctx):
return [{
"kind": "pipeline",
"type": "docker",
"name": "cache_core_repos_for_testing",
"platform": {
"os": "linux",
"arch": "amd64",
},
"steps": skipIfUnchanged(ctx, "acceptance-tests") + # skip for those pipelines where core repos are not needed
cloneCoreRepos() +
rebuildBuildArtifactCache(ctx, "testrunner", dirs["core"]) +
rebuildBuildArtifactCache(ctx, "testing_app", dirs["testing_app"]),
"trigger": {
"ref": [
"refs/heads/master",
"refs/tags/v*",
"refs/pull/**",
],
},
}]
def uploadScanResults(ctx): def uploadScanResults(ctx):
sonar_env = { sonar_env = {
"SONAR_TOKEN": { "SONAR_TOKEN": {
@@ -546,36 +575,41 @@ def localApiTests(ctx, storage, suite, accounts_hash_difficulty = 4):
"os": "linux", "os": "linux",
"arch": "amd64", "arch": "amd64",
}, },
"steps": skipIfUnchanged(ctx, "acceptance-tests") + restoreBuildArtifactCache(ctx, "ocis-binary-amd64", "ocis/bin/ocis") + "steps": skipIfUnchanged(ctx, "acceptance-tests") +
ocisServer(storage, accounts_hash_difficulty, [stepVolumeOC10Tests]) + restoreBuildArtifactCache(ctx, "ocis-binary-amd64", "ocis/bin/ocis") +
cloneCoreRepos() + [ ocisServer(storage, accounts_hash_difficulty) +
{ restoreBuildArtifactCache(ctx, "testrunner", dirs["core"]) +
"name": "localApiTests-%s-%s" % (suite, storage), restoreBuildArtifactCache(ctx, "testing_app", dirs["testing_app"]) +
"image": OC_CI_PHP % DEFAULT_PHP_VERSION, [
"environment": { {
"TEST_WITH_GRAPH_API": "true", "name": "localApiTests-%s-%s" % (suite, storage),
"PATH_TO_OCIS": "/drone/src", "image": OC_CI_PHP % DEFAULT_PHP_VERSION,
"PATH_TO_CORE": "/srv/app/testrunner", "environment": {
"TEST_SERVER_URL": "https://ocis-server:9200", "TEST_WITH_GRAPH_API": "true",
"OCIS_REVA_DATA_ROOT": "%s" % ("/srv/app/tmp/ocis/owncloud/data/" if storage == "owncloud" else ""), "PATH_TO_OCIS": "/drone/src",
"SKELETON_DIR": "/srv/app/tmp/testing/data/apiSkeleton", "PATH_TO_CORE": "/drone/src/%s" % dirs["core"],
"OCIS_SKELETON_STRATEGY": "%s" % ("copy" if storage == "owncloud" else "upload"), "TEST_SERVER_URL": "https://ocis-server:9200",
"TEST_OCIS": "true", "OCIS_REVA_DATA_ROOT": "%s" % ("/srv/app/tmp/ocis/owncloud/data/" if storage == "owncloud" else ""),
"SEND_SCENARIO_LINE_REFERENCES": "true", "SKELETON_DIR": "%s/data/apiSkeleton" % dirs["testing_app"],
"STORAGE_DRIVER": storage, "OCIS_SKELETON_STRATEGY": "%s" % ("copy" if storage == "owncloud" else "upload"),
"BEHAT_SUITE": suite, "TEST_OCIS": "true",
"BEHAT_FILTER_TAGS": "~@skip&&~@skipOnGraph&&~@skipOnOcis-%s-Storage" % ("OC" if storage == "owncloud" else "OCIS"), "SEND_SCENARIO_LINE_REFERENCES": "true",
"EXPECTED_FAILURES_FILE": "/drone/src/tests/acceptance/expected-failures-localAPI-on-%s-storage.md" % (storage.upper()), "STORAGE_DRIVER": storage,
"UPLOAD_DELETE_WAIT_TIME": "1" if storage == "owncloud" else 0, "BEHAT_SUITE": suite,
}, "BEHAT_FILTER_TAGS": "~@skip&&~@skipOnGraph&&~@skipOnOcis-%s-Storage" % ("OC" if storage == "owncloud" else "OCIS"),
"commands": [ "EXPECTED_FAILURES_FILE": "/drone/src/tests/acceptance/expected-failures-localAPI-on-%s-storage.md" % (storage.upper()),
"make test-acceptance-api", "UPLOAD_DELETE_WAIT_TIME": "1" if storage == "owncloud" else 0,
], },
"volumes": [stepVolumeOC10Tests], "commands": [
}, "pwd",
] + failEarly(ctx, early_fail), "ls -la",
"make test-acceptance-api",
],
},
] + failEarly(ctx, early_fail),
"services": redisForOCStorage(storage), "services": redisForOCStorage(storage),
"depends_on": getPipelineNames([buildOcisBinaryForTesting(ctx)]), "depends_on": getPipelineNames([buildOcisBinaryForTesting(ctx)]) +
getPipelineNames(cacheCoreReposForTesting(ctx)),
"trigger": { "trigger": {
"ref": [ "ref": [
"refs/heads/master", "refs/heads/master",
@@ -583,7 +617,6 @@ def localApiTests(ctx, storage, suite, accounts_hash_difficulty = 4):
"refs/pull/**", "refs/pull/**",
], ],
}, },
"volumes": [pipelineVolumeOC10Tests],
} }
def cs3ApiTests(ctx, storage, accounts_hash_difficulty = 4): def cs3ApiTests(ctx, storage, accounts_hash_difficulty = 4):
@@ -631,37 +664,40 @@ def coreApiTests(ctx, part_number = 1, number_of_parts = 1, storage = "ocis", ac
"os": "linux", "os": "linux",
"arch": "amd64", "arch": "amd64",
}, },
"steps": skipIfUnchanged(ctx, "acceptance-tests") + restoreBuildArtifactCache(ctx, "ocis-binary-amd64", "ocis/bin/ocis") + "steps": skipIfUnchanged(ctx, "acceptance-tests") +
ocisServer(storage, accounts_hash_difficulty, [stepVolumeOC10Tests]) + restoreBuildArtifactCache(ctx, "ocis-binary-amd64", "ocis/bin/ocis") +
cloneCoreRepos() + [ ocisServer(storage, accounts_hash_difficulty) +
{ restoreBuildArtifactCache(ctx, "testrunner", dirs["core"]) +
"name": "oC10ApiTests-%s-storage-%s" % (storage, part_number), restoreBuildArtifactCache(ctx, "testing_app", dirs["testing_app"]) +
"image": OC_CI_PHP % DEFAULT_PHP_VERSION, [
"environment": { {
"TEST_WITH_GRAPH_API": "true", "name": "oC10ApiTests-%s-storage-%s" % (storage, part_number),
"PATH_TO_OCIS": "/drone/src", "image": OC_CI_PHP % DEFAULT_PHP_VERSION,
"PATH_TO_CORE": "/srv/app/testrunner", "environment": {
"TEST_SERVER_URL": "https://ocis-server:9200", "TEST_WITH_GRAPH_API": "true",
"OCIS_REVA_DATA_ROOT": "%s" % ("/srv/app/tmp/ocis/owncloud/data/" if storage == "owncloud" else ""), "PATH_TO_OCIS": "/drone/src",
"SKELETON_DIR": "/srv/app/tmp/testing/data/apiSkeleton", "PATH_TO_CORE": "/drone/src/%s" % dirs["core"],
"OCIS_SKELETON_STRATEGY": "%s" % ("copy" if storage == "owncloud" else "upload"), "TEST_SERVER_URL": "https://ocis-server:9200",
"TEST_OCIS": "true", "OCIS_REVA_DATA_ROOT": "%s" % ("/srv/app/tmp/ocis/owncloud/data/" if storage == "owncloud" else ""),
"SEND_SCENARIO_LINE_REFERENCES": "true", "SKELETON_DIR": "/drone/src/%s/data/apiSkeleton" % dirs["testing_app"],
"STORAGE_DRIVER": storage, "OCIS_SKELETON_STRATEGY": "%s" % ("copy" if storage == "owncloud" else "upload"),
"BEHAT_FILTER_TAGS": filterTags, "TEST_OCIS": "true",
"DIVIDE_INTO_NUM_PARTS": number_of_parts, "SEND_SCENARIO_LINE_REFERENCES": "true",
"RUN_PART": part_number, "STORAGE_DRIVER": storage,
"EXPECTED_FAILURES_FILE": expectedFailuresFile, "BEHAT_FILTER_TAGS": filterTags,
"UPLOAD_DELETE_WAIT_TIME": "1" if storage == "owncloud" else 0, "DIVIDE_INTO_NUM_PARTS": number_of_parts,
}, "RUN_PART": part_number,
"commands": [ "EXPECTED_FAILURES_FILE": expectedFailuresFile,
"make -C /srv/app/testrunner test-acceptance-api", "UPLOAD_DELETE_WAIT_TIME": "1" if storage == "owncloud" else 0,
], },
"volumes": [stepVolumeOC10Tests], "commands": [
}, "make -C /drone/src/%s test-acceptance-api" % dirs["core"],
] + failEarly(ctx, early_fail), ],
},
] + failEarly(ctx, early_fail),
"services": redisForOCStorage(storage), "services": redisForOCStorage(storage),
"depends_on": getPipelineNames([buildOcisBinaryForTesting(ctx)]), "depends_on": getPipelineNames([buildOcisBinaryForTesting(ctx)]) +
getPipelineNames(cacheCoreReposForTesting(ctx)),
"trigger": { "trigger": {
"ref": [ "ref": [
"refs/heads/master", "refs/heads/master",
@@ -669,7 +705,6 @@ def coreApiTests(ctx, part_number = 1, number_of_parts = 1, storage = "ocis", ac
"refs/pull/**", "refs/pull/**",
], ],
}, },
"volumes": [pipelineVolumeOC10Tests],
} }
def apiTests(ctx): def apiTests(ctx):
@@ -747,7 +782,8 @@ def uiTestPipeline(ctx, filterTags, early_fail, runPart = 1, numberOfParts = 1,
}, },
"steps": skipIfUnchanged(ctx, "acceptance-tests") + restoreBuildArtifactCache(ctx, "ocis-binary-amd64", "ocis/bin/ocis") + installWebTestRunner() + "steps": skipIfUnchanged(ctx, "acceptance-tests") + restoreBuildArtifactCache(ctx, "ocis-binary-amd64", "ocis/bin/ocis") + installWebTestRunner() +
restoreBuildArtifactCache(ctx, "tests-yarn", "webTestRunner/tests/acceptance/.yarn") + yarnInstallUITests() + restoreBuildArtifactCache(ctx, "tests-yarn", "webTestRunner/tests/acceptance/.yarn") + yarnInstallUITests() +
ocisServer(storage, accounts_hash_difficulty, [stepVolumeOC10Tests]) + waitForSeleniumService() + waitForMiddlewareService() + ocisServer(storage, accounts_hash_difficulty) + waitForSeleniumService() + waitForMiddlewareService() +
restoreBuildArtifactCache(ctx, "testing_app", dirs["testing_app"]) +
[ [
{ {
"name": "webUITests", "name": "webUITests",
@@ -757,7 +793,7 @@ def uiTestPipeline(ctx, filterTags, early_fail, runPart = 1, numberOfParts = 1,
"BACKEND_HOST": "https://ocis-server:9200", "BACKEND_HOST": "https://ocis-server:9200",
"RUN_ON_OCIS": "true", "RUN_ON_OCIS": "true",
"OCIS_REVA_DATA_ROOT": "/srv/app/tmp/ocis/owncloud/data", "OCIS_REVA_DATA_ROOT": "/srv/app/tmp/ocis/owncloud/data",
"TESTING_DATA_DIR": "/srv/app/testing/data", "TESTING_DATA_DIR": "/drone/src/%s" % dirs["testing_app"],
"WEB_UI_CONFIG": "/drone/src/tests/config/drone/ocis-config.json", "WEB_UI_CONFIG": "/drone/src/tests/config/drone/ocis-config.json",
"TEST_TAGS": finalFilterTags, "TEST_TAGS": finalFilterTags,
"LOCAL_UPLOAD_DIR": "/uploads", "LOCAL_UPLOAD_DIR": "/uploads",
@@ -768,18 +804,16 @@ def uiTestPipeline(ctx, filterTags, early_fail, runPart = 1, numberOfParts = 1,
"MIDDLEWARE_HOST": "http://middleware:3000", "MIDDLEWARE_HOST": "http://middleware:3000",
}, },
"commands": [ "commands": [
"git clone -b master --depth=1 https://github.com/owncloud/testing.git /srv/app/testing",
"cd webTestRunner/tests/acceptance", "cd webTestRunner/tests/acceptance",
"./run.sh", "./run.sh",
], ],
}, },
] + failEarly(ctx, early_fail), ] + failEarly(ctx, early_fail),
"services": selenium() + middlewareService(), "services": selenium() + middlewareService(),
"volumes": [pipelineVolumeOC10Tests] + "volumes": [{
[{ "name": "uploads",
"name": "uploads", "temp": {},
"temp": {}, }],
}],
"depends_on": getPipelineNames([buildOcisBinaryForTesting(ctx)]), "depends_on": getPipelineNames([buildOcisBinaryForTesting(ctx)]),
"trigger": { "trigger": {
"ref": [ "ref": [
@@ -802,7 +836,7 @@ def settingsUITests(ctx, storage = "ocis", accounts_hash_difficulty = 4):
"arch": "amd64", "arch": "amd64",
}, },
"steps": skipIfUnchanged(ctx, "acceptance-tests") + restoreBuildArtifactCache(ctx, "ocis-binary-amd64", "ocis/bin/ocis") + "steps": skipIfUnchanged(ctx, "acceptance-tests") + restoreBuildArtifactCache(ctx, "ocis-binary-amd64", "ocis/bin/ocis") +
ocisServer(storage, accounts_hash_difficulty, [stepVolumeOC10Tests]) + waitForSeleniumService() + waitForMiddlewareService() + [ ocisServer(storage, accounts_hash_difficulty) + waitForSeleniumService() + waitForMiddlewareService() + [
{ {
"name": "WebUIAcceptanceTests", "name": "WebUIAcceptanceTests",
"image": OC_CI_NODEJS % DEFAULT_NODEJS_VERSION, "image": OC_CI_NODEJS % DEFAULT_NODEJS_VERSION,
@@ -831,11 +865,10 @@ def settingsUITests(ctx, storage = "ocis", accounts_hash_difficulty = 4):
"yarn install --immutable", "yarn install --immutable",
"make test-acceptance-webui", "make test-acceptance-webui",
], ],
"volumes": [stepVolumeOC10Tests] + "volumes": [{
[{ "name": "uploads",
"name": "uploads", "path": "/uploads",
"path": "/uploads", }],
}],
}, },
] + failEarly(ctx, early_fail), ] + failEarly(ctx, early_fail),
"services": [ "services": [
@@ -844,11 +877,10 @@ def settingsUITests(ctx, storage = "ocis", accounts_hash_difficulty = 4):
"image": REDIS, "image": REDIS,
}, },
] + selenium() + middlewareService(), ] + selenium() + middlewareService(),
"volumes": [stepVolumeOC10Tests] + "volumes": [{
[{ "name": "uploads",
"name": "uploads", "temp": {},
"temp": {}, }],
}],
"depends_on": getPipelineNames([buildOcisBinaryForTesting(ctx)]), "depends_on": getPipelineNames([buildOcisBinaryForTesting(ctx)]),
"trigger": { "trigger": {
"ref": [ "ref": [
@@ -1615,7 +1647,6 @@ def ocisServer(storage, accounts_hash_difficulty = 4, volumes = [], depends_on =
user = "0:0" user = "0:0"
environment = { environment = {
"OCIS_URL": OCIS_URL, "OCIS_URL": OCIS_URL,
"FRONTEND_ENABLE_RESHARING": "true",
"GATEWAY_GRPC_ADDR": "0.0.0.0:9142", # cs3api-validator needs the cs3api gatway exposed "GATEWAY_GRPC_ADDR": "0.0.0.0:9142", # cs3api-validator needs the cs3api gatway exposed
"STORAGE_USERS_DRIVER": "%s" % (storage), "STORAGE_USERS_DRIVER": "%s" % (storage),
"STORAGE_USERS_DRIVER_LOCAL_ROOT": "/srv/app/tmp/ocis/local/root", "STORAGE_USERS_DRIVER_LOCAL_ROOT": "/srv/app/tmp/ocis/local/root",
@@ -1683,7 +1714,6 @@ def ocisServer(storage, accounts_hash_difficulty = 4, volumes = [], depends_on =
"OCIS_RUN_SERVICES": "app-registry,app-provider,auth-basic,auth-bearer,auth-machine,frontend,gateway,graph,graph-explorer,groups,nats,notifications,ocdav,ocs,proxy,search,settings,sharing,storage-system,storage-publiclink,storage-shares,storage-users,store,thumbnails,users,web,webdav", "OCIS_RUN_SERVICES": "app-registry,app-provider,auth-basic,auth-bearer,auth-machine,frontend,gateway,graph,graph-explorer,groups,nats,notifications,ocdav,ocs,proxy,search,settings,sharing,storage-system,storage-publiclink,storage-shares,storage-users,store,thumbnails,users,web,webdav",
"OCIS_LOG_LEVEL": "info", "OCIS_LOG_LEVEL": "info",
"OCIS_URL": OCIS_URL, "OCIS_URL": OCIS_URL,
"FRONTEND_ENABLE_RESHARING": "true",
"OCIS_BASE_DATA_PATH": "/mnt/data/ocis", "OCIS_BASE_DATA_PATH": "/mnt/data/ocis",
"OCIS_CONFIG_DIR": "/etc/ocis", "OCIS_CONFIG_DIR": "/etc/ocis",
"PROXY_ENABLE_BASIC_AUTH": "true", "PROXY_ENABLE_BASIC_AUTH": "true",
@@ -1759,13 +1789,14 @@ def cloneCoreRepos():
"name": "clone-core-repos", "name": "clone-core-repos",
"image": OC_CI_ALPINE, "image": OC_CI_ALPINE,
"commands": [ "commands": [
"source /drone/src/.drone.env", "source .drone.env",
"git clone -b master --depth=1 https://github.com/owncloud/testing.git /srv/app/tmp/testing", "git clone -b master --depth=1 https://github.com/owncloud/testing.git %s" % dirs["testing_app"],
"git clone -b $CORE_BRANCH --single-branch --no-tags https://github.com/owncloud/core.git /srv/app/testrunner", "ls -la %s" % dirs["testing_app"],
"cd /srv/app/testrunner", "git clone -b $CORE_BRANCH --single-branch --no-tags https://github.com/owncloud/core.git %s" % dirs["core"],
"ls -la %s" % dirs["core"],
"cd %s" % dirs["core"],
"git checkout $CORE_COMMITID", "git checkout $CORE_COMMITID",
], ],
"volumes": [stepVolumeOC10Tests],
}, },
] ]
@@ -2241,7 +2272,8 @@ def parallelDeployAcceptancePipeline(ctx):
}, },
"steps": skipIfUnchanged(ctx, "acceptance-tests") + "steps": skipIfUnchanged(ctx, "acceptance-tests") +
restoreBuildArtifactCache(ctx, "ocis-binary-amd64", "ocis/bin/ocis") + restoreBuildArtifactCache(ctx, "ocis-binary-amd64", "ocis/bin/ocis") +
cloneCoreRepos() + restoreBuildArtifactCache(ctx, "testrunner", dirs["core"]) +
restoreBuildArtifactCache(ctx, "testing_app", dirs["testing_app"]) +
copyConfigs() + copyConfigs() +
parallelDeploymentOC10Server() + parallelDeploymentOC10Server() +
owncloudLog() + owncloudLog() +
@@ -2264,9 +2296,9 @@ def parallelDeployAcceptancePipeline(ctx):
pipeOC10AppsVol, pipeOC10AppsVol,
pipeOC10OCISSharedVol, pipeOC10OCISSharedVol,
pipeOCISConfigVol, pipeOCISConfigVol,
pipelineVolumeOC10Tests,
], ],
"depends_on": getPipelineNames([buildOcisBinaryForTesting(ctx)]), "depends_on": getPipelineNames([buildOcisBinaryForTesting(ctx)]) +
getPipelineNames(cacheCoreReposForTesting(ctx)),
"trigger": {}, "trigger": {},
} }
@@ -2294,14 +2326,13 @@ def parallelAcceptance(env):
"REVA_LDAP_BASE_DN": "dc=owncloud,dc=com", "REVA_LDAP_BASE_DN": "dc=owncloud,dc=com",
"REVA_LDAP_HOSTNAME": "openldap", "REVA_LDAP_HOSTNAME": "openldap",
"REVA_LDAP_BIND_DN": "cn=admin,dc=owncloud,dc=com", "REVA_LDAP_BIND_DN": "cn=admin,dc=owncloud,dc=com",
"SKELETON_DIR": "/var/www/owncloud/apps/testing/data/apiSkeleton", "SKELETON_DIR": "/drone/src/%s/data/apiSkeleton" % dirs["testing_app"],
"PATH_TO_CORE": "/srv/app/testrunner", "PATH_TO_CORE": "/drone/src/%s" % dirs["core"],
"OCIS_REVA_DATA_ROOT": "/mnt/data/", "OCIS_REVA_DATA_ROOT": "/mnt/data/",
"EXPECTED_FAILURES_FILE": "/drone/src/tests/parallelDeployAcceptance/expected-failures-API.md", "EXPECTED_FAILURES_FILE": "/drone/src/tests/parallelDeployAcceptance/expected-failures-API.md",
"OCIS_SKELETON_STRATEGY": "copy", "OCIS_SKELETON_STRATEGY": "copy",
"SEND_SCENARIO_LINE_REFERENCES": "true", "SEND_SCENARIO_LINE_REFERENCES": "true",
"UPLOAD_DELETE_WAIT_TIME": "1", "UPLOAD_DELETE_WAIT_TIME": "1",
"FRONTEND_ENABLE_RESHARING": "true",
} }
environment.update(env) environment.update(env)
@@ -2312,10 +2343,9 @@ def parallelAcceptance(env):
"commands": [ "commands": [
"make test-paralleldeployment-api", "make test-paralleldeployment-api",
], ],
"depends_on": ["clone-core-repos", "wait-for-oc10", "wait-for-ocis-server"], "depends_on": ["wait-for-oc10", "wait-for-ocis-server"],
"volumes": [ "volumes": [
stepVolumeOC10Apps, stepVolumeOC10Apps,
stepVolumeOC10Tests,
stepVolumeOC10OCISData, stepVolumeOC10OCISData,
], ],
}] }]
+50
View File
@@ -7,6 +7,7 @@ The following sections list the changes for unreleased.
## Summary ## Summary
* Bugfix - CSP rules for silent token refresh in iframe: [#4031](https://github.com/owncloud/ocis/pull/4031) * Bugfix - CSP rules for silent token refresh in iframe: [#4031](https://github.com/owncloud/ocis/pull/4031)
* Bugfix - Fix logging levels: [#4102](https://github.com/owncloud/ocis/pull/4102)
* Bugfix - Fix `OCIS_RUN_SERVICES`: [#4133](https://github.com/owncloud/ocis/pull/4133) * Bugfix - Fix `OCIS_RUN_SERVICES`: [#4133](https://github.com/owncloud/ocis/pull/4133)
* Bugfix - Fix unused config option `GRAPH_SPACES_INSECURE`: [#55555](https://github.com/owncloud/ocis/pull/55555) * Bugfix - Fix unused config option `GRAPH_SPACES_INSECURE`: [#55555](https://github.com/owncloud/ocis/pull/55555)
* Bugfix - Remove unused configuration options: [#3973](https://github.com/owncloud/ocis/pull/3973) * Bugfix - Remove unused configuration options: [#3973](https://github.com/owncloud/ocis/pull/3973)
@@ -20,6 +21,7 @@ The following sections list the changes for unreleased.
* Enhancement - Update IdP UI: [#3493](https://github.com/owncloud/ocis/issues/3493) * Enhancement - Update IdP UI: [#3493](https://github.com/owncloud/ocis/issues/3493)
* Enhancement - Refactor extensions to services: [#3980](https://github.com/owncloud/ocis/pull/3980) * Enhancement - Refactor extensions to services: [#3980](https://github.com/owncloud/ocis/pull/3980)
* Enhancement - Update reva: [#4115](https://github.com/owncloud/ocis/pull/4115) * Enhancement - Update reva: [#4115](https://github.com/owncloud/ocis/pull/4115)
* Enhancement - Update ownCloud Web to v5.7.0-rc.4: [#4140](https://github.com/owncloud/ocis/pull/4140)
* Enhancement - Search service at the old webdav endpoint: [#4118](https://github.com/owncloud/ocis/pull/4118) * Enhancement - Search service at the old webdav endpoint: [#4118](https://github.com/owncloud/ocis/pull/4118)
## Details ## Details
@@ -33,6 +35,22 @@ The following sections list the changes for unreleased.
https://github.com/owncloud/web/issues/7030 https://github.com/owncloud/web/issues/7030
https://github.com/owncloud/ocis/pull/4031 https://github.com/owncloud/ocis/pull/4031
* Bugfix - Fix logging levels: [#4102](https://github.com/owncloud/ocis/pull/4102)
We've fixed the configuration of logging levels. Previously it was not possible to configure a
service with a more or less verbose log level then all other services when running in the
supervised / runtime mode `ocis server`.
For example `OCIS_LOG_LEVEL=error PROXY_LOG_LEVEL=debug ocis server` did not configure
error logging for all services except the proxy, which should be on debug logging. This is now
fixed and working properly.
Also we fixed the format of go-micro logs to always default to error level. Previously this was
only ensured in the supervised / runtime mode.
https://github.com/owncloud/ocis/issues/4089
https://github.com/owncloud/ocis/pull/4102
* Bugfix - Fix `OCIS_RUN_SERVICES`: [#4133](https://github.com/owncloud/ocis/pull/4133) * Bugfix - Fix `OCIS_RUN_SERVICES`: [#4133](https://github.com/owncloud/ocis/pull/4133)
`OCIS_RUN_SERVICES` was introduced as successor to `OCIS_RUN_EXTENSIONS` because we `OCIS_RUN_SERVICES` was introduced as successor to `OCIS_RUN_EXTENSIONS` because we
@@ -138,6 +156,38 @@ The following sections list the changes for unreleased.
https://github.com/owncloud/ocis/pull/4115 https://github.com/owncloud/ocis/pull/4115
* Enhancement - Update ownCloud Web to v5.7.0-rc.4: [#4140](https://github.com/owncloud/ocis/pull/4140)
Tags: web
We updated ownCloud Web to v5.7.0-rc.4. Please refer to the changelog (linked) for details on
the web release.
* Bugfix [owncloud/web#7230](https://github.com/owncloud/web/pull/7230): Context menu misplaced when triggered by keyboard navigation
* Bugfix [owncloud/web#7214](https://github.com/owncloud/web/pull/7214): Prevent error when pasting with empty clipboard
* Bugfix [owncloud/web#7173](https://github.com/owncloud/web/pull/7173): Re-introduce dynamic app name in document title
* Bugfix [owncloud/web#7166](https://github.com/owncloud/web/pull/7166): External apps fixes
* Bugfix [owncloud/web#4677](https://github.com/owncloud/web/issues/4677): Logout deleted user on page reload
* Bugfix [owncloud/web#7216](https://github.com/owncloud/web/pull/7216): Filename hovers over the image in the preview app
* Bugfix [owncloud/web#7228](https://github.com/owncloud/web/pull/7228): Shared with others page apps not working with oc10 as backend
* Bugfix [owncloud/web#7197](https://github.com/owncloud/web/pull/7197): Create space and access user management permission
* Bugfix [owncloud/web#6921](https://github.com/owncloud/web/pull/6921): Space sidebar sharing indicators
* Bugfix [owncloud/web#7030](https://github.com/owncloud/web/issues/7030): Access token renewal
* Enhancement [owncloud/web#7217](https://github.com/owncloud/web/pull/7217): Add app top bar component
* Enhancement [owncloud/web#7030](https://github.com/owncloud/web/issues/7030): Loading context blocks application bootstrap
* Enhancement [owncloud/web#7206](https://github.com/owncloud/web/pull/7206): Add change own password dialog to the account info page
* Enhancement [owncloud/web#7086](https://github.com/owncloud/web/pull/7086): Re-sharing for ocis
* Enhancement [owncloud/web#7201](https://github.com/owncloud/web/pull/7201): Added a toolbar to pdf-viewer app
* Enhancement [owncloud/web#7139](https://github.com/owncloud/web/pull/7139): Reposition notifications
* Enhancement [owncloud/web#7030](https://github.com/owncloud/web/issues/7030): Resolve bookmarked public links with password protection
* Enhancement [owncloud/web#7038](https://github.com/owncloud/web/issues/7038): Improve performance of share indicators
* Enhancement [owncloud/web#6661](https://github.com/owncloud/web/issues/6661): Option to block file extensions from text-editor app
* Enhancement [owncloud/web#7139](https://github.com/owncloud/web/pull/7139): Update ODS to v14.0.0-alpha.4
* Enhancement [owncloud/web#7176](https://github.com/owncloud/web/pull/7176): Introduce group assignments
https://github.com/owncloud/ocis/pull/4140
https://github.com/owncloud/web/releases/tag/v5.7.0-rc.4
* Enhancement - Search service at the old webdav endpoint: [#4118](https://github.com/owncloud/ocis/pull/4118) * Enhancement - Search service at the old webdav endpoint: [#4118](https://github.com/owncloud/ocis/pull/4118)
We made the search service available for legacy clients at the old webdav endpoint. We made the search service available for legacy clients at the old webdav endpoint.
+1 -1
View File
@@ -11,7 +11,7 @@
# `make -C ocis dev-docker` # `make -C ocis dev-docker`
# It will build a `owncloud/ocis:dev` image for you # It will build a `owncloud/ocis:dev` image for you
# and use your local Yarn and Go caches and therefore # and use your local Yarn and Go caches and therefore
# is a lot faster than the below build steps. # is a lot faster than the build steps below.
FROM owncloudci/nodejs:14 as generate FROM owncloudci/nodejs:14 as generate
@@ -0,0 +1,15 @@
Bugfix: Fix logging levels
We've fixed the configuration of logging levels. Previously it was not possible
to configure a service with a more or less verbose log level then all other services
when running in the supervised / runtime mode `ocis server`.
For example `OCIS_LOG_LEVEL=error PROXY_LOG_LEVEL=debug ocis server` did not configure
error logging for all services except the proxy, which should be on debug logging. This is now fixed
and working properly.
Also we fixed the format of go-micro logs to always default to error level.
Previously this was only ensured in the supervised / runtime mode.
https://github.com/owncloud/ocis/pull/4102
https://github.com/owncloud/ocis/issues/4089
+30
View File
@@ -0,0 +1,30 @@
Enhancement: Update ownCloud Web to v5.7.0-rc.4
Tags: web
We updated ownCloud Web to v5.7.0-rc.4. Please refer to the changelog (linked) for details on the web release.
* Bugfix [owncloud/web#7230](https://github.com/owncloud/web/pull/7230): Context menu misplaced when triggered by keyboard navigation
* Bugfix [owncloud/web#7214](https://github.com/owncloud/web/pull/7214): Prevent error when pasting with empty clipboard
* Bugfix [owncloud/web#7173](https://github.com/owncloud/web/pull/7173): Re-introduce dynamic app name in document title
* Bugfix [owncloud/web#7166](https://github.com/owncloud/web/pull/7166): External apps fixes
* Bugfix [owncloud/web#4677](https://github.com/owncloud/web/issues/4677): Logout deleted user on page reload
* Bugfix [owncloud/web#7216](https://github.com/owncloud/web/pull/7216): Filename hovers over the image in the preview app
* Bugfix [owncloud/web#7228](https://github.com/owncloud/web/pull/7228): Shared with others page apps not working with oc10 as backend
* Bugfix [owncloud/web#7197](https://github.com/owncloud/web/pull/7197): Create space and access user management permission
* Bugfix [owncloud/web#6921](https://github.com/owncloud/web/pull/6921): Space sidebar sharing indicators
* Bugfix [owncloud/web#7030](https://github.com/owncloud/web/issues/7030): Access token renewal
* Enhancement [owncloud/web#7217](https://github.com/owncloud/web/pull/7217): Add app top bar component
* Enhancement [owncloud/web#7030](https://github.com/owncloud/web/issues/7030): Loading context blocks application bootstrap
* Enhancement [owncloud/web#7206](https://github.com/owncloud/web/pull/7206): Add change own password dialog to the account info page
* Enhancement [owncloud/web#7086](https://github.com/owncloud/web/pull/7086): Re-sharing for ocis
* Enhancement [owncloud/web#7201](https://github.com/owncloud/web/pull/7201): Added a toolbar to pdf-viewer app
* Enhancement [owncloud/web#7139](https://github.com/owncloud/web/pull/7139): Reposition notifications
* Enhancement [owncloud/web#7030](https://github.com/owncloud/web/issues/7030): Resolve bookmarked public links with password protection
* Enhancement [owncloud/web#7038](https://github.com/owncloud/web/issues/7038): Improve performance of share indicators
* Enhancement [owncloud/web#6661](https://github.com/owncloud/web/issues/6661): Option to block file extensions from text-editor app
* Enhancement [owncloud/web#7139](https://github.com/owncloud/web/pull/7139): Update ODS to v14.0.0-alpha.4
* Enhancement [owncloud/web#7176](https://github.com/owncloud/web/pull/7176): Introduce group assignments
https://github.com/owncloud/ocis/pull/4140
https://github.com/owncloud/web/releases/tag/v5.7.0-rc.4
+2 -2
View File
@@ -15,7 +15,7 @@ Welcome to oCIS, the modern file-sync and share platform, which is based on our
### The idea of federated storage ### The idea of federated storage
To create a truly federated storage architecture oCIS breaks down the old ownCloud 10 user specific namespace, which is assembled on the server side, and makes the individual parts accessible to clients as storage spaces and storage space registries. To create a truly federated storage architecture oCIS breaks down the old ownCloud 10 user specific namespace, which is assembled on the server side, and makes the individual parts accessible to clients as storage spaces and storage space registries.
The below diagram shows the core concepts that are the foundation for the new architecture: The diagram below shows the core concepts that are the foundation for the new architecture:
- End user devices can fetch the list of *storage spaces* a user has access to, by querying one or multiple *storage space registries*. The list contains a unique endpoint for every *storage space*. - End user devices can fetch the list of *storage spaces* a user has access to, by querying one or multiple *storage space registries*. The list contains a unique endpoint for every *storage space*.
- [*Storage space registries*]({{< ref "./storage/terminology#storage-space-registries" >}}) manage the list of storage spaces a user has access to. They may subscribe to *storage spaces* in order to receive notifications about changes on behalf of an end users mobile or desktop client. - [*Storage space registries*]({{< ref "./storage/terminology#storage-space-registries" >}}) manage the list of storage spaces a user has access to. They may subscribe to *storage spaces* in order to receive notifications about changes on behalf of an end users mobile or desktop client.
- [*Storage spaces*]({{< ref "./storage/terminology#storage-spaces" >}}) represent a collection of files and folders. A users personal files are contained in a *storage space*, a group or project drive is a *storage space*, and even incoming shares are treated and implemented as *storage spaces*. Each with properties like owners, permissions, quota and type. - [*Storage spaces*]({{< ref "./storage/terminology#storage-spaces" >}}) represent a collection of files and folders. A users personal files are contained in a *storage space*, a group or project drive is a *storage space*, and even incoming shares are treated and implemented as *storage spaces*. Each with properties like owners, permissions, quota and type.
@@ -61,6 +61,6 @@ We run a huge [test suite](https://github.com/owncloud/core/tree/master/tests),
### Architecture Overview ### Architecture Overview
Running `bin/ocis server` will start the below services, all of which can be scaled and deployed on a single node or in a cloud native environment, as needed. Running `bin/ocis server` will start the following services, all of which can be scaled and deployed on a single node or in a cloud native environment, as needed.
{{< figure src="/ocis/static/architecture-overview.drawio.svg" >}} {{< figure src="/ocis/static/architecture-overview.drawio.svg" >}}
+1 -1
View File
@@ -71,7 +71,7 @@ $ make -C ocis build
This should give you an `ocis/bin/ocis` binary. Try listing the help with `ocis/bin/ocis --help`. This should give you an `ocis/bin/ocis` binary. Try listing the help with `ocis/bin/ocis --help`.
{{< hint >}} {{< hint >}}
You can check out a custom branch and build a custom binary which can then be used for the below steps. You can check out a custom branch and build a custom binary which can then be used for the steps below.
{{< /hint >}} {{< /hint >}}
### Start ocis glauth ### Start ocis glauth
+1 -1
View File
@@ -46,7 +46,7 @@ For the format of the users.json have a look at the [reva examples](https://gith
This is the default user driver. This is the default user driver.
If the below defaults don't match your environment change them accordingly: If the following defaults don't match your environment then change them accordingly:
``` ```
export STORAGE_LDAP_HOSTNAME=localhost export STORAGE_LDAP_HOSTNAME=localhost
export STORAGE_LDAP_PORT=9126 export STORAGE_LDAP_PORT=9126
+2 -2
View File
@@ -61,9 +61,9 @@ ocis init
OCIS_URL=https://host.docker.internal:9200 OCIS_INSECURE=true PROXY_ENABLE_BASIC_AUTH=true WEB_UI_CONFIG=../../web/dev/docker/ocis.web.config.json ./bin/ocis server OCIS_URL=https://host.docker.internal:9200 OCIS_INSECURE=true PROXY_ENABLE_BASIC_AUTH=true WEB_UI_CONFIG=../../web/dev/docker/ocis.web.config.json ./bin/ocis server
``` ```
If you've built the web bundle locally in its repository, you also need to reference the bundle output in the above command: `WEB_ASSET_PATH=../../web/dist` If you've built the web bundle locally in its repository, you also need to reference the bundle output in the command above: `WEB_ASSET_PATH=../../web/dist`
If you've built the settings UI bundle locally, you also need to reference the bundle output in the above command: `SETTINGS_ASSET_PATH=../settings/assets/` If you've built the settings UI bundle locally, you also need to reference the bundle output in the command above: `SETTINGS_ASSET_PATH=../settings/assets/`
#### Run settings acceptance tests #### Run settings acceptance tests
+3 -3
View File
@@ -62,11 +62,11 @@ require (
github.com/urfave/cli/v2 v2.10.3 github.com/urfave/cli/v2 v2.10.3
go-micro.dev/v4 v4.7.0 go-micro.dev/v4 v4.7.0
go.opencensus.io v0.23.0 go.opencensus.io v0.23.0
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.32.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.33.0
go.opentelemetry.io/otel v1.7.0 go.opentelemetry.io/otel v1.8.0
go.opentelemetry.io/otel/exporters/jaeger v1.7.0 go.opentelemetry.io/otel/exporters/jaeger v1.7.0
go.opentelemetry.io/otel/sdk v1.7.0 go.opentelemetry.io/otel/sdk v1.7.0
go.opentelemetry.io/otel/trace v1.7.0 go.opentelemetry.io/otel/trace v1.8.0
golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29
golang.org/x/exp v0.0.0-20220518171630-0b5c67f07fdf golang.org/x/exp v0.0.0-20220518171630-0b5c67f07fdf
golang.org/x/image v0.0.0-20220321031419-a8550c1d254a golang.org/x/image v0.0.0-20220321031419-a8550c1d254a
+6 -4
View File
@@ -1304,12 +1304,13 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M=
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.31.0/go.mod h1:SY9qHHUES6W3oZnO1H2W8NvsSovIoXRg/A1AH9px8+I= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.31.0/go.mod h1:SY9qHHUES6W3oZnO1H2W8NvsSovIoXRg/A1AH9px8+I=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.32.0 h1:WenoaOMNP71oq3KkMZ/jnxI9xU/JSCLw8yZILSI2lfU= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.33.0 h1:z6rnla1Asjzn0FrhohzIbDi4bxbtc6EMmQ7f5ZPn+pA=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.32.0/go.mod h1:J0dBVrt7dPS/lKJyQoW0xzQiUr4r2Ik1VwPjAUWnofI= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.33.0/go.mod h1:y/SlJpJQPd2UzfBCj0E9Flk9FDCtTyqUmaCB41qFrWI=
go.opentelemetry.io/otel v1.6.1/go.mod h1:blzUabWHkX6LJewxvadmzafgh/wnvBSDBdOuwkAtrWQ= go.opentelemetry.io/otel v1.6.1/go.mod h1:blzUabWHkX6LJewxvadmzafgh/wnvBSDBdOuwkAtrWQ=
go.opentelemetry.io/otel v1.6.3/go.mod h1:7BgNga5fNlF/iZjG06hM3yofffp0ofKCDwSXx1GC4dI= go.opentelemetry.io/otel v1.6.3/go.mod h1:7BgNga5fNlF/iZjG06hM3yofffp0ofKCDwSXx1GC4dI=
go.opentelemetry.io/otel v1.7.0 h1:Z2lA3Tdch0iDcrhJXDIlC94XE+bxok1F9B+4Lz/lGsM=
go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk= go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk=
go.opentelemetry.io/otel v1.8.0 h1:zcvBFizPbpa1q7FehvFiHbQwGzmPILebO0tyqIR5Djg=
go.opentelemetry.io/otel v1.8.0/go.mod h1:2pkj+iMj0o03Y+cW6/m8Y4WkRdYN3AvCXCnzRMp9yvM=
go.opentelemetry.io/otel/exporters/jaeger v1.6.3/go.mod h1:YgX3eZWbJzgrNyNHCK0otGreAMBTIAcObtZS2VRi6sU= go.opentelemetry.io/otel/exporters/jaeger v1.6.3/go.mod h1:YgX3eZWbJzgrNyNHCK0otGreAMBTIAcObtZS2VRi6sU=
go.opentelemetry.io/otel/exporters/jaeger v1.7.0 h1:wXgjiRldljksZkZrldGVe6XrG9u3kYDyQmkZwmm5dI0= go.opentelemetry.io/otel/exporters/jaeger v1.7.0 h1:wXgjiRldljksZkZrldGVe6XrG9u3kYDyQmkZwmm5dI0=
go.opentelemetry.io/otel/exporters/jaeger v1.7.0/go.mod h1:PwQAOqBgqbLQRKlj466DuD2qyMjbtcPpfPfj+AqbSBs= go.opentelemetry.io/otel/exporters/jaeger v1.7.0/go.mod h1:PwQAOqBgqbLQRKlj466DuD2qyMjbtcPpfPfj+AqbSBs=
@@ -1318,8 +1319,9 @@ go.opentelemetry.io/otel/sdk v1.7.0 h1:4OmStpcKVOfvDOgCt7UriAPtKolwIhxpnSNI/yK+1
go.opentelemetry.io/otel/sdk v1.7.0/go.mod h1:uTEOTwaqIVuTGiJN7ii13Ibp75wJmYUDe374q6cZwUU= go.opentelemetry.io/otel/sdk v1.7.0/go.mod h1:uTEOTwaqIVuTGiJN7ii13Ibp75wJmYUDe374q6cZwUU=
go.opentelemetry.io/otel/trace v1.6.1/go.mod h1:RkFRM1m0puWIq10oxImnGEduNBzxiN7TXluRBtE+5j0= go.opentelemetry.io/otel/trace v1.6.1/go.mod h1:RkFRM1m0puWIq10oxImnGEduNBzxiN7TXluRBtE+5j0=
go.opentelemetry.io/otel/trace v1.6.3/go.mod h1:GNJQusJlUgZl9/TQBPKU/Y/ty+0iVB5fjhKeJGZPGFs= go.opentelemetry.io/otel/trace v1.6.3/go.mod h1:GNJQusJlUgZl9/TQBPKU/Y/ty+0iVB5fjhKeJGZPGFs=
go.opentelemetry.io/otel/trace v1.7.0 h1:O37Iogk1lEkMRXewVtZ1BBTVn5JEp8GrJvP92bJqC6o=
go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU= go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU=
go.opentelemetry.io/otel/trace v1.8.0 h1:cSy0DF9eGI5WIfNwZ1q2iUyGj00tGzP24dE1lOlHrfY=
go.opentelemetry.io/otel/trace v1.8.0/go.mod h1:0Bt3PXY8w+3pheS3hQUt+wow8b1ojPaTBoTCh2zIFI4=
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
+1 -1
View File
@@ -57,7 +57,7 @@ All parse errors will fail fast and return an error in this mode.
## Supported types ## Supported types
- Structs (and pointer to structs) - Structs (and pointer to structs)
- Slices of below defined types, separated by semicolon - Slices of defined types below, separated by semicolon
- `bool` - `bool`
- `float32`, `float64` - `float32`, `float64`
- `int`, `int8`, `int16`, `int32`, `int64` - `int`, `int8`, `int16`, `int32`, `int64`
+39 -117
View File
@@ -6,15 +6,37 @@ import (
"strings" "strings"
"time" "time"
mzlog "github.com/go-micro/plugins/v4/logger/zerolog"
"github.com/owncloud/ocis/v2/ocis-pkg/shared" "github.com/owncloud/ocis/v2/ocis-pkg/shared"
"github.com/rs/zerolog" "github.com/rs/zerolog"
"github.com/rs/zerolog/log" "github.com/rs/zerolog/log"
mdlog "go-micro.dev/v4/debug/log" "go-micro.dev/v4/logger"
mlog "go-micro.dev/v4/util/log"
"go-micro.dev/v4/util/ring"
) )
func init() {
// this is ugly, but "logger.DefaultLogger" is a global variable and we need to set it _before_ anybody uses it
setMicroLogger()
}
// for logging reasons we don't want the same logging level on both oCIS and micro. As a framework builder we do not
// want to expose to the end user the internal framework logs unless explicitly specified.
func setMicroLogger() {
if os.Getenv("MICRO_LOG_LEVEL") == "" {
_ = os.Setenv("MICRO_LOG_LEVEL", "error")
}
lev, err := zerolog.ParseLevel(os.Getenv("MICRO_LOG_LEVEL"))
if err != nil {
lev = zerolog.ErrorLevel
}
logger.DefaultLogger = mzlog.NewLogger(
logger.WithLevel(logger.Level(lev)),
logger.WithFields(map[string]interface{}{
"system": "go-micro",
}),
)
}
// Logger simply wraps the zerolog logger. // Logger simply wraps the zerolog logger.
type Logger struct { type Logger struct {
zerolog.Logger zerolog.Logger
@@ -35,31 +57,27 @@ func LoggerFromConfig(name string, cfg *shared.Log) Logger {
func NewLogger(opts ...Option) Logger { func NewLogger(opts ...Option) Logger {
options := newOptions(opts...) options := newOptions(opts...)
// set GlobalLevel() to the minimum value -1 = TraceLevel, so that only the services' log level matter
zerolog.SetGlobalLevel(zerolog.TraceLevel)
var logLevel zerolog.Level
switch strings.ToLower(options.Level) { switch strings.ToLower(options.Level) {
case "panic": case "panic":
zerolog.SetGlobalLevel(zerolog.PanicLevel) logLevel = zerolog.PanicLevel
mlog.SetLevel(mlog.LevelFatal)
case "fatal": case "fatal":
zerolog.SetGlobalLevel(zerolog.FatalLevel) logLevel = zerolog.FatalLevel
mlog.SetLevel(mlog.LevelFatal)
case "error": case "error":
zerolog.SetGlobalLevel(zerolog.ErrorLevel) logLevel = zerolog.ErrorLevel
mlog.SetLevel(mlog.LevelError)
case "warn": case "warn":
zerolog.SetGlobalLevel(zerolog.WarnLevel) logLevel = zerolog.WarnLevel
mlog.SetLevel(mlog.LevelWarn)
case "info": case "info":
zerolog.SetGlobalLevel(zerolog.InfoLevel) logLevel = zerolog.InfoLevel
mlog.SetLevel(mlog.LevelInfo)
case "debug": case "debug":
zerolog.SetGlobalLevel(zerolog.DebugLevel) logLevel = zerolog.DebugLevel
mlog.SetLevel(mlog.LevelDebug)
case "trace": case "trace":
zerolog.SetGlobalLevel(zerolog.DebugLevel) logLevel = zerolog.TraceLevel
mlog.SetLevel(mlog.LevelTrace)
default: default:
zerolog.SetGlobalLevel(zerolog.ErrorLevel) logLevel = zerolog.ErrorLevel
mlog.SetLevel(mlog.LevelError)
} }
var logger zerolog.Logger var logger zerolog.Logger
@@ -88,105 +106,9 @@ func NewLogger(opts ...Option) Logger {
logger = logger.With(). logger = logger.With().
Str("service", options.Name). Str("service", options.Name).
Timestamp(). Timestamp().
Logger() Logger().Level(logLevel)
mlog.SetLogger(
microZerolog{
logger: logger,
buffer: ring.New(mdlog.DefaultSize),
},
)
return Logger{ return Logger{
logger, logger,
} }
} }
// microZerolog implements the required interface for the go-micro logger.
type microZerolog struct {
logger zerolog.Logger
buffer *ring.Buffer
}
func (mz microZerolog) Read(opts ...mdlog.ReadOption) ([]mdlog.Record, error) {
options := mdlog.ReadOptions{}
for _, o := range opts {
o(&options)
}
var entries []*ring.Entry
if !options.Since.IsZero() {
entries = mz.buffer.Since(options.Since)
}
if options.Count > 0 {
switch len(entries) > 0 {
case true:
if options.Count > len(entries) {
entries = entries[0:options.Count]
}
default:
entries = mz.buffer.Get(options.Count)
}
}
records := make([]mdlog.Record, 0, len(entries))
for _, entry := range entries {
record := mdlog.Record{
Timestamp: entry.Timestamp,
Message: entry.Value,
}
records = append(records, record)
}
return records, nil
}
func (mz microZerolog) Write(record mdlog.Record) error {
level := record.Metadata["level"]
mz.log(level, fmt.Sprint(record.Message))
mz.buffer.Put(record.Message)
return nil
}
func (mz microZerolog) Stream() (mdlog.Stream, error) {
stream, stop := mz.buffer.Stream()
records := make(chan mdlog.Record, 128)
last10 := mz.buffer.Get(10)
go func() {
for _, entry := range last10 {
records <- mdlog.Record{
Timestamp: entry.Timestamp,
Message: entry.Value,
Metadata: make(map[string]string),
}
}
for entry := range stream {
records <- mdlog.Record{
Timestamp: entry.Timestamp,
Message: entry.Value,
Metadata: make(map[string]string),
}
}
}()
return &logStream{
stream: records,
stop: stop,
}, nil
}
func (mz microZerolog) log(level string, msg string) {
l, err := zerolog.ParseLevel(level)
if err != nil {
l = zerolog.InfoLevel
}
mz.logger.WithLevel(l).Msg(msg)
// Invoke os.Exit because unlike zerolog.Logger.Fatal zerolog.Logger.WithLevel won't stop the execution.
if l == zerolog.FatalLevel {
os.Exit(1)
}
}
+1 -1
View File
@@ -65,4 +65,4 @@ func main() {
} }
``` ```
Run the above example with `RUNTIME_KEEP_ALIVE=true` and with no `RUNTIME_KEEP_ALIVE` set to see its behavior. It requires an [oCIS binary](https://github.com/owncloud/ocis/releases) present in your `$PATH` for it to work. Run the example above with `RUNTIME_KEEP_ALIVE=true` and with no `RUNTIME_KEEP_ALIVE` set to see its behavior. It requires an [oCIS binary](https://github.com/owncloud/ocis/releases) present in your `$PATH` for it to work.
-19
View File
@@ -15,7 +15,6 @@ import (
"github.com/owncloud/ocis/v2/ocis-pkg/shared" "github.com/owncloud/ocis/v2/ocis-pkg/shared"
mzlog "github.com/go-micro/plugins/v4/logger/zerolog"
"github.com/mohae/deepcopy" "github.com/mohae/deepcopy"
"github.com/olekukonko/tablewriter" "github.com/olekukonko/tablewriter"
@@ -50,9 +49,7 @@ import (
users "github.com/owncloud/ocis/v2/services/users/pkg/command" users "github.com/owncloud/ocis/v2/services/users/pkg/command"
web "github.com/owncloud/ocis/v2/services/web/pkg/command" web "github.com/owncloud/ocis/v2/services/web/pkg/command"
webdav "github.com/owncloud/ocis/v2/services/webdav/pkg/command" webdav "github.com/owncloud/ocis/v2/services/webdav/pkg/command"
"github.com/rs/zerolog"
"github.com/thejerf/suture/v4" "github.com/thejerf/suture/v4"
"go-micro.dev/v4/logger"
) )
var ( var (
@@ -157,8 +154,6 @@ func Start(o ...Option) error {
halt := make(chan os.Signal, 1) halt := make(chan os.Signal, 1)
signal.Notify(halt, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT, syscall.SIGHUP) signal.Notify(halt, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT, syscall.SIGHUP)
setMicroLogger()
// tolerance controls backoff cycles from the supervisor. // tolerance controls backoff cycles from the supervisor.
tolerance := 5 tolerance := 5
totalBackoff := 0 totalBackoff := 0
@@ -301,17 +296,3 @@ func trap(s *Service, halt chan os.Signal) {
s.Log.Debug().Str("service", "runtime service").Msgf("terminating with signal: %v", s) s.Log.Debug().Str("service", "runtime service").Msgf("terminating with signal: %v", s)
os.Exit(0) os.Exit(0)
} }
// for logging reasons we don't want the same logging level on both oCIS and micro. As a framework builder we do not
// want to expose to the end user the internal framework logs unless explicitly specified.
func setMicroLogger() {
if os.Getenv("MICRO_LOG_LEVEL") == "" {
_ = os.Setenv("MICRO_LOG_LEVEL", "error")
}
lev, err := zerolog.ParseLevel(os.Getenv("MICRO_LOG_LEVEL"))
if err != nil {
lev = zerolog.ErrorLevel
}
logger.DefaultLogger = mzlog.NewLogger(logger.WithLevel(logger.Level(lev)))
}
+1 -1
View File
@@ -101,7 +101,7 @@ type Archiver struct {
} }
type DataGateway struct { type DataGateway struct {
Prefix string `yaml:"prefix" env:"FRONTEND_DATA_GATEWAY_PREFIX"` Prefix string `yaml:"prefix" env:"FRONTEND_DATA_GATEWAY_PREFIX" desc:"Path prefix for the data gateway."`
} }
type OCS struct { type OCS struct {
@@ -38,7 +38,7 @@ func DefaultConfig() *config.Config {
UploadMaxChunkSize: 1e+8, UploadMaxChunkSize: 1e+8,
UploadHTTPMethodOverride: "", UploadHTTPMethodOverride: "",
DefaultUploadProtocol: "tus", DefaultUploadProtocol: "tus",
EnableResharing: false, EnableResharing: true,
Checksums: config.Checksums{ Checksums: config.Checksums{
SupportedTypes: []string{"sha1", "md5", "adler32"}, SupportedTypes: []string{"sha1", "md5", "adler32"},
PreferredUploadType: "", PreferredUploadType: "",
+3 -3
View File
@@ -5,7 +5,7 @@ type HTTP struct {
Addr string `yaml:"addr" env:"IDP_HTTP_ADDR" desc:"The bind address of the HTTP service."` Addr string `yaml:"addr" env:"IDP_HTTP_ADDR" desc:"The bind address of the HTTP service."`
Root string `yaml:"root" env:"IDP_HTTP_ROOT" desc:"Subdirectory that serves as the root for this HTTP service."` Root string `yaml:"root" env:"IDP_HTTP_ROOT" desc:"Subdirectory that serves as the root for this HTTP service."`
Namespace string `yaml:"-"` Namespace string `yaml:"-"`
TLSCert string `yaml:"tls_cert" env:"IDP_TRANSPORT_TLS_CERT"` TLSCert string `yaml:"tls_cert" env:"IDP_TRANSPORT_TLS_CERT" desc:"File name of the TLS server certificate for the HTTPS server."`
TLSKey string `yaml:"tls_key" env:"IDP_TRANSPORT_TLS_KEY"` TLSKey string `yaml:"tls_key" env:"IDP_TRANSPORT_TLS_KEY" desc:"File name of the TLS server certificate key for the HTTPS server."`
TLS bool `yaml:"tls" env:"IDP_TLS"` TLS bool `yaml:"tls" env:"IDP_TLS" desc:"Use the HTTPS server instead of the HTTP server."`
} }
+1 -1
View File
@@ -27,7 +27,7 @@ type Config struct {
PublicURL string `yaml:"public_url" env:"OCIS_URL;OCDAV_PUBLIC_URL" desc:"URL where oCIS is reachable for users."` PublicURL string `yaml:"public_url" env:"OCIS_URL;OCDAV_PUBLIC_URL" desc:"URL where oCIS is reachable for users."`
// Insecure certificates allowed when making requests to the gateway // Insecure certificates allowed when making requests to the gateway
Insecure bool `yaml:"insecure" env:"OCIS_INSECURE;OCDAV_INSECURE"` Insecure bool `yaml:"insecure" env:"OCIS_INSECURE;OCDAV_INSECURE" desc:"Allow insecure connections to the GATEWAY service."`
// Timeout in seconds when making requests to the gateway // Timeout in seconds when making requests to the gateway
Timeout int64 `yaml:"gateway_request_timeout" env:"OCDAV_GATEWAY_REQUEST_TIMEOUT" desc:"Request timeout in seconds for requests from the oCDAV service to the GATEWAY service."` Timeout int64 `yaml:"gateway_request_timeout" env:"OCDAV_GATEWAY_REQUEST_TIMEOUT" desc:"Request timeout in seconds for requests from the oCDAV service to the GATEWAY service."`
Middleware Middleware `yaml:"middleware"` Middleware Middleware `yaml:"middleware"`
+3 -3
View File
@@ -5,7 +5,7 @@ type HTTP struct {
Addr string `yaml:"addr" env:"PROXY_HTTP_ADDR" desc:"The bind address of the HTTP service."` Addr string `yaml:"addr" env:"PROXY_HTTP_ADDR" desc:"The bind address of the HTTP service."`
Root string `yaml:"root" env:"PROXY_HTTP_ROOT" desc:"Subdirectory that serves as the root for this HTTP service."` Root string `yaml:"root" env:"PROXY_HTTP_ROOT" desc:"Subdirectory that serves as the root for this HTTP service."`
Namespace string `yaml:"-"` Namespace string `yaml:"-"`
TLSCert string `yaml:"tls_cert" env:"PROXY_TRANSPORT_TLS_CERT"` TLSCert string `yaml:"tls_cert" env:"PROXY_TRANSPORT_TLS_CERT" desc:"File name of the TLS server certificate for the HTTPS server."`
TLSKey string `yaml:"tls_key" env:"PROXY_TRANSPORT_TLS_KEY"` TLSKey string `yaml:"tls_key" env:"PROXY_TRANSPORT_TLS_KEY" desc:"File name of the TLS server certificate key for the HTTPS server."`
TLS bool `yaml:"tls" env:"PROXY_TLS"` TLS bool `yaml:"tls" env:"PROXY_TLS" desc:"Use the HTTPS server instead of the HTTP server."`
} }
+2 -3
View File
@@ -49,14 +49,14 @@
"@babel/plugin-syntax-dynamic-import": "^7.7.4", "@babel/plugin-syntax-dynamic-import": "^7.7.4",
"@babel/plugin-transform-runtime": "^7.15.0", "@babel/plugin-transform-runtime": "^7.15.0",
"@babel/polyfill": "^7.10.1", "@babel/polyfill": "^7.10.1",
"@babel/preset-env": "^7.16.11", "@babel/preset-env": "^7.18.6",
"@babel/register": "^7.17.7", "@babel/register": "^7.17.7",
"@cucumber/cucumber": "^7.3.2", "@cucumber/cucumber": "^7.3.2",
"@cucumber/pretty-formatter": "^1.0.0", "@cucumber/pretty-formatter": "^1.0.0",
"@erquhart/rollup-plugin-node-builtins": "^2.1.5", "@erquhart/rollup-plugin-node-builtins": "^2.1.5",
"@rollup/plugin-commonjs": "^17.1.0", "@rollup/plugin-commonjs": "^17.1.0",
"@rollup/plugin-json": "^4.0.1", "@rollup/plugin-json": "^4.0.1",
"@rollup/plugin-replace": "^2.4.2", "@rollup/plugin-replace": "^4.0.0",
"archiver": "^5.3.0", "archiver": "^5.3.0",
"chromedriver": "^93.0.1", "chromedriver": "^93.0.1",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
@@ -75,7 +75,6 @@
"license-checker-rseidelsohn": "^3.1.0", "license-checker-rseidelsohn": "^3.1.0",
"nightwatch": "1.7.11", "nightwatch": "1.7.11",
"nightwatch-api": "3.0.2", "nightwatch-api": "3.0.2",
"nightwatch-vrt": "^0.2.10",
"node-fetch": "^2.6.7", "node-fetch": "^2.6.7",
"rollup": "^2.75.7", "rollup": "^2.75.7",
"rollup-plugin-babel": "^4.3.3", "rollup-plugin-babel": "^4.3.3",
+1 -1
View File
@@ -115,7 +115,7 @@ export default {
function injectAuthToken (rootGetters) { function injectAuthToken (rootGetters) {
axios.interceptors.request.use(config => { axios.interceptors.request.use(config => {
if (typeof config.headers.Authorization === 'undefined') { if (typeof config.headers.Authorization === 'undefined') {
const token = rootGetters.user.token const token = rootGetters['runtime/auth/accessToken']
if (token) { if (token) {
config.headers.Authorization = `Bearer ${token}` config.headers.Authorization = `Bearer ${token}`
} }
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1,6 +1,6 @@
SHELL := bash SHELL := bash
NAME := web NAME := web
WEB_ASSETS_VERSION = v5.7.0-rc.1 WEB_ASSETS_VERSION = v5.7.0-rc.4
include ../../.make/recursion.mk include ../../.make/recursion.mk
@@ -21,3 +21,7 @@ The expected failures in this file are from features in the owncloud/ocis repo.
### [Search by shares jail works incorrect](https://github.com/owncloud/ocis/issues/4014) ### [Search by shares jail works incorrect](https://github.com/owncloud/ocis/issues/4014)
- [apiSpaces/search.feature:43](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/search.feature#L43) - [apiSpaces/search.feature:43](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/search.feature#L43)
### [Space Admin still has access to the project despite being removed from it](https://github.com/owncloud/ocis/issues/4127)
- [apiSpaces/shareSpaces.feature:77](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/shareSpaces.feature#L77)
- [apiSpaces/shareSpaces.feature:78](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/shareSpaces.feature#L78)
@@ -45,8 +45,6 @@ Other free text and markdown formatting can be used elsewhere in the document if
- [webUISharingInternalUsers/shareWithUsers.feature:276](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUISharingInternalUsers/shareWithUsers.feature#L276) - [webUISharingInternalUsers/shareWithUsers.feature:276](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUISharingInternalUsers/shareWithUsers.feature#L276)
- [webUISharingInternalUsers/shareWithUsers.feature:277](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUISharingInternalUsers/shareWithUsers.feature#L277) - [webUISharingInternalUsers/shareWithUsers.feature:277](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUISharingInternalUsers/shareWithUsers.feature#L277)
- [webUISharingInternalUsersShareWithPage/shareWithUsers.feature:140](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUISharingInternalUsersShareWithPage/shareWithUsers.feature#L140) - [webUISharingInternalUsersShareWithPage/shareWithUsers.feature:140](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUISharingInternalUsersShareWithPage/shareWithUsers.feature#L140)
- [webUISharingPermissionsUsers/sharePermissionsUsers.feature:187](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUISharingPermissionsUsers/sharePermissionsUsers.feature#L196)
- [webUISharingPermissionsUsers/sharePermissionsUsers.feature:200](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUISharingPermissionsUsers/sharePermissionsUsers.feature#L209)
- [webUISharingPermissionsUsers/sharePermissionsUsers.feature:214](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUISharingPermissionsUsers/sharePermissionsUsers.feature#L223) - [webUISharingPermissionsUsers/sharePermissionsUsers.feature:214](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUISharingPermissionsUsers/sharePermissionsUsers.feature#L223)
- [webUIResharing2/reshareUsers.feature:41](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUIResharing2/reshareUsers.feature#L41) - [webUIResharing2/reshareUsers.feature:41](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUIResharing2/reshareUsers.feature#L41)
- [webUIResharing2/reshareUsers.feature:69](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUIResharing2/reshareUsers.feature#L69) - [webUIResharing2/reshareUsers.feature:69](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUIResharing2/reshareUsers.feature#L69)
@@ -129,7 +127,6 @@ Other free text and markdown formatting can be used elsewhere in the document if
- [webUIPrivateLinks/accessingPrivateLinks.feature:17](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUIPrivateLinks/accessingPrivateLinks.feature#L17) - [webUIPrivateLinks/accessingPrivateLinks.feature:17](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUIPrivateLinks/accessingPrivateLinks.feature#L17)
- [webUIPrivateLinks/accessingPrivateLinks.feature:25](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUIPrivateLinks/accessingPrivateLinks.feature#L25) - [webUIPrivateLinks/accessingPrivateLinks.feature:25](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUIPrivateLinks/accessingPrivateLinks.feature#L25)
- [webUIPrivateLinks/accessingPrivateLinks.feature:35](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUIPrivateLinks/accessingPrivateLinks.feature#L35) - [webUIPrivateLinks/accessingPrivateLinks.feature:35](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUIPrivateLinks/accessingPrivateLinks.feature#L35)
- [webUIPrivateLinks/accessingPrivateLinks.feature:45](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUIPrivateLinks/accessingPrivateLinks.feature#L45)
### [various sharing settings cannot be set](https://github.com/owncloud/ocis/issues/1328) ### [various sharing settings cannot be set](https://github.com/owncloud/ocis/issues/1328)
- [webUIRestrictSharing/disableSharing.feature:16](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUIRestrictSharing/disableSharing.feature#L16) - [webUIRestrictSharing/disableSharing.feature:16](https://github.com/owncloud/web/blob/master/tests/acceptance/features/webUIRestrictSharing/disableSharing.feature#L16)
@@ -62,6 +62,22 @@ Feature: Share spaces
Then the user "Brian" should not have a space called "share space" Then the user "Brian" should not have a space called "share space"
Scenario Outline: Owner of a space cannot see the space after removing his access to the space
Given user "Alice" has shared a space "share space" to user "Brian" with role "manager"
When user "<user>" unshares a space "share space" to user "Alice"
Then the HTTP status code should be "200"
And the user "Brian" should have a space called "share space" owned by "Alice" with these key and value pairs:
| key | value |
| driveType | project |
| id | %space_id% |
| name | share space |
But the user "Alice" should not have a space called "share space"
Examples:
| user |
| Alice |
| Brian |
Scenario: A user can add another user to the space managers to enable him Scenario: A user can add another user to the space managers to enable him
Given user "Alice" has uploaded a file inside space "share space" with content "Test" to "test.txt" Given user "Alice" has uploaded a file inside space "share space" with content "Test" to "test.txt"
When user "Alice" shares a space "share space" to user "Brian" with role "manager" When user "Alice" shares a space "share space" to user "Brian" with role "manager"
+2
View File
@@ -10,6 +10,8 @@
"scope": "openid profile email" "scope": "openid profile email"
}, },
"options": { "options": {
"topCenterNotifications": true,
"disablePreviews": true,
"displayResourcesLazy": false, "displayResourcesLazy": false,
"sidebar": { "sidebar": {
"shares": { "shares": {