Skip to content

Test suites for protocols a Personal Data Store may support

License

Notifications You must be signed in to change notification settings

pdsinterop/test-suites

Repository files navigation

Test Suites for Personal Data Servers

Introduction

The goal of these test suites is to test which open source Personal Data Store implementations comply with which protocol specs.

Info on what each test suite tests

So far, there is only one test suite here, namely webid-provider.

Running testers against servers in a Docker testnet

To summarize the test results, we have opted to build them in Docker (this part was copied from Solid's test-suite), and to run them within that. This documents how to run it:

Prerequisites: Docker

Run the following commands in your command line terminal:

docker build -t webid-provider testers/webid-provider
docker build -t solid-crud testers/solid-crud
docker build -t open-cloud-mesh testers/open-cloud-mesh
docker network create testnet
mkdir  -p reports

bash runTests.sh node-solid-server
bash runTests.sh solid-app-kit
bash runTests.sh php-solid-server
bash runTests.sh nextcloud-server

grep Tests reports/*

Expected output

Note that nextcloud-server and php-solid-server do not have webid-provider functionality enabled yet (we are still working on that). Therefore, the final output should look something like:

reports/nextcloud-server-solid-crud.txt:Tests:       73 failed, 73 total
reports/nextcloud-server-webid-provider.txt:Tests:       14 skipped, 35 passed, 49 total
reports/node-solid-server-solid-crud.txt:Tests:       25 failed, 48 passed, 73 total
reports/node-solid-server-webid-provider.txt:Tests:       14 skipped, 35 passed, 49 total
reports/php-solid-server-solid-crud.txt:Tests:       73 failed, 73 total
reports/php-solid-server-webid-provider.txt:Tests:       11 failed, 14 skipped, 24 passed, 49 total
reports/solid-app-kit-solid-crud.txt:Tests:       73 failed, 73 total
reports/solid-app-kit-webid-provider.txt:Tests:       35 failed, 14 skipped, 49 total

To run one tester against one server interactively, you can do for instance:

./runTesterAgainstServer.sh webid-provider node-solid-server
[...]
root@f0c7e54fb1f3:/# npm run jest
root@f0c7e54fb1f3:/# exit
[...]

Running one of the servers and one of the testers interactively:

In one terminal:

./runServer.sh node-solid-server
# DEBUG=* ./bin/solid-test start

In another terminal:

./runTester.sh webid-provider node-solid-server
# ./node_modules/.bin/jest test/surface/token.test.ts

Running one of the testers

Running the tester Docker images on a Mac outside a testnet will not work straight-forwardly due to https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds.

But to run for instance the webid-provider tester against a URL, you can simply run it outside Docker:

cd testers/webid-provider/tester
npm install
NODE_TLS_REJECT_UNAUTHORIZED=0 ALICE_WEBID=https://localhost/profile/card#me SERVER_ROOT=https://localhost ./node_modules/.bin/jest test/surface/*

Running a server on https://localhost

docker run -d -p 443:443 nextcloud-server

YMMV

Caveat 1: the qualities of a software product can of course not be counted with a simple number of passing tests, so this list only gives a rough idea of levels of Solid spec compliance.

Caveat 2: not all servers may have been configured optimally in these test runs; if you know of ways to improve the outcome for any of these servers, please provide a pull request.

Caveat 3: this test suite still incomplete and heavily biased towards LDP Basic container support.