activitypub-testing
Implementation GuideThe goal of this document is to guide for ActivityPub testers on how to use the activitypub-testing
tool to test an ActivityPub Conformant Server
node
and npm
on your PATH
. If you don't have them, install node.js.jq
on your PATH
for processing JSON. If you don't have it, install jq
.Optional
tee
- this is part of the POSIX standard. You probably have it already.Be aware
⚡
is used in code blocks to indicate a shell prompt. Copy the rest of the command after ⚡
and paste in your shell to follow alongactivitypub-testing
⚡ npm install -g activitypub-testing
If the previous command succeeds, then the following should work in your command prompt:
⚡ activitypub-testing help
If installation succeeded, this command will show documentation for how to use activitypub-testing
.
Choose an ActivityPub Actor served by an ActivityPub Conformant Server that will be a test subject. Let actor
be the id
of this Actor.
if you are developing an ActivityPub Server locally, the Actor ID could look like http://localhost:8000/actors/alyssa-p-hacker
For the rest of this guide, we'll use
⚡ actor="https://socialweb.coop/"
To test the actor, invoke the test actor
command and pass actor
as the argument.
⚡ activitypub-testing test actor "$actor"
This will run many tests against actor
and stream the results as JSON objects to stdout. It won't record any results, which can be useful for exploratory testing.
When you are ready to record some test results, run the same command, but redirect stdout to append the results to a file results.ndjson
using tee
⚡ activitypub-testing test actor "$actor" | tee results.ndjson
Analyze the results
⚡ cat results.ndjson | jq .
See Appendix A: Example results.ndjson for example output
Every object in results is an Assertion with a result with an outcome.
You can use jq
to show only the result of each test:
⚡ cat results.ndjson | jq '{ result, test: .test | { url } }'
{
"result": {
"outcome": "passed"
},
"test": {
"url": "https://socialweb.coop/activitypub/test-cases/following-collection-must-be-a-collection"
}
}
# more JSONs omitted for brevity
Or only show results with outcomes other than passed
:
⚡ cat results.ndjson | jq 'select(.result.outcome != "passed")'
No output means every test passed
.
In future releases of activitypub-testing
, there will be commands to test other parts of an ActivityPub Server. If you'd like to shape the roadmap, please file an issue
If you're having an issue using activitypub-testing
, you can report the issue by making a Pull Request into the /issues
folder of the activitypub-testing
repository.
Click here to start creating a new issue using the codeberg.org website.
results.ndjson
{ "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "following-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/following-collection-must-be-a-collection", "description": "tests whether an ActivityPub Object has a `following`` collection with an appropriate Collection type", "name": "An ActivityPub Actor Object's `following` Collection Must be a Collection", "uuid": "018c3e17-a1bd-7040-8007-4cd3b9063288" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "followers-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/followers-collection-must-be-a-collection", "description": "tests whether an ActivityPub Object has a `followers`` collection with an appropriate Collection type", "name": "An ActivityPub Actor Object's `followers` Collection Must be a Collection", "uuid": "018c3e08-611f-7e56-9f45-2fe5e4877d4e" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "liked-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/liked-collection-must-be-a-collection", "description": "tests whether an ActivityPub Object has a liked collection with an appropriate Collection type", "name": "An ActivityPub Object `liked` Collection Must be a Collection", "uuid": "018c3df2-d6d8-7f62-805b-b71a96cc6170" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "likes-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/likes-collection-must-be-a-collection", "description": "tests whether an ActivityPub Object has a likes collection with an appropriate Collection type", "name": "An ActivityPub Object `likes` Collection Must be a Collection", "uuid": "200b9bc8-aae3-46f2-a6ab-5366042c0f6e" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "shares-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/shares-collection-must-be-a-collection", "description": "This test case tests that an actor's shares collection is an expected kind of collection", "name": "shares collection MUST be either an OrderedCollection or a Collection", "uuid": "b03a5245-1072-426d-91b3-a3d412d45ae8" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "type": "TestResult", "inputs": { "actor": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "outcome": "passed", "source": [] }, "test": { "slug": "actor-objects-must-have-inbox-outbox-properties", "url": "https://socialweb.coop/activitypub/test-cases/actor-objects-must-have-inbox-outbox-properties", "description": "This rule checks whether a given Actor Object has the properties inbox and outbox.", "name": "Actor Objects Must Have Properties `inbox` and `outbox`", "uuid": "acaacb5f-8f7e-4f28-8d81-c7955070a767" }, "input": { "actor": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "actor-must-serve-as2-object-to-get", "url": "https://socialweb.coop/activitypub/test-cases/actor-must-serve-as2-object-to-get", "description": "This rule checks that URLs of ActivityPub objects can be resolved to a representation with well-known media type for further processing.", "name": "ActivityPub Servers Must Serve Objects in Response to an HTTP GET Request Accepting ActivityStreams 2.0 Media Type", "uuid": "e7ee491d-88d7-4e67-80c8-f74781bb247c" }, "input": { "id": "https://socialweb.coop/", "time": "T10S" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "type": "TestResult", "outcome": "passed" }, "test": { "slug": "outbox-must-be-an-orderedcollection", "url": "https://socialweb.coop/activitypub/test-cases/outbox-must-be-an-orderedcollection", "description": "This rule checks whether the outbox property of an object appears to be an OrderedCollection", "name": "outbox must be an OrderedCollection", "uuid": "4af549f4-3797-4d99-a151-67c3d8feaa46" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}", "time": "T10S" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "type": "TestResult", "outcome": "passed" }, "test": { "slug": "inbox-must-be-an-orderedcollection", "url": "https://socialweb.coop/activitypub/test-cases/inbox-must-be-an-orderedcollection", "description": "This rule checks whether the inbox property of an object appears to be an OrderedCollection", "name": "inbox must be an OrderedCollection", "uuid": "5e94d155-ed4a-4d71-b797-d7c387736ecf" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}", "time": "T10S" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "outbox-post-servers-must-return-a-201-created-http-code", "url": "https://socialweb.coop/activitypub/test-cases/outbox-post-servers-must-return-a-201-created-http-code", "description": "This test checks that an ActivityPub Outbox responds with a 201 status code when sent a POST request with an Activity submission.", "name": "Outbox Servers handling activity submissions MUST return a 201 created HTTP status code", "uuid": "723afcbb-118d-433e-8ab4-560ffca93582" }, "input": { "outbox": "https://socialweb.coop/outbox", "time": "T10S" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "following-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/following-collection-must-be-a-collection", "description": "tests whether an ActivityPub Object has a `following`` collection with an appropriate Collection type", "name": "An ActivityPub Actor Object's `following` Collection Must be a Collection", "uuid": "018c3e17-a1bd-7040-8007-4cd3b9063288" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "following-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/following-collection-must-be-a-collection", "description": "tests whether an ActivityPub Object has a `following`` collection with an appropriate Collection type", "name": "An ActivityPub Actor Object's `following` Collection Must be a Collection", "uuid": "018c3e17-a1bd-7040-8007-4cd3b9063288" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "followers-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/followers-collection-must-be-a-collection", "description": "tests whether an ActivityPub Object has a `followers`` collection with an appropriate Collection type", "name": "An ActivityPub Actor Object's `followers` Collection Must be a Collection", "uuid": "018c3e08-611f-7e56-9f45-2fe5e4877d4e" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "followers-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/followers-collection-must-be-a-collection", "description": "tests whether an ActivityPub Object has a `followers`` collection with an appropriate Collection type", "name": "An ActivityPub Actor Object's `followers` Collection Must be a Collection", "uuid": "018c3e08-611f-7e56-9f45-2fe5e4877d4e" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "liked-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/liked-collection-must-be-a-collection", "description": "tests whether an ActivityPub Object has a liked collection with an appropriate Collection type", "name": "An ActivityPub Object `liked` Collection Must be a Collection", "uuid": "018c3df2-d6d8-7f62-805b-b71a96cc6170" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "liked-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/liked-collection-must-be-a-collection", "description": "tests whether an ActivityPub Object has a liked collection with an appropriate Collection type", "name": "An ActivityPub Object `liked` Collection Must be a Collection", "uuid": "018c3df2-d6d8-7f62-805b-b71a96cc6170" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "likes-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/likes-collection-must-be-a-collection", "description": "tests whether an ActivityPub Object has a likes collection with an appropriate Collection type", "name": "An ActivityPub Object `likes` Collection Must be a Collection", "uuid": "200b9bc8-aae3-46f2-a6ab-5366042c0f6e" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "likes-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/likes-collection-must-be-a-collection", "description": "tests whether an ActivityPub Object has a likes collection with an appropriate Collection type", "name": "An ActivityPub Object `likes` Collection Must be a Collection", "uuid": "200b9bc8-aae3-46f2-a6ab-5366042c0f6e" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "shares-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/shares-collection-must-be-a-collection", "description": "This test case tests that an actor's shares collection is an expected kind of collection", "name": "shares collection MUST be either an OrderedCollection or a Collection", "uuid": "b03a5245-1072-426d-91b3-a3d412d45ae8" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "shares-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/shares-collection-must-be-a-collection", "description": "This test case tests that an actor's shares collection is an expected kind of collection", "name": "shares collection MUST be either an OrderedCollection or a Collection", "uuid": "b03a5245-1072-426d-91b3-a3d412d45ae8" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "type": "TestResult", "inputs": { "actor": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "outcome": "passed", "source": [] }, "test": { "slug": "actor-objects-must-have-inbox-outbox-properties", "url": "https://socialweb.coop/activitypub/test-cases/actor-objects-must-have-inbox-outbox-properties", "description": "This rule checks whether a given Actor Object has the properties inbox and outbox.", "name": "Actor Objects Must Have Properties `inbox` and `outbox`", "uuid": "acaacb5f-8f7e-4f28-8d81-c7955070a767" }, "input": { "actor": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "type": "TestResult", "inputs": { "actor": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "outcome": "passed", "source": [] }, "test": { "slug": "actor-objects-must-have-inbox-outbox-properties", "url": "https://socialweb.coop/activitypub/test-cases/actor-objects-must-have-inbox-outbox-properties", "description": "This rule checks whether a given Actor Object has the properties inbox and outbox.", "name": "Actor Objects Must Have Properties `inbox` and `outbox`", "uuid": "acaacb5f-8f7e-4f28-8d81-c7955070a767" }, "input": { "actor": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "actor-must-serve-as2-object-to-get", "url": "https://socialweb.coop/activitypub/test-cases/actor-must-serve-as2-object-to-get", "description": "This rule checks that URLs of ActivityPub objects can be resolved to a representation with well-known media type for further processing.", "name": "ActivityPub Servers Must Serve Objects in Response to an HTTP GET Request Accepting ActivityStreams 2.0 Media Type", "uuid": "e7ee491d-88d7-4e67-80c8-f74781bb247c" }, "input": { "id": "https://socialweb.coop/", "time": "T10S" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "actor-must-serve-as2-object-to-get", "url": "https://socialweb.coop/activitypub/test-cases/actor-must-serve-as2-object-to-get", "description": "This rule checks that URLs of ActivityPub objects can be resolved to a representation with well-known media type for further processing.", "name": "ActivityPub Servers Must Serve Objects in Response to an HTTP GET Request Accepting ActivityStreams 2.0 Media Type", "uuid": "e7ee491d-88d7-4e67-80c8-f74781bb247c" }, "input": { "id": "https://socialweb.coop/", "time": "T10S" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "type": "TestResult", "outcome": "passed" }, "test": { "slug": "inbox-must-be-an-orderedcollection", "url": "https://socialweb.coop/activitypub/test-cases/inbox-must-be-an-orderedcollection", "description": "This rule checks whether the inbox property of an object appears to be an OrderedCollection", "name": "inbox must be an OrderedCollection", "uuid": "5e94d155-ed4a-4d71-b797-d7c387736ecf" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}", "time": "T10S" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "type": "TestResult", "outcome": "passed" }, "test": { "slug": "inbox-must-be-an-orderedcollection", "url": "https://socialweb.coop/activitypub/test-cases/inbox-must-be-an-orderedcollection", "description": "This rule checks whether the inbox property of an object appears to be an OrderedCollection", "name": "inbox must be an OrderedCollection", "uuid": "5e94d155-ed4a-4d71-b797-d7c387736ecf" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}", "time": "T10S" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "type": "TestResult", "outcome": "passed" }, "test": { "slug": "outbox-must-be-an-orderedcollection", "url": "https://socialweb.coop/activitypub/test-cases/outbox-must-be-an-orderedcollection", "description": "This rule checks whether the outbox property of an object appears to be an OrderedCollection", "name": "outbox must be an OrderedCollection", "uuid": "4af549f4-3797-4d99-a151-67c3d8feaa46" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}", "time": "T10S" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "type": "TestResult", "outcome": "passed" }, "test": { "slug": "outbox-must-be-an-orderedcollection", "url": "https://socialweb.coop/activitypub/test-cases/outbox-must-be-an-orderedcollection", "description": "This rule checks whether the outbox property of an object appears to be an OrderedCollection", "name": "outbox must be an OrderedCollection", "uuid": "4af549f4-3797-4d99-a151-67c3d8feaa46" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}", "time": "T10S" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "outbox-post-servers-must-return-a-201-created-http-code", "url": "https://socialweb.coop/activitypub/test-cases/outbox-post-servers-must-return-a-201-created-http-code", "description": "This test checks that an ActivityPub Outbox responds with a 201 status code when sent a POST request with an Activity submission.", "name": "Outbox Servers handling activity submissions MUST return a 201 created HTTP status code", "uuid": "723afcbb-118d-433e-8ab4-560ffca93582" }, "input": { "outbox": "https://socialweb.coop/outbox", "time": "T10S" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "outbox-post-servers-must-return-a-201-created-http-code", "url": "https://socialweb.coop/activitypub/test-cases/outbox-post-servers-must-return-a-201-created-http-code", "description": "This test checks that an ActivityPub Outbox responds with a 201 status code when sent a POST request with an Activity submission.", "name": "Outbox Servers handling activity submissions MUST return a 201 created HTTP status code", "uuid": "723afcbb-118d-433e-8ab4-560ffca93582" }, "input": { "outbox": "https://socialweb.coop/outbox", "time": "T10S" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "following-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/following-collection-must-be-a-collection", "description": "tests whether an ActivityPub Object has a `following`` collection with an appropriate Collection type", "name": "An ActivityPub Actor Object's `following` Collection Must be a Collection", "uuid": "018c3e17-a1bd-7040-8007-4cd3b9063288" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "followers-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/followers-collection-must-be-a-collection", "description": "tests whether an ActivityPub Object has a `followers`` collection with an appropriate Collection type", "name": "An ActivityPub Actor Object's `followers` Collection Must be a Collection", "uuid": "018c3e08-611f-7e56-9f45-2fe5e4877d4e" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "liked-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/liked-collection-must-be-a-collection", "description": "tests whether an ActivityPub Object has a liked collection with an appropriate Collection type", "name": "An ActivityPub Object `liked` Collection Must be a Collection", "uuid": "018c3df2-d6d8-7f62-805b-b71a96cc6170" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "likes-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/likes-collection-must-be-a-collection", "description": "tests whether an ActivityPub Object has a likes collection with an appropriate Collection type", "name": "An ActivityPub Object `likes` Collection Must be a Collection", "uuid": "200b9bc8-aae3-46f2-a6ab-5366042c0f6e" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "shares-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/shares-collection-must-be-a-collection", "description": "This test case tests that an actor's shares collection is an expected kind of collection", "name": "shares collection MUST be either an OrderedCollection or a Collection", "uuid": "b03a5245-1072-426d-91b3-a3d412d45ae8" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "type": "TestResult", "inputs": { "actor": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "outcome": "passed", "source": [] }, "test": { "slug": "actor-objects-must-have-inbox-outbox-properties", "url": "https://socialweb.coop/activitypub/test-cases/actor-objects-must-have-inbox-outbox-properties", "description": "This rule checks whether a given Actor Object has the properties inbox and outbox.", "name": "Actor Objects Must Have Properties `inbox` and `outbox`", "uuid": "acaacb5f-8f7e-4f28-8d81-c7955070a767" }, "input": { "actor": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "actor-must-serve-as2-object-to-get", "url": "https://socialweb.coop/activitypub/test-cases/actor-must-serve-as2-object-to-get", "description": "This rule checks that URLs of ActivityPub objects can be resolved to a representation with well-known media type for further processing.", "name": "ActivityPub Servers Must Serve Objects in Response to an HTTP GET Request Accepting ActivityStreams 2.0 Media Type", "uuid": "e7ee491d-88d7-4e67-80c8-f74781bb247c" }, "input": { "id": "https://socialweb.coop/", "time": "T10S" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "type": "TestResult", "outcome": "passed" }, "test": { "slug": "inbox-must-be-an-orderedcollection", "url": "https://socialweb.coop/activitypub/test-cases/inbox-must-be-an-orderedcollection", "description": "This rule checks whether the inbox property of an object appears to be an OrderedCollection", "name": "inbox must be an OrderedCollection", "uuid": "5e94d155-ed4a-4d71-b797-d7c387736ecf" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}", "time": "T10S" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "type": "TestResult", "outcome": "passed" }, "test": { "slug": "outbox-must-be-an-orderedcollection", "url": "https://socialweb.coop/activitypub/test-cases/outbox-must-be-an-orderedcollection", "description": "This rule checks whether the outbox property of an object appears to be an OrderedCollection", "name": "outbox must be an OrderedCollection", "uuid": "4af549f4-3797-4d99-a151-67c3d8feaa46" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}", "time": "T10S" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "outbox-post-servers-must-return-a-201-created-http-code", "url": "https://socialweb.coop/activitypub/test-cases/outbox-post-servers-must-return-a-201-created-http-code", "description": "This test checks that an ActivityPub Outbox responds with a 201 status code when sent a POST request with an Activity submission.", "name": "Outbox Servers handling activity submissions MUST return a 201 created HTTP status code", "uuid": "723afcbb-118d-433e-8ab4-560ffca93582" }, "input": { "outbox": "https://socialweb.coop/outbox", "time": "T10S" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "following-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/following-collection-must-be-a-collection", "description": "tests whether an ActivityPub Object has a `following`` collection with an appropriate Collection type", "name": "An ActivityPub Actor Object's `following` Collection Must be a Collection", "uuid": "018c3e17-a1bd-7040-8007-4cd3b9063288" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "followers-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/followers-collection-must-be-a-collection", "description": "tests whether an ActivityPub Object has a `followers`` collection with an appropriate Collection type", "name": "An ActivityPub Actor Object's `followers` Collection Must be a Collection", "uuid": "018c3e08-611f-7e56-9f45-2fe5e4877d4e" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "liked-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/liked-collection-must-be-a-collection", "description": "tests whether an ActivityPub Object has a liked collection with an appropriate Collection type", "name": "An ActivityPub Object `liked` Collection Must be a Collection", "uuid": "018c3df2-d6d8-7f62-805b-b71a96cc6170" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "likes-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/likes-collection-must-be-a-collection", "description": "tests whether an ActivityPub Object has a likes collection with an appropriate Collection type", "name": "An ActivityPub Object `likes` Collection Must be a Collection", "uuid": "200b9bc8-aae3-46f2-a6ab-5366042c0f6e" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "shares-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/shares-collection-must-be-a-collection", "description": "This test case tests that an actor's shares collection is an expected kind of collection", "name": "shares collection MUST be either an OrderedCollection or a Collection", "uuid": "b03a5245-1072-426d-91b3-a3d412d45ae8" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "type": "TestResult", "inputs": { "actor": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "outcome": "passed", "source": [] }, "test": { "slug": "actor-objects-must-have-inbox-outbox-properties", "url": "https://socialweb.coop/activitypub/test-cases/actor-objects-must-have-inbox-outbox-properties", "description": "This rule checks whether a given Actor Object has the properties inbox and outbox.", "name": "Actor Objects Must Have Properties `inbox` and `outbox`", "uuid": "acaacb5f-8f7e-4f28-8d81-c7955070a767" }, "input": { "actor": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "actor-must-serve-as2-object-to-get", "url": "https://socialweb.coop/activitypub/test-cases/actor-must-serve-as2-object-to-get", "description": "This rule checks that URLs of ActivityPub objects can be resolved to a representation with well-known media type for further processing.", "name": "ActivityPub Servers Must Serve Objects in Response to an HTTP GET Request Accepting ActivityStreams 2.0 Media Type", "uuid": "e7ee491d-88d7-4e67-80c8-f74781bb247c" }, "input": { "id": "https://socialweb.coop/", "time": "T10S" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "type": "TestResult", "outcome": "passed" }, "test": { "slug": "outbox-must-be-an-orderedcollection", "url": "https://socialweb.coop/activitypub/test-cases/outbox-must-be-an-orderedcollection", "description": "This rule checks whether the outbox property of an object appears to be an OrderedCollection", "name": "outbox must be an OrderedCollection", "uuid": "4af549f4-3797-4d99-a151-67c3d8feaa46" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}", "time": "T10S" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "type": "TestResult", "outcome": "passed" }, "test": { "slug": "inbox-must-be-an-orderedcollection", "url": "https://socialweb.coop/activitypub/test-cases/inbox-must-be-an-orderedcollection", "description": "This rule checks whether the inbox property of an object appears to be an OrderedCollection", "name": "inbox must be an OrderedCollection", "uuid": "5e94d155-ed4a-4d71-b797-d7c387736ecf" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}", "time": "T10S" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "outbox-post-servers-must-return-a-201-created-http-code", "url": "https://socialweb.coop/activitypub/test-cases/outbox-post-servers-must-return-a-201-created-http-code", "description": "This test checks that an ActivityPub Outbox responds with a 201 status code when sent a POST request with an Activity submission.", "name": "Outbox Servers handling activity submissions MUST return a 201 created HTTP status code", "uuid": "723afcbb-118d-433e-8ab4-560ffca93582" }, "input": { "outbox": "https://socialweb.coop/outbox", "time": "T10S" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "following-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/following-collection-must-be-a-collection", "description": "tests whether an ActivityPub Object has a `following`` collection with an appropriate Collection type", "name": "An ActivityPub Actor Object's `following` Collection Must be a Collection", "uuid": "018c3e17-a1bd-7040-8007-4cd3b9063288" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "followers-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/followers-collection-must-be-a-collection", "description": "tests whether an ActivityPub Object has a `followers`` collection with an appropriate Collection type", "name": "An ActivityPub Actor Object's `followers` Collection Must be a Collection", "uuid": "018c3e08-611f-7e56-9f45-2fe5e4877d4e" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "liked-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/liked-collection-must-be-a-collection", "description": "tests whether an ActivityPub Object has a liked collection with an appropriate Collection type", "name": "An ActivityPub Object `liked` Collection Must be a Collection", "uuid": "018c3df2-d6d8-7f62-805b-b71a96cc6170" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "likes-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/likes-collection-must-be-a-collection", "description": "tests whether an ActivityPub Object has a likes collection with an appropriate Collection type", "name": "An ActivityPub Object `likes` Collection Must be a Collection", "uuid": "200b9bc8-aae3-46f2-a6ab-5366042c0f6e" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "shares-collection-must-be-a-collection", "url": "https://socialweb.coop/activitypub/test-cases/shares-collection-must-be-a-collection", "description": "This test case tests that an actor's shares collection is an expected kind of collection", "name": "shares collection MUST be either an OrderedCollection or a Collection", "uuid": "b03a5245-1072-426d-91b3-a3d412d45ae8" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "type": "TestResult", "inputs": { "actor": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "outcome": "passed", "source": [] }, "test": { "slug": "actor-objects-must-have-inbox-outbox-properties", "url": "https://socialweb.coop/activitypub/test-cases/actor-objects-must-have-inbox-outbox-properties", "description": "This rule checks whether a given Actor Object has the properties inbox and outbox.", "name": "Actor Objects Must Have Properties `inbox` and `outbox`", "uuid": "acaacb5f-8f7e-4f28-8d81-c7955070a767" }, "input": { "actor": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "actor-must-serve-as2-object-to-get", "url": "https://socialweb.coop/activitypub/test-cases/actor-must-serve-as2-object-to-get", "description": "This rule checks that URLs of ActivityPub objects can be resolved to a representation with well-known media type for further processing.", "name": "ActivityPub Servers Must Serve Objects in Response to an HTTP GET Request Accepting ActivityStreams 2.0 Media Type", "uuid": "e7ee491d-88d7-4e67-80c8-f74781bb247c" }, "input": { "id": "https://socialweb.coop/", "time": "T10S" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "type": "TestResult", "outcome": "passed" }, "test": { "slug": "inbox-must-be-an-orderedcollection", "url": "https://socialweb.coop/activitypub/test-cases/inbox-must-be-an-orderedcollection", "description": "This rule checks whether the inbox property of an object appears to be an OrderedCollection", "name": "inbox must be an OrderedCollection", "uuid": "5e94d155-ed4a-4d71-b797-d7c387736ecf" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}", "time": "T10S" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "type": "TestResult", "outcome": "passed" }, "test": { "slug": "outbox-must-be-an-orderedcollection", "url": "https://socialweb.coop/activitypub/test-cases/outbox-must-be-an-orderedcollection", "description": "This rule checks whether the outbox property of an object appears to be an OrderedCollection", "name": "outbox must be an OrderedCollection", "uuid": "4af549f4-3797-4d99-a151-67c3d8feaa46" }, "input": { "object": "{\n \"type\": [\n \"Organization\"\n ],\n \"inbox\": \"https://socialweb.coop/inbox\",\n \"outbox\": \"https://socialweb.coop/outbox\",\n \"followers\": {\n \"type\": \"OrderedCollection\"\n },\n \"following\": {\n \"type\": \"OrderedCollection\"\n },\n \"liked\": {\n \"type\": \"OrderedCollection\"\n },\n \"likes\": {\n \"type\": \"OrderedCollection\"\n },\n \"shares\": {\n \"type\": \"OrderedCollection\"\n },\n \"id\": \"https://socialweb.coop/\",\n \"@context\": [\n \"https://www.w3.org/ns/activitystreams\"\n ]\n}", "time": "T10S" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] } { "type": [ "Assertion" ], "result": { "outcome": "passed" }, "test": { "slug": "outbox-post-servers-must-return-a-201-created-http-code", "url": "https://socialweb.coop/activitypub/test-cases/outbox-post-servers-must-return-a-201-created-http-code", "description": "This test checks that an ActivityPub Outbox responds with a 201 status code when sent a POST request with an Activity submission.", "name": "Outbox Servers handling activity submissions MUST return a 201 created HTTP status code", "uuid": "723afcbb-118d-433e-8ab4-560ffca93582" }, "input": { "outbox": "https://socialweb.coop/outbox", "time": "T10S" }, "@context": [ "https://www.w3.org/ns/activitystreams", "https://socialweb.coop/ns/testing/context.json" ] }