diff --git a/.drone.star b/.drone.star index 6f47c4e57e..90bdc24b61 100644 --- a/.drone.star +++ b/.drone.star @@ -1,18 +1,17 @@ OC_CI_GOLANG = "owncloudci/golang:1.19" OC_CI_ALPINE = "owncloudci/alpine:latest" OSIXIA_OPEN_LDAP = "osixia/openldap:1.3.0" -REDIS = "redis:6-alpine" OC_CI_PHP = "owncloudci/php:7.4" OC_LITMUS = "owncloud/litmus:latest" OC_CS3_API_VALIDATOR = "owncloud/cs3api-validator:0.2.0" OC_CI_BAZEL_BUILDIFIER = "owncloudci/bazel-buildifier:latest" -def makeStep(target): +def makeStep(): return { "name": "build", "image": OC_CI_GOLANG, "commands": [ - "make %s" % target, + "make build", ], } @@ -44,16 +43,6 @@ def ldapService(): }, } -def redisService(): - return { - "name": "redis", - "image": REDIS, - "pull": "always", - "environment": { - "REDIS_DATABASES": 1, - }, - } - def cephService(): return { "name": "ceph", @@ -80,8 +69,6 @@ def main(ctx): # implemented for: ocisIntegrationTests and s3ngIntegrationTests return [ checkStarlark(), - litmusOcisOldWebdav(), - litmusOcisNewWebdav(), litmusOcisSpacesDav(), virtualViews(), ] + ocisIntegrationTests(6) + s3ngIntegrationTests(12) @@ -104,7 +91,7 @@ def virtualViews(): }, }, "steps": [ - makeStep("build-ci"), + makeStep(), { "name": "revad-services", "image": OC_CI_GOLANG, @@ -145,111 +132,6 @@ def virtualViews(): ], } -def litmusOcisOldWebdav(): - return { - "kind": "pipeline", - "type": "docker", - "name": "litmus-ocis-old-webdav", - "platform": { - "os": "linux", - "arch": "amd64", - }, - "trigger": { - "event": { - "include": [ - "pull_request", - "tag", - ], - }, - }, - "steps": [ - makeStep("build-ci"), - { - "name": "revad-services", - "image": OC_CI_GOLANG, - "detach": True, - "commands": [ - "cd /drone/src/tests/oc-integration-tests/drone/", - "/drone/src/cmd/revad/revad -c frontend.toml &", - "/drone/src/cmd/revad/revad -c gateway.toml &", - "/drone/src/cmd/revad/revad -c storage-home-ocis.toml &", - "/drone/src/cmd/revad/revad -c storage-users-ocis.toml &", - "/drone/src/cmd/revad/revad -c users.toml", - ], - }, - { - "name": "sleep-for-revad-start", - "image": OC_CI_GOLANG, - "commands": [ - "sleep 5", - ], - }, - { - "name": "litmus-ocis-old-webdav", - "image": OC_LITMUS, - "environment": { - "LITMUS_URL": "http://revad-services:20080/remote.php/webdav", - "LITMUS_USERNAME": "einstein", - "LITMUS_PASSWORD": "relativity", - "TESTS": "basic http copymove props", - }, - }, - ], - } - -def litmusOcisNewWebdav(): - return { - "kind": "pipeline", - "type": "docker", - "name": "litmus-ocis-new-webdav", - "platform": { - "os": "linux", - "arch": "amd64", - }, - "trigger": { - "event": { - "include": [ - "pull_request", - "tag", - ], - }, - }, - "steps": [ - makeStep("build-ci"), - { - "name": "revad-services", - "image": OC_CI_GOLANG, - "detach": True, - "commands": [ - "cd /drone/src/tests/oc-integration-tests/drone/", - "/drone/src/cmd/revad/revad -c frontend.toml &", - "/drone/src/cmd/revad/revad -c gateway.toml &", - "/drone/src/cmd/revad/revad -c storage-home-ocis.toml &", - "/drone/src/cmd/revad/revad -c storage-users-ocis.toml &", - "/drone/src/cmd/revad/revad -c users.toml", - ], - }, - { - "name": "sleep-for-revad-start", - "image": OC_CI_GOLANG, - "commands": [ - "sleep 5", - ], - }, - { - "name": "litmus-ocis-new-webdav", - "image": OC_LITMUS, - "environment": { - # UUID is einstein user, see https://github.com/owncloud/ocis-accounts/blob/8de0530f31ed5ffb0bbb7f7f3471f87f429cb2ea/pkg/service/v0/service.go#L45 - "LITMUS_URL": "http://revad-services:20080/remote.php/dav/files/4c510ada-c86b-4815-8820-42cdf82c3d51", - "LITMUS_USERNAME": "einstein", - "LITMUS_PASSWORD": "relativity", - "TESTS": "basic http copymove props", - }, - }, - ], - } - def litmusOcisSpacesDav(): return { "kind": "pipeline", @@ -268,7 +150,7 @@ def litmusOcisSpacesDav(): }, }, "steps": [ - makeStep("build-ci"), + makeStep(), { "name": "revad-services", "image": OC_CI_GOLANG, @@ -333,7 +215,7 @@ def ocisIntegrationTests(parallelRuns, skipExceptParts = []): }, }, "steps": [ - makeStep("build-ci"), + makeStep(), { "name": "revad-services", "image": OC_CI_GOLANG, @@ -409,7 +291,7 @@ def s3ngIntegrationTests(parallelRuns, skipExceptParts = []): }, }, "steps": [ - makeStep("build-ci"), + makeStep(), { "name": "revad-services", "image": OC_CI_GOLANG, diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml deleted file mode 100644 index 2bc3757aa7..0000000000 --- a/.github/workflows/docker.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: Build Docker -on: - push: - branches: - - "master" - tags: - - "*" - pull_request: - workflow_dispatch: - -jobs: - docker: - runs-on: self-hosted - strategy: - matrix: - include: - - tag: reva:${{ ((github.ref_type == 'tag') && github.ref_name) || 'latest' }} - file: Dockerfile.reva - - tag: revad:${{ ((github.ref_type == 'tag') && github.ref_name) || 'latest' }} - file: Dockerfile.revad - - tag: revad:${{ ((github.ref_type == 'tag') && github.ref_name) || 'latest' }}-eos - file: Dockerfile.revad-eos - - tag: revad:${{ ((github.ref_type == 'tag') && github.ref_name) || 'latest' }}-ceph - file: Dockerfile.revad-ceph - steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - name: Login to Docker Hub - uses: docker/login-action@v2 - if: ${{ github.event_name != 'pull_request' }} - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build ${{ ((github.event_name != 'pull_request') && 'and push') || '' }} ${{ matrix.tag }} - uses: docker/build-push-action@v3 - with: - context: . - push: ${{ github.event_name != 'pull_request' }} - file: ${{ matrix.file }} - tags: ${{ ((github.event_name != 'pull_request') && format('{0}/{1}', secrets.DOCKERHUB_ORGANIZATION, matrix.tag)) || '' }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 707c928b9f..484a01ccf6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,33 @@ jobs: run: make dist VERSION=${{ github.ref_name }} GIT_COMMIT=${{ github.sha }} GO_VERSION=$(go version | awk '{print $3}') - name: Release uses: softprops/action-gh-release@v1 - if: startsWith(github.ref, 'refs/tags/') with: files: "dist/*" body_path: "changelog/NOTE.md" + docker: + runs-on: self-hosted + strategy: + matrix: + include: + - tag: ${{ secrets.DOCKERHUB_ORGANIZATION }}/reva:${{ github.ref_name }} + file: Dockerfile.reva + - tag: ${{ secrets.DOCKERHUB_ORGANIZATION }}/revad:${{ github.ref_name }} + file: Dockerfile.revad + - tag: ${{ secrets.DOCKERHUB_ORGANIZATION }}/revad:${{ github.ref_name }}-eos + file: Dockerfile.revad-eos + - tag: ${{ secrets.DOCKERHUB_ORGANIZATION }}/revad:${{ github.ref_name }}-ceph + file: Dockerfile.revad-ceph + steps: + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Build and push ${{ matrix.tag }} + uses: docker/build-push-action@v3 + with: + push: true + file: docker/${{ matrix.file }} + tags: ${{ matrix.tag }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a42550c84f..1f6e62f1c9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,6 +1,9 @@ name: Test on: [pull_request, push, workflow_dispatch] +env: + TEST_IMAGE: 'revad:test' + jobs: test: runs-on: self-hosted @@ -14,7 +17,47 @@ jobs: - name: Test run: make test - name: Test integration - run: make test-integration REDIS_ADDRESS=redis:6379 + run: make test-integration + env: + REDIS_ADDRESS: redis:6379 services: redis: image: registry.cern.ch/docker.io/webhippie/redis + docker: + runs-on: self-hosted + strategy: + matrix: + image: [reva, revad, revad-eos, revad-ceph] + steps: + - name: Checkout + uses: actions/checkout@v3.1.0 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Build Docker image from ${{ matrix.image }} + uses: docker/build-push-action@v3 + with: + context: . + file: docker/Dockerfile.${{ matrix.image }} + tags: ${{ env.TEST_IMAGE }} + load: ${{ matrix.image == 'revad' }} + - name: Upload ${{ env.TEST_IMAGE }} to artifacts + uses: ishworkh/docker-image-artifact-upload@v1 + if: ${{ matrix.image == 'revad' }} + with: + image: ${{ env.TEST_IMAGE }} + retention_days: '1' + litmus: + needs: docker + runs-on: self-hosted + strategy: + matrix: + test: [litmus-1-only, litmus-2-only] + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Download image + uses: ishworkh/docker-image-artifact-download@v1 + with: + image: ${{ env.TEST_IMAGE }} + - name: Test + run: make ${{ matrix.test }} \ No newline at end of file diff --git a/Makefile b/Makefile index b2fd68bc1e..59b5cce878 100644 --- a/Makefile +++ b/Makefile @@ -1,18 +1,33 @@ -SHELL := /bin/bash BUILD_DATE=`date +%FT%T%z` GIT_COMMIT ?= `git rev-parse --short HEAD` -GIT_BRANCH=`git rev-parse --symbolic-full-name --abbrev-ref HEAD` GIT_DIRTY=`git diff-index --quiet HEAD -- || echo "dirty-"` VERSION ?= `git describe --always` GO_VERSION ?= `go version | awk '{print $$3}'` -MINIMUM_GO_VERSION=1.16.2 BUILD_FLAGS="-X main.gitCommit=${GIT_COMMIT} -X main.version=${VERSION} -X main.goVersion=${GO_VERSION} -X main.buildDate=${BUILD_DATE}" -CI_BUILD_FLAGS="-w -extldflags "-static" -X main.gitCommit=${GIT_COMMIT} -X main.version=${VERSION} -X main.goVersion=${GO_VERSION} -X main.buildDate=${BUILD_DATE}" -LITMUS_URL_OLD="http://localhost:20080/remote.php/webdav" -LITMUS_URL_NEW="http://localhost:20080/remote.php/dav/files/4c510ada-c86b-4815-8820-42cdf82c3d51" -LITMUS_USERNAME="einstein" -LITMUS_PASSWORD="relativity" -TESTS="basic http copymove props" + +TEST_IMAGE ?= revad:test + +.PHONY: test-image +test-image: + docker build -t $(TEST_IMAGE) -f docker/Dockerfile.revad . + +LITMUS ?= $(CURDIR)/tests/litmus +TIMEOUT ?= 3600 +URL_PATH ?= /remote.php/webdav + +.PHONY: litmus-1-only +litmus-1-only: + @cd $(LITMUS) && URL_PATH=$(URL_PATH) TEST_IMAGE=$(TEST_IMAGE) docker-compose up --remove-orphans --force-recreate --exit-code-from litmus --abort-on-container-exit --timeout $(TIMEOUT) + +.PHONY: litmus-1 +litmus-1: test-image litmus-1-only + +.PHONY: litmus-2-only +litmus-2-only: URL_PATH=/remote.php/dav/files/4c510ada-c86b-4815-8820-42cdf82c3d51 +litmus-2-only: litmus-1-only + +.PHONY: litmus-2 +litmus-2: test-image litmus-2-only TOOLCHAIN ?= $(CURDIR)/toolchain GOLANGCI_LINT ?= $(TOOLCHAIN)/golangci-lint @@ -72,7 +87,7 @@ imports: off $(GOIMPORTS) $(GOIMPORTS) -w tools pkg internal cmd .PHONY: build -build: build-revad build-reva test-go-version +build: build-revad build-reva .PHONY: build-cephfs build-cephfs: build-revad-cephfs build-reva @@ -111,42 +126,13 @@ test: off go test -coverprofile coverage.out -race $$(go list ./... | grep -v /tests/integration) .PHONY: test-integration -test-integration: build-ci +test-integration: build cd tests/integration && go test -race ./... -.PHONY: litmus-test-old -litmus-test-old: build - cd tests/oc-integration-tests/local && ../../../cmd/revad/revad -c frontend.toml & - cd tests/oc-integration-tests/local && ../../../cmd/revad/revad -c gateway.toml & - cd tests/oc-integration-tests/local && ../../../cmd/revad/revad -c storage-home.toml & - cd tests/oc-integration-tests/local && ../../../cmd/revad/revad -c storage-users.toml & - cd tests/oc-integration-tests/local && ../../../cmd/revad/revad -c users.toml & - docker run --rm --network=host -e LITMUS_URL=$(LITMUS_URL_OLD) -e LITMUS_USERNAME=$(LITMUS_USERNAME) -e LITMUS_PASSWORD=$(LITMUS_PASSWORD) -e TESTS=$(TESTS) owncloud/litmus:latest - pkill revad - -.PHONY: litmus-test-new -litmus-test-new: build - cd tests/oc-integration-tests/local && ../../../cmd/revad/revad -c frontend.toml & - cd tests/oc-integration-tests/local && ../../../cmd/revad/revad -c gateway.toml & - cd tests/oc-integration-tests/local && ../../../cmd/revad/revad -c storage-home.toml & - cd tests/oc-integration-tests/local && ../../../cmd/revad/revad -c storage-users.toml & - cd tests/oc-integration-tests/local && ../../../cmd/revad/revad -c users.toml & - docker run --rm --network=host -e LITMUS_URL=$(LITMUS_URL_NEW) -e LITMUS_USERNAME=$(LITMUS_USERNAME) -e LITMUS_PASSWORD=$(LITMUS_PASSWORD) -e TESTS=$(TESTS) owncloud/litmus:latest - pkill revad - .PHONY: contrib contrib: git shortlog -se | cut -c8- | sort -u | awk '{print "-", $$0}' | grep -v 'users.noreply.github.com' > CONTRIBUTORS.md -.PHONY: test-go-version -test-go-version: - @echo -e "$(MINIMUM_GO_VERSION)\n$(shell echo $(GO_VERSION) | sed 's/go//')" | sort -Vc &> /dev/null || echo -e "\n\033[33;5m[WARNING]\033[0m You are not using a supported go version. Please use $(MINIMUM_GO_VERSION) or above.\n" - -.PHONY: build-ci -build-ci: off - go build -ldflags ${BUILD_FLAGS} -o ./cmd/revad/revad ./cmd/revad - go build -ldflags ${BUILD_FLAGS} -o ./cmd/reva/reva ./cmd/reva - .PHONY: gen-doc gen-doc: go run tools/generate-documentation/main.go diff --git a/changelog/unreleased/enhancement-litmus.md b/changelog/unreleased/enhancement-litmus.md new file mode 100644 index 0000000000..7fcc6c6b9e --- /dev/null +++ b/changelog/unreleased/enhancement-litmus.md @@ -0,0 +1,5 @@ +Enhancement: Migrate the litmus tests from Drone to GitHub Actions + +We've migrated the litmusOcisOldWebdav and the litmusOcisNewWebdav tests from Drone to GitHub Actions. + +https://github.com/cs3org/reva/pull/3565 \ No newline at end of file diff --git a/Dockerfile.reva b/docker/Dockerfile.reva similarity index 100% rename from Dockerfile.reva rename to docker/Dockerfile.reva diff --git a/Dockerfile.revad b/docker/Dockerfile.revad similarity index 93% rename from Dockerfile.revad rename to docker/Dockerfile.revad index 2235013206..3c860e8a77 100644 --- a/Dockerfile.revad +++ b/docker/Dockerfile.revad @@ -34,15 +34,13 @@ COPY . . RUN make build-revad-docker && \ cp /go/src/github/cs3org/reva/cmd/revad/revad /go/bin/revad -RUN mkdir -p /etc/revad/ && echo "" > /etc/revad/revad.toml +RUN mkdir -p /etc/revad/ && touch /etc/revad/revad.toml -FROM golang:alpine3.16 +FROM alpine:3.16 RUN apk --no-cache add \ mailcap -EXPOSE 9999 10000 - COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ COPY --from=builder /go/bin/revad /usr/bin/revad COPY --from=builder /etc/revad /etc/revad diff --git a/Dockerfile.revad-ceph b/docker/Dockerfile.revad-ceph similarity index 96% rename from Dockerfile.revad-ceph rename to docker/Dockerfile.revad-ceph index 5021845649..e1cc7d8d15 100644 --- a/Dockerfile.revad-ceph +++ b/docker/Dockerfile.revad-ceph @@ -44,7 +44,7 @@ RUN mkdir -p /go/bin && \ RUN cp -r examples/ceph /etc/ -RUN mkdir -p /etc/revad/ && echo "" > /etc/revad/revad.toml +RUN mkdir -p /etc/revad/ && touch /etc/revad/revad.toml EXPOSE 9999 10000 diff --git a/Dockerfile.revad-eos b/docker/Dockerfile.revad-eos similarity index 100% rename from Dockerfile.revad-eos rename to docker/Dockerfile.revad-eos diff --git a/tests/integration/grpc/storageprovider_test.go b/tests/integration/grpc/storageprovider_test.go index 9990fe7ef4..14c3f69b55 100644 --- a/tests/integration/grpc/storageprovider_test.go +++ b/tests/integration/grpc/storageprovider_test.go @@ -610,7 +610,6 @@ var _ = Describe("storage providers", func() { assertCreateContainer() assertListContainer() - // assertGetPath() TODO: Investigate why this test is failing assertDelete() assertMove() assertGrants() diff --git a/tests/litmus/docker-compose.yml b/tests/litmus/docker-compose.yml new file mode 100644 index 0000000000..e65608bc39 --- /dev/null +++ b/tests/litmus/docker-compose.yml @@ -0,0 +1,36 @@ +version: "3.3" +services: + frontend: + image: ${TEST_IMAGE} + command: -c /litmus/frontend.toml + volumes: + - .:/litmus + working_dir: /litmus + gateway: + image: ${TEST_IMAGE} + command: -c /litmus/gateway.toml + volumes: + - .:/litmus + storage-home-ocis: + image: ${TEST_IMAGE} + command: -c /litmus/storage-home-ocis.toml + volumes: + - .:/litmus + users: + image: ${TEST_IMAGE} + command: -c /litmus/users.toml + volumes: + - .:/litmus + working_dir: /litmus + litmus: + image: registry.cern.ch/docker.io/owncloud/litmus:latest + environment: + LITMUS_URL: http://frontend:20080${URL_PATH} + LITMUS_USERNAME: einstein + LITMUS_PASSWORD: relativity + TESTS: basic http copymove props + depends_on: + - frontend + - gateway + - storage-home-ocis + - users \ No newline at end of file diff --git a/tests/oc-integration-tests/local/frontend.toml b/tests/litmus/frontend.toml similarity index 92% rename from tests/oc-integration-tests/local/frontend.toml rename to tests/litmus/frontend.toml index 97536ddd71..a0de367e70 100644 --- a/tests/oc-integration-tests/local/frontend.toml +++ b/tests/litmus/frontend.toml @@ -8,7 +8,17 @@ [shared] jwt_secret = "Pive-Fumkiu4" -gatewaysvc = "localhost:19000" +gatewaysvc = "gateway:19000" + +[grpc] +address = "0.0.0.0:20099" + +[grpc.services.authprovider] +auth_manager = "oidc" + +# If you want to use your own openid provider change this config +[grpc.services.authprovider.auth_managers.oidc] +issuer = "http://localhost:20080" [http] address = "0.0.0.0:20080" @@ -19,7 +29,7 @@ allow_credentials = true [http.services.ocdav] # serve ocdav on the root path prefix = "" -chunk_folder = "/var/tmp/reva/chunks" +chunk_folder = "/tmp/reva/chunks" # for user lookups # prefix the path of requests to /dav/files with this namespace # While owncloud has only listed usernames at this endpoint CERN has @@ -48,7 +58,6 @@ files_namespace = "/users" # - TODO android? no sync ... but will see different tree webdav_namespace = "/home" -# serve /ocs which contains the sharing and user provisioning api of owncloud classic [http.services.ocs] [http.services.ocs.capabilities.capabilities.core.status] diff --git a/tests/oc-integration-tests/local/gateway.toml b/tests/litmus/gateway.toml similarity index 83% rename from tests/oc-integration-tests/local/gateway.toml rename to tests/litmus/gateway.toml index 39d387d724..021b790bf2 100644 --- a/tests/oc-integration-tests/local/gateway.toml +++ b/tests/litmus/gateway.toml @@ -18,10 +18,10 @@ address = "0.0.0.0:19000" authregistrysvc = "localhost:19000" storageregistrysvc = "localhost:19000" # user metadata -preferencessvc = "localhost:18000" -userprovidersvc = "localhost:18000" -groupprovidersvc = "localhost:18000" -# an approvider lives on "localhost:18000" as well, see users.toml +preferencessvc = "users:18000" +userprovidersvc = "users:18000" +groupprovidersvc = "users:18000" +# an approvider lives on "users:18000" as well, see users.toml # sharing usershareprovidersvc = "localhost:17000" publicshareprovidersvc = "localhost:17000" @@ -40,14 +40,14 @@ datagateway = "http://localhost:19001/data" transfer_shared_secret = "replace-me-with-a-transfer-secret" # for direct uploads transfer_expires = 6 # give it a moment #disable_home_creation_on_login = true -link_grants_file = "/var/tmp/reva/link_grants_file.json" +link_grants_file = "/tmp/reva/link_grants_file.json" [grpc.services.authregistry] driver = "static" [grpc.services.authregistry.drivers.static.rules] publicshares = "localhost:17000" # started with the shares.toml -basic = "localhost:18000" # started with the users.toml +basic = "users:18000" # started with the users.toml [grpc.services.storageregistry] driver = "static" @@ -59,11 +59,11 @@ home_provider = "/home" # mount a home storage provider that uses a context based path wrapper # to jail users into their home dir -"/home" = {"address" = "localhost:12000"} +"/home" = {"address" = "storage-home-ocis:12000"} # mount a storage provider without a path wrapper for direct access to users. -"/users" = {"address" = "localhost:11000"} -"123e4567-e89b-12d3-a456-426655440000" = {"address" = "localhost:11000"} +"/users" = {"address" = "storage-users-ocis:11000"} +"123e4567-e89b-12d3-a456-426655440000" = {"address" = "storage-users-ocis:11000"} # the /virtual namespace is only accessible via the frontend-global service "/virtual/[a-k]" = {"address" = "localhost:11100"} diff --git a/tests/oc-integration-tests/local-mesh/providers.demo.json b/tests/litmus/providers.demo.json similarity index 89% rename from tests/oc-integration-tests/local-mesh/providers.demo.json rename to tests/litmus/providers.demo.json index f2111b71b2..1c385e3bdf 100644 --- a/tests/oc-integration-tests/local-mesh/providers.demo.json +++ b/tests/litmus/providers.demo.json @@ -14,11 +14,11 @@ "description": "Example Open Cloud Mesh API" }, "name": "Example - OCM API", - "path": "http://127.0.0.1:20080/ocm/", + "path": "http://frontend:20080/ocm/", "is_monitored": true }, "api_version": "0.0.1", - "host": "127.0.0.1:20080" + "host": "frontend:20080" }, { "endpoint": { @@ -27,11 +27,11 @@ "description": "Example Webdav API" }, "name": "Example - Webdav API", - "path": "http://127.0.0.1:20080/remote.php/webdav/", + "path": "http://frontend:20080/remote.php/webdav/", "is_monitored": true }, "api_version": "0.0.1", - "host": "127.0.0.1:20080" + "host": "frontend:20080" }, { "endpoint": { @@ -40,11 +40,11 @@ "description": "Example GRPC Gateway" }, "name": "Example - GRPC Gateway", - "path": "127.0.0.1:19000", + "path": "gateway:19000", "is_monitored": true }, "api_version": "0.0.1", - "host": "127.0.0.1:19000" + "host": "gateway:19000" } ] }, diff --git a/tests/oc-integration-tests/local/storage-home.toml b/tests/litmus/storage-home-ocis.toml similarity index 75% rename from tests/oc-integration-tests/local/storage-home.toml rename to tests/litmus/storage-home-ocis.toml index cd019d9dff..ceb255b6ba 100644 --- a/tests/oc-integration-tests/local/storage-home.toml +++ b/tests/litmus/storage-home-ocis.toml @@ -9,32 +9,28 @@ [shared] jwt_secret = "Pive-Fumkiu4" -gatewaysvc = "localhost:19000" - +gatewaysvc = "gateway:19000" [grpc] address = "0.0.0.0:12000" # This is a storage provider that grants direct access to the wrapped storage -# the context path wrapper reads the username from the context and prefixes the relative storage path with it +# the context path wrapper reads tho username from the context and prefixes the relative storage path with it [grpc.services.storageprovider] driver = "ocis" mount_path = "/home" mount_id = "123e4567-e89b-12d3-a456-426655440000" expose_data_server = true -data_server_url = "http://localhost:12001/data" +data_server_url = "http://storage-home-ocis:12001/data" enable_home_creation = true +gateway_addr = "gateway:19000" [grpc.services.storageprovider.drivers.ocis] -root = "/var/tmp/reva/data" +root = "/tmp/reva/data" enable_home = true treetime_accounting = true treesize_accounting = true -gateway_addr = "0.0.0.0:19000" -#user_layout = -# do we need owner for users? -#owner = 95cb8724-03b2-11eb-a0a6-c33ef8ef53ad - +gateway_addr = "gateway:19000" # we have a locally running dataprovider [http] @@ -42,10 +38,10 @@ address = "0.0.0.0:12001" [http.services.dataprovider] driver = "ocis" -temp_folder = "/var/tmp/reva/tmp" +temp_folder = "/tmp/reva/tmp" [http.services.dataprovider.drivers.ocis] -root = "/var/tmp/reva/data" +root = "/tmp/reva/data" enable_home = true treetime_accounting = true treesize_accounting = true diff --git a/tests/oc-integration-tests/local-mesh/users.demo.json b/tests/litmus/users.demo.json similarity index 88% rename from tests/oc-integration-tests/local-mesh/users.demo.json rename to tests/litmus/users.demo.json index 8e1d2f09dc..b3d289ef84 100644 --- a/tests/oc-integration-tests/local-mesh/users.demo.json +++ b/tests/litmus/users.demo.json @@ -2,7 +2,7 @@ { "id": { "opaque_id": "4c510ada-c86b-4815-8820-42cdf82c3d51", - "idp": "http://localhost:40080", + "idp": "http://frontend:20080", "type": 1 }, "username": "einstein", @@ -14,7 +14,7 @@ { "id": { "opaque_id": "f7fbf8c8-139b-4376-b307-cf0a8c2d0d9c", - "idp": "http://localhost:40080", + "idp": "http://frontend:20080", "type": 1 }, "username": "marie", @@ -26,7 +26,7 @@ { "id": { "opaque_id": "932b4540-8d16-481e-8ef4-588e4b6b151c", - "idp": "http://localhost:40080", + "idp": "http://frontend:20080", "type": 1 }, "username": "richard", diff --git a/tests/oc-integration-tests/local/users.toml b/tests/litmus/users.toml similarity index 100% rename from tests/oc-integration-tests/local/users.toml rename to tests/litmus/users.toml diff --git a/tests/oc-integration-tests/local-mesh/Readme.md b/tests/oc-integration-tests/local-mesh/Readme.md deleted file mode 100644 index 4756c4bb2c..0000000000 --- a/tests/oc-integration-tests/local-mesh/Readme.md +++ /dev/null @@ -1,7 +0,0 @@ -# Local deployment of reva - -## Notable Services -`frontend-global.toml` serves all HTTP services on 20180 with a global namespace on the `/webdav` and `/dav/users/{username}` endpoints. This mimics the cernbox deployment. -`frontend.toml` serves all HTTP services on 20080, jailing users into their home on the `/webdav` and `/dav/users/{username}` endpoints. This mimics the classic ownCloud. - -Use either `users.toml` or `users-ldap.toml`. You cannot use both at the same time. \ No newline at end of file diff --git a/tests/oc-integration-tests/local-mesh/frontend-global.toml b/tests/oc-integration-tests/local-mesh/frontend-global.toml deleted file mode 100644 index 3803e870d3..0000000000 --- a/tests/oc-integration-tests/local-mesh/frontend-global.toml +++ /dev/null @@ -1,104 +0,0 @@ -# This config file will start a reva service that: -# - serves as the entrypoint for owncloud APIs but with a globally accessible namespace. -# - serves http endpoints on port 20180 -# - / --------------- ocdav -# - /ocs ------------ ocs -# - TODO(diocas): ocm - -[shared] -jwt_secret = "Pive-Fumkiu4" -gatewaysvc = "localhost:39000" - -[http] -address = "0.0.0.0:40180" - -[http.middlewares.cors] -allow_credentials = true - -[http.services.ocdav] -# serve ocdav on the root path -prefix = "" -chunk_folder = "/var/tmp/reva/chunks" -# for user lookups -# prefix the path of requests to /dav/files with this namespace -# While owncloud has only listed usernames at this endpoint CERN has -# been exposing more than just usernames. For owncloud deployments we -# can prefix the path to jail the requests to the correct CS3 namespace. -# In this deployment we mounted the owncloud storage provider at /users. It -# expects a username as the first path segment. -# currently, only the desktop client will use this endpoint, but only if -# the dav.chunking capability is available -# TODO implement a path wrapper that rewrites `` into the path -# layout for the users home? -# no, use GetHome? -# for eos we need to rewrite the path -# TODO strip the username from the path so the CS3 namespace can be mounted -# at the files/ endpoint? what about migration? separate reva instance -files_namespace = "/" - -# similar to the dav/files endpoint we can configure a prefix for the old webdav endpoint -# we use the old webdav endpoint to present the cs3 namespace -# note: this changes the tree that is rendered at remote.php/webdav from the users home to the cs3 namespace -# use webdav_namespace = "/home" to use the old namespace that only exposes the users files -# this endpoint should not affect the desktop client sync but will present different folders for the other clients: -# - the desktop clients use a hardcoded remote.php/dav/files/ if the dav.chunkung capability is present -# - the ios ios uses the core.webdav-root capability which points to remote.php/webdav in oc10 -# - the oc js sdk is hardcoded to the remote.php/webdav so it will see the new tree -# - TODO android? no sync ... but will see different tree -webdav_namespace = "/" - -[http.services.ocs] - -[http.services.ocs.capabilities.capabilities.core.status] -version = "10.0.11.5" -versionstring = "10.0.11" - -[http.services.ocs.capabilities.capabilities.files_sharing] -api_enabled = true -resharing = true -group_sharing = true -auto_accept_share = true -share_with_group_members_only = true -share_with_membership_groups_only = true -default_permissions = 22 -search_min_length = 3 - -[http.services.ocs.capabilities.capabilities.files_sharing.public] -enabled = true -send_mail = true -social_share = true -upload = true -multiple = true -supports_upload_only = true - -[http.services.ocs.capabilities.capabilities.files_sharing.public.password] -enforced = true - -[http.services.ocs.capabilities.capabilities.files_sharing.public.password.enforced_for] -read_only = true -read_write = true -upload_only = true - -[http.services.ocs.capabilities.capabilities.files_sharing.public.expire_date] -enabled = true - -[http.services.ocs.capabilities.capabilities.files_sharing.user] -send_mail = true - -[http.services.ocs.capabilities.capabilities.files_sharing.user_enumeration] -enabled = true -group_members_only = true - -[http.services.ocs.capabilities.capabilities.files_sharing.federation] -outgoing = true -incoming = true - -[http.services.ocs.capabilities.capabilities.notifications] -endpoints = [] - -[http.services.ocs.capabilities.capabilities.files.tus_support] -version = "1.0.0" -resumable = "1.0.0" -extension = "creation,creation-with-upload" -http_method_override = "" -max_chunk_size = 0 diff --git a/tests/oc-integration-tests/local-mesh/frontend.toml b/tests/oc-integration-tests/local-mesh/frontend.toml deleted file mode 100644 index ee8b53ff04..0000000000 --- a/tests/oc-integration-tests/local-mesh/frontend.toml +++ /dev/null @@ -1,116 +0,0 @@ -# This config file will start a reva service that: -# - serves as the entrypoint for owncloud APIs. -# - jails users into their home folder as in owncloud classic -# - serves http endpoints on port 20080 -# - / --------------- ocdav -# - /ocs ------------ ocs -# - TODO(diocas): ocm - -[shared] -jwt_secret = "Pive-Fumkiu4" -gatewaysvc = "localhost:39000" - -[http] -address = "0.0.0.0:40080" - -[http.middlewares.cors] -allow_credentials = true - -[http.services.ocdav] -# serve ocdav on the root path -prefix = "" -chunk_folder = "/var/tmp/reva/chunks" -# for user lookups -# prefix the path of requests to /dav/files with this namespace -# While owncloud has only listed usernames at this endpoint CERN has -# been exposing more than just usernames. For owncloud deployments we -# can prefix the path to jail the requests to the correct CS3 namespace. -# In this deployment we mounted the owncloud storage provider at /users. It -# expects a username as the first path segment. -# currently, only the desktop client will use this endpoint, but only if -# the dav.chunking capability is available -# TODO implement a path wrapper that rewrites `` into the path -# layout for the users home? -# no, use GetHome? -# for eos we need to rewrite the path -# TODO strip the username from the path so the CS3 namespace can be mounted -# at the files/ endpoint? what about migration? separate reva instance -files_namespace = "/users" - -# similar to the dav/files endpoint we can configure a prefix for the old webdav endpoint -# we use the old webdav endpoint to present the cs3 namespace -# note: this changes the tree that is rendered at remote.php/webdav from the users home to the cs3 namespace -# use webdav_namespace = "/home" to use the old namespace that only exposes the users files -# this endpoint should not affect the desktop client sync but will present different folders for the other clients: -# - the desktop clients use a hardcoded remote.php/dav/files/ if the dav.chunkung capability is present -# - the ios ios uses the core.webdav-root capability which points to remote.php/webdav in oc10 -# - the oc js sdk is hardcoded to the remote.php/webdav so it will see the new tree -# - TODO android? no sync ... but will see different tree -webdav_namespace = "/home" - -# serve /ocs which contains the sharing and user provisioning api of owncloud classic -[http.services.ocs] - -[http.services.ocs.capabilities.capabilities.core.status] -version = "10.0.11.5" -versionstring = "10.0.11" - -[http.services.ocs.capabilities.capabilities.files_sharing] -api_enabled = true -resharing = true -group_sharing = true -auto_accept_share = true -share_with_group_members_only = true -share_with_membership_groups_only = true -default_permissions = 22 -search_min_length = 3 - -[http.services.ocs.capabilities.capabilities.files_sharing.public] -enabled = true -send_mail = true -social_share = true -upload = true -multiple = true -supports_upload_only = true - -[http.services.ocs.capabilities.capabilities.files_sharing.public.password] -enforced = true - -[http.services.ocs.capabilities.capabilities.files_sharing.public.password.enforced_for] -read_only = true -read_write = true -upload_only = true - -[http.services.ocs.capabilities.capabilities.files_sharing.public.expire_date] -enabled = true - -[http.services.ocs.capabilities.capabilities.files_sharing.user] -send_mail = true - -[http.services.ocs.capabilities.capabilities.files_sharing.user_enumeration] -enabled = true -group_members_only = true - -[http.services.ocs.capabilities.capabilities.files_sharing.federation] -outgoing = true -incoming = true - -[http.services.ocs.capabilities.capabilities.notifications] -endpoints = [] - -[http.services.ocs.capabilities.capabilities.files.tus_support] -version = "1.0.0" -resumable = "1.0.0" -extension = "creation,creation-with-upload" -http_method_override = "" -max_chunk_size = 0 - -# serve /ocm -[http.services.ocmd] -prefix = "ocm" - -[http.middlewares.providerauthorizer] -driver = "json" - -[http.middlewares.providerauthorizer.drivers.json] -providers = "providers.demo.json" \ No newline at end of file diff --git a/tests/oc-integration-tests/local-mesh/gateway.toml b/tests/oc-integration-tests/local-mesh/gateway.toml deleted file mode 100644 index 0d774e0c72..0000000000 --- a/tests/oc-integration-tests/local-mesh/gateway.toml +++ /dev/null @@ -1,80 +0,0 @@ -# This config file will start a reva service that: -# - serves as a gateway for all CS3 requests -# - looks up the storageprovider using a storageregistry -# - looks up the authprovider using an authregistry -# - serves the gateway on grpc port 19000 -# - serves http datagateway on port 19001 -# - /data - datagateway: file up and download - -[shared] -jwt_secret = "Pive-Fumkiu4" -gatewaysvc = "localhost:39000" - -[grpc] -address = "0.0.0.0:39000" - -[grpc.services.gateway] -# registries -authregistrysvc = "localhost:39000" -storageregistrysvc = "localhost:39000" -# user metadata -preferencessvc = "localhost:38000" -userprovidersvc = "localhost:38000" -groupprovidersvc = "localhost:38000" -# an approvider lives on "localhost:38000" as well, see users.toml -# sharing -usershareprovidersvc = "localhost:37000" -publicshareprovidersvc = "localhost:37000" -# ocm -ocmcoresvc = "localhost:34000" -ocmshareprovidersvc = "localhost:34000" -ocminvitemanagersvc = "localhost:34000" -ocmproviderauthorizersvc = "localhost:34000" -# other -commit_share_to_storage_grant = true -commit_share_to_storage_ref = true -share_folder = "Shares" -datagateway = "http://localhost:39001/data" -transfer_shared_secret = "replace-me-with-a-transfer-secret" # for direct uploads -transfer_expires = 6 # give it a moment -#disable_home_creation_on_login = true -link_grants_file = "/var/tmp/reva/link_grants_file.json" - -[grpc.services.authregistry] -driver = "static" - -[grpc.services.authregistry.drivers.static.rules] -publicshares = "localhost:37000" # started with the shares.toml -basic = "localhost:38000" # started with the users.toml - -[grpc.services.storageregistry] -driver = "static" - -[grpc.services.storageregistry.drivers.static] -home_provider = "/home" - -[grpc.services.storageregistry.drivers.static.rules] - -# mount a home storage provider that uses a context based path wrapper -# to jail users into their home dir -"/home" = {"address" = "localhost:32000"} - -# mount a storage provider without a path wrapper for direct access to users. -"/users" = {"address" = "localhost:31000"} -"123e4567-e89b-12d3-a456-426655440000" = {"address" = "localhost:31000"} - -# the /virtual namespace is only accessible via the frontend-global service -"/virtual/[a-k]" = {"address" = "localhost:31100"} -"virtual-a-k" = {"address" = "localhost:31100"} -"/virtual/[l-z]" = {"address" = "localhost:31110"} -"virtual-l-z" = {"address" = "localhost:31110"} - -# another mount point might be "/projects/" - -"/public" = {"address" = "localhost:33000"} - -[http] -address = "0.0.0.0:39001" - -[http.services.datagateway] -transfer_shared_secret = "replace-me-with-a-transfer-secret" diff --git a/tests/oc-integration-tests/local-mesh/ldap-users.toml b/tests/oc-integration-tests/local-mesh/ldap-users.toml deleted file mode 100644 index 5d68fc7f62..0000000000 --- a/tests/oc-integration-tests/local-mesh/ldap-users.toml +++ /dev/null @@ -1,72 +0,0 @@ -# This config file will start a reva service that: -# - handles user metadata and user preferences -# - serves the grpc services on port 18000 - -[shared] -jwt_secret = "Pive-Fumkiu4" - -[grpc] -address = "0.0.0.0:38000" - -[grpc.services.authprovider] -auth_manager = "ldap" - -[grpc.services.authprovider.auth_managers.ldap] -hostname="localhost" -port=636 -insecure=true -base_dn="dc=owncloud,dc=com" -loginfilter="(&(objectclass=posixAccount)(|(cn={{login}}))(uid={{login}}))" -bind_username="cn=admin,dc=owncloud,dc=com" -bind_password="admin" -idp="http://localhost:40080" - -[grpc.services.authprovider.auth_managers.ldap.schema] -uid="uid" -displayName="displayName" -dn="dn" -cn="cn" - -[grpc.services.userprovider] -driver = "ldap" - -[grpc.services.userprovider.drivers.ldap] -hostname="localhost" -port=636 -insecure=true -base_dn="dc=owncloud,dc=com" -userfilter="(&(objectclass=posixAccount)(|(uid={{.OpaqueId}})(cn={{.OpaqueId}})))" -findfilter="(&(objectclass=posixAccount)(|(cn={{query}}*)(displayname={{query}}*)(mail={{query}}*)))" -attributefilter="(&(objectclass=posixAccount)({{attr}}={{value}}))" -groupfilter="(&(objectclass=posixGroup)(cn=*)(memberuid={{.OpaqueId}}))" -bind_username="cn=admin,dc=owncloud,dc=com" -bind_password="admin" -idp="http://localhost:40080" - -[grpc.services.userprovider.drivers.ldap.schema] -uid="uid" -displayName="displayName" -dn="dn" -cn="cn" - -[grpc.services.groupprovider] -driver = "ldap" - -[grpc.services.groupprovider.drivers.ldap] -hostname="localhost" -port=636 -insecure=true -base_dn="dc=owncloud,dc=com" -groupfilter="(&(objectclass=posixGroup)(|(gid={{.OpaqueId}})(cn={{.OpaqueId}})))" -findfilter="(&(objectclass=posixGroup)(|(cn={{query}}*)(displayname={{query}}*)(mail={{query}}*)))" -attributefilter="(&(objectclass=posixGroup)({{attr}}={{value}}))" -memberfilter="(&(objectclass=posixAccount)(cn={{.OpaqueId}}))" -bind_username="cn=admin,dc=owncloud,dc=com" -bind_password="admin" -idp="http://localhost:40080" - -[grpc.services.groupprovider.drivers.ldap.schema] -gid="cn" -displayName="cn" -dn="dn" -cn="cn" diff --git a/tests/oc-integration-tests/local-mesh/ocmd.toml b/tests/oc-integration-tests/local-mesh/ocmd.toml deleted file mode 100644 index 6ba13403e6..0000000000 --- a/tests/oc-integration-tests/local-mesh/ocmd.toml +++ /dev/null @@ -1,30 +0,0 @@ -# This config file will start a reva service that: -# - serves user and public link shares - -[shared] -jwt_secret = "Pive-Fumkiu4" - -[grpc] -address = "0.0.0.0:34000" - -[grpc.services.ocmcore] -driver = "json" - -# Note that ocmcore and ocmshareprovider should use the same file for storing the shares. -[grpc.services.ocmcore.drivers.json] -file = "/var/tmp/reva/shares_server_2.json" - -[grpc.services.ocminvitemanager] -driver = "json" - -[grpc.services.ocmshareprovider] -driver = "json" - -[grpc.services.ocmshareprovider.drivers.json] -file = "/var/tmp/reva/shares_server_2.json" - -[grpc.services.ocmproviderauthorizer] -driver = "json" - -[grpc.services.ocmproviderauthorizer.drivers.json] -providers = "providers.demo.json" diff --git a/tests/oc-integration-tests/local-mesh/shares.toml b/tests/oc-integration-tests/local-mesh/shares.toml deleted file mode 100644 index 29114c0ef1..0000000000 --- a/tests/oc-integration-tests/local-mesh/shares.toml +++ /dev/null @@ -1,20 +0,0 @@ -# This config file will start a reva service that: -# - serves user and public link shares - -[shared] -jwt_secret = "Pive-Fumkiu4" - -[grpc] -address = "0.0.0.0:37000" - -[grpc.services.usershareprovider] -driver = "memory" - -[grpc.services.authprovider] -auth_manager = "publicshares" - -[grpc.services.authprovider.auth_managers.publicshares] -gateway_addr = "0.0.0.0:39000" - -[grpc.services.publicshareprovider.drivers.json] -file = "/var/tmp/reva/publicshares.json" diff --git a/tests/oc-integration-tests/local-mesh/storage-home.toml b/tests/oc-integration-tests/local-mesh/storage-home.toml deleted file mode 100644 index 52234be435..0000000000 --- a/tests/oc-integration-tests/local-mesh/storage-home.toml +++ /dev/null @@ -1,50 +0,0 @@ -# This config file will start a reva service that: -# - uses the ocis driver to serve users, jailed into their home (/home) -# - serves the home storage provider on grpc port 12000 -# - serves http dataprovider for this storage on port 12001 -# - /data - dataprovider: file up and download -# -# The home storage will inject the username into the path and jail users into -# their home directory - -[shared] -jwt_secret = "Pive-Fumkiu4" -gatewaysvc = "localhost:39000" - - -[grpc] -address = "0.0.0.0:32000" - -# This is a storage provider that grants direct access to the wrapped storage -# the context path wrapper reads the username from the context and prefixes the relative storage path with it -[grpc.services.storageprovider] -driver = "ocis" -mount_path = "/home" -mount_id = "123e4567-e89b-12d3-a456-426655440000" -expose_data_server = true -data_server_url = "http://localhost:12001/data" -enable_home_creation = true - -[grpc.services.storageprovider.drivers.ocis] -root = "/var/tmp/reva/data" -enable_home = true -treetime_accounting = true -treesize_accounting = true -#user_layout = -# do we need owner for users? -#owner = 95cb8724-03b2-11eb-a0a6-c33ef8ef53ad - - -# we have a locally running dataprovider -[http] -address = "0.0.0.0:32001" - -[http.services.dataprovider] -driver = "ocis" -temp_folder = "/var/tmp/reva/tmp" - -[http.services.dataprovider.drivers.ocis] -root = "/var/tmp/reva/data" -enable_home = true -treetime_accounting = true -treesize_accounting = true diff --git a/tests/oc-integration-tests/local-mesh/storage-local-1.toml b/tests/oc-integration-tests/local-mesh/storage-local-1.toml deleted file mode 100644 index 630e6ebc01..0000000000 --- a/tests/oc-integration-tests/local-mesh/storage-local-1.toml +++ /dev/null @@ -1,46 +0,0 @@ -# This config file will start a reva service that: -# - uses the ocis driver to serve one half of a virtual view folder (/virtual/[a-k]) -# - serves the storage provider on grpc port 11100 -# - serves http dataprovider for this storage on port 11101 -# - /data - dataprovider: file up and download - -[shared] -jwt_secret = "Pive-Fumkiu4" -gatewaysvc = "localhost:39000" - -[grpc] -address = "0.0.0.0:31100" - -# This is a storage provider that grants direct access to the wrapped storage -# we have a locally running dataprovider -[grpc.services.storageprovider] -driver = "ocis" -mount_path = "/virtual" -mount_id = "virtual-a-k" -expose_data_server = true -data_server_url = "http://localhost:31101/data" - -[grpc.services.storageprovider.drivers.ocis] -root = "/var/tmp/reva/data-local-1" -owner = "4c510ada-c86b-4815-8820-42cdf82c3d51" -owner_idp = "http://localhost:40080" -owner_type = "USER_TYPE_PRIMARY" -enable_home = false -treetime_accounting = true -treesize_accounting = true - -[http] -address = "0.0.0.0:31101" - -[http.services.dataprovider] -driver = "ocis" -temp_folder = "/var/tmp/reva/tmp" - -[http.services.dataprovider.drivers.ocis] -root = "/var/tmp/reva/data-local-1" -owner = "4c510ada-c86b-4815-8820-42cdf82c3d51" -owner_idp = "http://localhost:40080" -owner_type = "USER_TYPE_PRIMARY" -enable_home = false -treetime_accounting = true -treesize_accounting = true diff --git a/tests/oc-integration-tests/local-mesh/storage-local-2.toml b/tests/oc-integration-tests/local-mesh/storage-local-2.toml deleted file mode 100644 index f2de3a3642..0000000000 --- a/tests/oc-integration-tests/local-mesh/storage-local-2.toml +++ /dev/null @@ -1,46 +0,0 @@ -# This config file will start a reva service that: -# - uses the ocis driver to serve one half of a virtual view folder (/virtual/[l-z]) -# - serves the storage provider on grpc port 11110 -# - serves http dataprovider for this storage on port 11111 -# - /data - dataprovider: file up and download - -[shared] -jwt_secret = "Pive-Fumkiu4" -gatewaysvc = "localhost:39000" - -[grpc] -address = "0.0.0.0:31110" - -# This is a storage provider that grants direct access to the wrapped storage -# we have a locally running dataprovider -[grpc.services.storageprovider] -driver = "ocis" -mount_path = "/virtual" -mount_id = "virtual-l-z" -expose_data_server = true -data_server_url = "http://localhost:31111/data" - -[grpc.services.storageprovider.drivers.ocis] -root = "/var/tmp/reva/data-local-2" -owner = "4c510ada-c86b-4815-8820-42cdf82c3d51" -owner_idp = "http://localhost:40080" -owner_type = "USER_TYPE_PRIMARY" -enable_home = false -treetime_accounting = true -treesize_accounting = true - -[http] -address = "0.0.0.0:31111" - -[http.services.dataprovider] -driver = "ocis" -temp_folder = "/var/tmp/reva/tmp" - -[http.services.dataprovider.drivers.ocis] -root = "/var/tmp/reva/data-local-2" -owner = "4c510ada-c86b-4815-8820-42cdf82c3d51" -owner_idp = "http://localhost:40080" -owner_type = "USER_TYPE_PRIMARY" -enable_home = false -treetime_accounting = true -treesize_accounting = true diff --git a/tests/oc-integration-tests/local-mesh/storage-publiclink.toml b/tests/oc-integration-tests/local-mesh/storage-publiclink.toml deleted file mode 100644 index 835508719c..0000000000 --- a/tests/oc-integration-tests/local-mesh/storage-publiclink.toml +++ /dev/null @@ -1,15 +0,0 @@ -# This config file will start a reva service that: -# - serves the public storage provider on grpc port 13000 - -[shared] -jwt_secret = "Pive-Fumkiu4" -gatewaysvc = "localhost:19000" - -[grpc] -address = "0.0.0.0:33000" - -# This is a storage provider that grants direct access to the wrapped storage -# we have a locally running dataprovider -[grpc.services.publicstorageprovider] -mount_path = "/public/" -gateway_addr = "0.0.0.0:39000" diff --git a/tests/oc-integration-tests/local-mesh/storage-users.toml b/tests/oc-integration-tests/local-mesh/storage-users.toml deleted file mode 100644 index ad8f997bfa..0000000000 --- a/tests/oc-integration-tests/local-mesh/storage-users.toml +++ /dev/null @@ -1,40 +0,0 @@ -# This config file will start a reva service that: -# - uses the ocis driver to serve users (/users) -# - serves the storage provider on grpc port 11000 -# - serves http dataprovider for this storage on port 11001 -# - /data - dataprovider: file up and download - -[shared] -jwt_secret = "Pive-Fumkiu4" -gatewaysvc = "localhost:39000" - -[grpc] -address = "0.0.0.0:31000" - -# This is a storage provider that grants direct access to the wrapped storage -# we have a locally running dataprovider -[grpc.services.storageprovider] -driver = "ocis" -mount_path = "/users" -mount_id = "123e4567-e89b-12d3-a456-426655440000" -expose_data_server = true -data_server_url = "http://localhost:31001/data" - -[grpc.services.storageprovider.drivers.ocis] -root = "/var/tmp/reva/data" -enable_home = false -treetime_accounting = true -treesize_accounting = true - -[http] -address = "0.0.0.0:31001" - -[http.services.dataprovider] -driver = "ocis" -temp_folder = "/var/tmp/reva/tmp" - -[http.services.dataprovider.drivers.ocis] -root = "/var/tmp/reva/data" -enable_home = false -treetime_accounting = true -treesize_accounting = true diff --git a/tests/oc-integration-tests/local-mesh/users.toml b/tests/oc-integration-tests/local-mesh/users.toml deleted file mode 100644 index f6b6c5acdc..0000000000 --- a/tests/oc-integration-tests/local-mesh/users.toml +++ /dev/null @@ -1,21 +0,0 @@ -# This config file will start a reva service that: -# - handles user metadata and user preferences -# - serves the grpc services on port 38000 - -[shared] -jwt_secret = "Pive-Fumkiu4" - -[grpc] -address = "0.0.0.0:38000" - -[grpc.services.authprovider] -auth_manager = "json" - -[grpc.services.authprovider.auth_managers.json] -users = "users.demo.json" - -[grpc.services.userprovider] -driver = "json" - -[grpc.services.userprovider.drivers.json] -users = "users.demo.json" diff --git a/tests/oc-integration-tests/local/Readme.md b/tests/oc-integration-tests/local/Readme.md deleted file mode 100644 index 4756c4bb2c..0000000000 --- a/tests/oc-integration-tests/local/Readme.md +++ /dev/null @@ -1,7 +0,0 @@ -# Local deployment of reva - -## Notable Services -`frontend-global.toml` serves all HTTP services on 20180 with a global namespace on the `/webdav` and `/dav/users/{username}` endpoints. This mimics the cernbox deployment. -`frontend.toml` serves all HTTP services on 20080, jailing users into their home on the `/webdav` and `/dav/users/{username}` endpoints. This mimics the classic ownCloud. - -Use either `users.toml` or `users-ldap.toml`. You cannot use both at the same time. \ No newline at end of file diff --git a/tests/oc-integration-tests/local/frontend-global.toml b/tests/oc-integration-tests/local/frontend-global.toml deleted file mode 100644 index 2cff52525d..0000000000 --- a/tests/oc-integration-tests/local/frontend-global.toml +++ /dev/null @@ -1,114 +0,0 @@ -# This config file will start a reva service that: -# - serves as the entrypoint for owncloud APIs but with a globally accessible namespace. -# - serves http endpoints on port 20180 -# - / --------------- ocdav -# - /ocs ------------ ocs -# - TODO(diocas): ocm - -[shared] -jwt_secret = "Pive-Fumkiu4" -gatewaysvc = "localhost:19000" - -[http] -address = "0.0.0.0:20180" - -[http.middlewares.cors] -allow_credentials = true - -[http.services.ocdav] -# serve ocdav on the root path -prefix = "" -chunk_folder = "/var/tmp/reva/chunks" -# for user lookups -# prefix the path of requests to /dav/files with this namespace -# While owncloud has only listed usernames at this endpoint CERN has -# been exposing more than just usernames. For owncloud deployments we -# can prefix the path to jail the requests to the correct CS3 namespace. -# In this deployment we mounted the owncloud storage provider at /users. It -# expects a username as the first path segment. -# currently, only the desktop client will use this endpoint, but only if -# the dav.chunking capability is available -# TODO implement a path wrapper that rewrites `` into the path -# layout for the users home? -# no, use GetHome? -# for eos we need to rewrite the path -# TODO strip the username from the path so the CS3 namespace can be mounted -# at the files/ endpoint? what about migration? separate reva instance -files_namespace = "/" - -# similar to the dav/files endpoint we can configure a prefix for the old webdav endpoint -# we use the old webdav endpoint to present the cs3 namespace -# note: this changes the tree that is rendered at remote.php/webdav from the users home to the cs3 namespace -# use webdav_namespace = "/home" to use the old namespace that only exposes the users files -# this endpoint should not affect the desktop client sync but will present different folders for the other clients: -# - the desktop clients use a hardcoded remote.php/dav/files/ if the dav.chunkung capability is present -# - the ios ios uses the core.webdav-root capability which points to remote.php/webdav in oc10 -# - the oc js sdk is hardcoded to the remote.php/webdav so it will see the new tree -# - TODO android? no sync ... but will see different tree -webdav_namespace = "/" - -[http.services.ocs] - -[http.services.ocs.capabilities.capabilities.core.status] -version = "10.0.11.5" -versionstring = "10.0.11" - -[http.services.ocs.capabilities.capabilities.files_sharing] -api_enabled = true -resharing = true -group_sharing = true -auto_accept_share = true -share_with_group_members_only = true -share_with_membership_groups_only = true -default_permissions = 22 -search_min_length = 3 - -[http.services.ocs.capabilities.capabilities.files_sharing.public] -enabled = true -send_mail = true -social_share = true -upload = true -multiple = true -supports_upload_only = true - -[http.services.ocs.capabilities.capabilities.files_sharing.public.password] -enforced = true - -[http.services.ocs.capabilities.capabilities.files_sharing.public.password.enforced_for] -read_only = true -read_write = true -upload_only = true - -[http.services.ocs.capabilities.capabilities.files_sharing.public.expire_date] -enabled = true - -[http.services.ocs.capabilities.capabilities.files_sharing.user] -send_mail = true - -[http.services.ocs.capabilities.capabilities.files_sharing.user_enumeration] -enabled = true -group_members_only = true - -[http.services.ocs.capabilities.capabilities.files_sharing.federation] -outgoing = true -incoming = true - -[http.services.ocs.capabilities.capabilities.notifications] -endpoints = [] - -[http.services.ocs.capabilities.capabilities.files.tus_support] -version = "1.0.0" -resumable = "1.0.0" -extension = "creation,creation-with-upload" -http_method_override = "" -max_chunk_size = 0 - -# serve /ocm -[http.services.ocmd] -prefix = "ocm" - -[http.middlewares.providerauthorizer] -driver = "json" - -[http.middlewares.providerauthorizer.drivers.json] -providers = "providers.demo.json" \ No newline at end of file diff --git a/tests/oc-integration-tests/local/ldap-users.toml b/tests/oc-integration-tests/local/ldap-users.toml deleted file mode 100644 index 8d4fb9a5e5..0000000000 --- a/tests/oc-integration-tests/local/ldap-users.toml +++ /dev/null @@ -1,71 +0,0 @@ -# This config file will start a reva service that: -# - handles user metadata and user preferences -# - serves the grpc services on port 18000 - -[shared] -jwt_secret = "Pive-Fumkiu4" - -[grpc] -address = "0.0.0.0:18000" - -[grpc.services.authprovider] -auth_manager = "ldap" - -[grpc.services.authprovider.auth_managers.ldap] -hostname="localhost" -port=636 -insecure=true -base_dn="dc=owncloud,dc=com" -loginfilter="(&(objectclass=posixAccount)(|(cn={{login}}))(uid={{login}}))" -bind_username="cn=admin,dc=owncloud,dc=com" -bind_password="admin" -idp="http://localhost:20080" -[grpc.services.authprovider.auth_managers.ldap.schema] -uid="uid" -displayName="displayName" -dn="dn" -cn="cn" - -[grpc.services.userprovider] -driver = "ldap" - -[grpc.services.userprovider.drivers.ldap] -hostname="localhost" -port=636 -insecure=true -base_dn="dc=owncloud,dc=com" -userfilter="(&(objectclass=posixAccount)(|(uid={{.OpaqueId}})(cn={{.OpaqueId}})))" -findfilter="(&(objectclass=posixAccount)(|(cn={{query}}*)(displayname={{query}}*)(mail={{query}}*)))" -attributefilter="(&(objectclass=posixAccount)({{attr}}={{value}}))" -groupfilter="(&(objectclass=posixGroup)(cn=*)(memberuid={{.OpaqueId}}))" -bind_username="cn=admin,dc=owncloud,dc=com" -bind_password="admin" -idp="http://localhost:20080" - -[grpc.services.userprovider.drivers.ldap.schema] -uid="uid" -displayName="displayName" -dn="dn" -cn="cn" - -[grpc.services.groupprovider] -driver = "ldap" - -[grpc.services.groupprovider.drivers.ldap] -hostname="localhost" -port=636 -insecure=true -base_dn="dc=owncloud,dc=com" -groupfilter="(&(objectclass=posixGroup)(|(gid={{.OpaqueId}})(cn={{.OpaqueId}})))" -findfilter="(&(objectclass=posixGroup)(|(cn={{query}}*)(displayname={{query}}*)(mail={{query}}*)))" -attributefilter="(&(objectclass=posixGroup)({{attr}}={{value}}))" -memberfilter="(&(objectclass=posixAccount)(cn={{.OpaqueId}}))" -bind_username="cn=admin,dc=owncloud,dc=com" -bind_password="admin" -idp="http://localhost:20080" - -[grpc.services.groupprovider.drivers.ldap.schema] -gid="cn" -displayName="cn" -dn="dn" -cn="cn" diff --git a/tests/oc-integration-tests/local/ocmd.toml b/tests/oc-integration-tests/local/ocmd.toml deleted file mode 100644 index b89d23318d..0000000000 --- a/tests/oc-integration-tests/local/ocmd.toml +++ /dev/null @@ -1,30 +0,0 @@ -# This config file will start a reva service that: -# - serves user and public link shares - -[shared] -jwt_secret = "Pive-Fumkiu4" - -[grpc] -address = "0.0.0.0:14000" - -[grpc.services.ocmcore] -driver = "json" - -# Note that ocmcore and ocmshareprovider should use the same file for storing the shares. -[grpc.services.ocmcore.drivers.json] -file = "/var/tmp/reva/shares_server_1.json" - -[grpc.services.ocminvitemanager] -driver = "json" - -[grpc.services.ocmshareprovider] -driver = "json" - -[grpc.services.ocmshareprovider.drivers.json] -file = "/var/tmp/reva/shares_server_1.json" - -[grpc.services.ocmproviderauthorizer] -driver = "json" - -[grpc.services.ocmproviderauthorizer.drivers.json] -providers = "providers.demo.json" diff --git a/tests/oc-integration-tests/local/permissions-ocis-ci.toml b/tests/oc-integration-tests/local/permissions-ocis-ci.toml deleted file mode 100644 index ef025245f3..0000000000 --- a/tests/oc-integration-tests/local/permissions-ocis-ci.toml +++ /dev/null @@ -1,12 +0,0 @@ -# This config file will start a reva service that: -# - serves the ocis ci permissions service -[shared] -jwt_secret = "Pive-Fumkiu4" - -[grpc] -address = "0.0.0.0:10000" - -[grpc.services.permissions] -driver = "demo" - -[grpc.services.publicshareprovider.drivers.ocisci] diff --git a/tests/oc-integration-tests/local/providers.demo.json b/tests/oc-integration-tests/local/providers.demo.json deleted file mode 100644 index f2111b71b2..0000000000 --- a/tests/oc-integration-tests/local/providers.demo.json +++ /dev/null @@ -1,100 +0,0 @@ -[ - { - "name": "local", - "full_name": "ownCloud@Example", - "organization": "Example", - "domain": "example.org", - "homepage": "http://example.org", - "description": "Example cloud storage.", - "services": [ - { - "endpoint": { - "type": { - "name": "OCM", - "description": "Example Open Cloud Mesh API" - }, - "name": "Example - OCM API", - "path": "http://127.0.0.1:20080/ocm/", - "is_monitored": true - }, - "api_version": "0.0.1", - "host": "127.0.0.1:20080" - }, - { - "endpoint": { - "type": { - "name": "Webdav", - "description": "Example Webdav API" - }, - "name": "Example - Webdav API", - "path": "http://127.0.0.1:20080/remote.php/webdav/", - "is_monitored": true - }, - "api_version": "0.0.1", - "host": "127.0.0.1:20080" - }, - { - "endpoint": { - "type": { - "name": "Gateway", - "description": "Example GRPC Gateway" - }, - "name": "Example - GRPC Gateway", - "path": "127.0.0.1:19000", - "is_monitored": true - }, - "api_version": "0.0.1", - "host": "127.0.0.1:19000" - } - ] - }, - { - "name": "local-mesh", - "full_name": "ownCloud@Example2", - "organization": "Example 2", - "domain": "example.org", - "homepage": "http://example.org", - "description": "Example cloud storage 2.", - "services": [ - { - "endpoint": { - "type": { - "name": "OCM", - "description": "Example 2 Open Cloud Mesh API" - }, - "name": "Example 2 - OCM API", - "path": "http://127.0.0.1:40080/ocm/", - "is_monitored": true - }, - "api_version": "0.0.1", - "host": "127.0.0.1:40080" - }, - { - "endpoint": { - "type": { - "name": "Webdav", - "description": "Example 2 Webdav API" - }, - "name": "Example 2 - Webdav API", - "path": "http://127.0.0.1:40080/remote.php/webdav/", - "is_monitored": true - }, - "api_version": "0.0.1", - "host": "127.0.0.1:40080" - }, - { - "endpoint": { - "type": { - "name": "Gateway", - "description": "Example 2 GRPC Gateway" - }, - "name": "Example 2 - GRPC Gateway", - "path": "127.0.0.1:39000", - "is_monitored": true - }, - "api_version": "0.0.1", - "host": "127.0.0.1:39000" - } - ] - } -] diff --git a/tests/oc-integration-tests/local/shares.toml b/tests/oc-integration-tests/local/shares.toml deleted file mode 100644 index 46778cf4e0..0000000000 --- a/tests/oc-integration-tests/local/shares.toml +++ /dev/null @@ -1,20 +0,0 @@ -# This config file will start a reva service that: -# - serves user and public link shares - -[shared] -jwt_secret = "Pive-Fumkiu4" - -[grpc] -address = "0.0.0.0:17000" - -[grpc.services.usershareprovider] -driver = "memory" - -[grpc.services.authprovider] -auth_manager = "publicshares" - -[grpc.services.authprovider.auth_managers.publicshares] -gateway_addr = "0.0.0.0:19000" - -[grpc.services.publicshareprovider.drivers.json] -file = "/var/tmp/reva/publicshares.json" diff --git a/tests/oc-integration-tests/local/storage-local-1.toml b/tests/oc-integration-tests/local/storage-local-1.toml deleted file mode 100644 index 1da9f21830..0000000000 --- a/tests/oc-integration-tests/local/storage-local-1.toml +++ /dev/null @@ -1,46 +0,0 @@ -# This config file will start a reva service that: -# - uses the ocis driver to serve one half of a virtual view folder (/virtual/[a-k]) -# - serves the storage provider on grpc port 11100 -# - serves http dataprovider for this storage on port 11101 -# - /data - dataprovider: file up and download - -[shared] -jwt_secret = "Pive-Fumkiu4" -gatewaysvc = "localhost:19000" - -[grpc] -address = "0.0.0.0:11100" - -# This is a storage provider that grants direct access to the wrapped storage -# we have a locally running dataprovider -[grpc.services.storageprovider] -driver = "ocis" -mount_path = "/virtual" -mount_id = "virtual-a-k" -expose_data_server = true -data_server_url = "http://localhost:11101/data" - -[grpc.services.storageprovider.drivers.ocis] -root = "/var/tmp/reva/data-local-1" -owner = "4c510ada-c86b-4815-8820-42cdf82c3d51" -owner_idp = "http://localhost:20080" -owner_type = "USER_TYPE_PRIMARY" -enable_home = false -treetime_accounting = true -treesize_accounting = true - -[http] -address = "0.0.0.0:11101" - -[http.services.dataprovider] -driver = "ocis" -temp_folder = "/var/tmp/reva/tmp" - -[http.services.dataprovider.drivers.ocis] -root = "/var/tmp/reva/data-local-1" -owner = "4c510ada-c86b-4815-8820-42cdf82c3d51" -owner_idp = "http://localhost:20080" -owner_type = "USER_TYPE_PRIMARY" -enable_home = false -treetime_accounting = true -treesize_accounting = true diff --git a/tests/oc-integration-tests/local/storage-local-2.toml b/tests/oc-integration-tests/local/storage-local-2.toml deleted file mode 100644 index 80ffeee065..0000000000 --- a/tests/oc-integration-tests/local/storage-local-2.toml +++ /dev/null @@ -1,46 +0,0 @@ -# This config file will start a reva service that: -# - uses the ocis driver to serve one half of a virtual view folder (/virtual/[l-z]) -# - serves the storage provider on grpc port 11110 -# - serves http dataprovider for this storage on port 11111 -# - /data - dataprovider: file up and download - -[shared] -jwt_secret = "Pive-Fumkiu4" -gatewaysvc = "localhost:19000" - -[grpc] -address = "0.0.0.0:11110" - -# This is a storage provider that grants direct access to the wrapped storage -# we have a locally running dataprovider -[grpc.services.storageprovider] -driver = "ocis" -mount_path = "/virtual" -mount_id = "virtual-l-z" -expose_data_server = true -data_server_url = "http://localhost:11111/data" - -[grpc.services.storageprovider.drivers.ocis] -root = "/var/tmp/reva/data-local-2" -owner = "4c510ada-c86b-4815-8820-42cdf82c3d51" -owner_idp = "http://localhost:20080" -owner_type = "USER_TYPE_PRIMARY" -enable_home = false -treetime_accounting = true -treesize_accounting = true - -[http] -address = "0.0.0.0:11111" - -[http.services.dataprovider] -driver = "ocis" -temp_folder = "/var/tmp/reva/tmp" - -[http.services.dataprovider.drivers.ocis] -root = "/var/tmp/reva/data-local-2" -owner = "4c510ada-c86b-4815-8820-42cdf82c3d51" -owner_idp = "http://localhost:20080" -owner_type = "USER_TYPE_PRIMARY" -enable_home = false -treetime_accounting = true -treesize_accounting = true diff --git a/tests/oc-integration-tests/local/storage-publiclink.toml b/tests/oc-integration-tests/local/storage-publiclink.toml deleted file mode 100644 index 09b686d020..0000000000 --- a/tests/oc-integration-tests/local/storage-publiclink.toml +++ /dev/null @@ -1,16 +0,0 @@ -# This config file will start a reva service that: -# - serves the public storage provider on grpc port 13000 - -[shared] -jwt_secret = "Pive-Fumkiu4" -gatewaysvc = "localhost:19000" - -[grpc] -address = "0.0.0.0:13000" - -# This is a storage provider that grants direct access to the wrapped storage -# we have a locally running dataprovider -[grpc.services.publicstorageprovider] -mount_path = "/public/" -mount_id = "e1a73ede-549b-4226-abdf-40e69ca8230d" -gateway_addr = "0.0.0.0:19000" diff --git a/tests/oc-integration-tests/local/storage-users.toml b/tests/oc-integration-tests/local/storage-users.toml deleted file mode 100644 index cb37e05342..0000000000 --- a/tests/oc-integration-tests/local/storage-users.toml +++ /dev/null @@ -1,41 +0,0 @@ -# This config file will start a reva service that: -# - uses the ocis driver to serve users (/users) -# - serves the storage provider on grpc port 11000 -# - serves http dataprovider for this storage on port 11001 -# - /data - dataprovider: file up and download - -[shared] -jwt_secret = "Pive-Fumkiu4" -gatewaysvc = "localhost:19000" - -[grpc] -address = "0.0.0.0:11000" - -# This is a storage provider that grants direct access to the wrapped storage -# we have a locally running dataprovider -[grpc.services.storageprovider] -driver = "ocis" -mount_path = "/users" -mount_id = "123e4567-e89b-12d3-a456-426655440000" -expose_data_server = true -data_server_url = "http://localhost:11001/data" - -[grpc.services.storageprovider.drivers.ocis] -root = "/var/tmp/reva/data" -enable_home = false -treetime_accounting = true -treesize_accounting = true - -[http] -address = "0.0.0.0:11001" - -[http.services.dataprovider] -driver = "ocis" -temp_folder = "/var/tmp/reva/tmp" - -[http.services.dataprovider.drivers.ocis] -root = "/var/tmp/reva/data" -enable_home = false -treetime_accounting = true -treesize_accounting = true -gateway_addr = "0.0.0.0:19000" diff --git a/tests/oc-integration-tests/local/users.demo.json b/tests/oc-integration-tests/local/users.demo.json deleted file mode 100644 index 893d69b99f..0000000000 --- a/tests/oc-integration-tests/local/users.demo.json +++ /dev/null @@ -1,38 +0,0 @@ -[ - { - "id": { - "opaque_id": "4c510ada-c86b-4815-8820-42cdf82c3d51", - "idp": "http://localhost:20080", - "type": 1 - }, - "username": "einstein", - "secret": "relativity", - "mail": "einstein@example.org", - "display_name": "Albert Einstein", - "groups": ["sailing-lovers", "violin-haters", "physics-lovers"] - }, - { - "id": { - "opaque_id": "f7fbf8c8-139b-4376-b307-cf0a8c2d0d9c", - "idp": "http://localhost:20080", - "type": 1 - }, - "username": "marie", - "secret": "radioactivity", - "mail": "marie@example.org", - "display_name": "Marie Curie", - "groups": ["radium-lovers", "polonium-lovers", "physics-lovers"] - }, - { - "id": { - "opaque_id": "932b4540-8d16-481e-8ef4-588e4b6b151c", - "idp": "http://localhost:20080", - "type": 1 - }, - "username": "richard", - "secret": "superfluidity", - "mail": "richard@example.org", - "display_name": "Richard Feynman", - "groups": ["quantum-lovers", "philosophy-haters", "physics-lovers"] - } -]