An ActivityPub Test

Background

ActivityPub §3.2 Retrieving Objects:

Servers... MUST present the ActivityStreams object representation in response to application/ld+json; profile="https://www.w3.org/ns/activitystreams"

About This Test

This is a Test Case describing a rule to determine whether an ActivityPub Object is in partial conformance with the following behaviors required by ActivityPub.

Identifier

The identifier of this test is urn:uuid:e7ee491d-88d7-4e67-80c8-f74781bb247c.

Test Subject

The subject of this test is an ActivityPub Server.

ActivityPub Servers host ActivityPub Objects and are responsible for serving them to clients that request a representation of them.

The Test Subject can be identified by a URI for an ActivityPub Object. The ActivityPub Object can be requested via HTTP, and the ActivityPub Server is the system that is expected to respond to the HTTP request.

Inputs

This test requires the following inputs:

  1. id - identifier of an ActivityPub Object hosted at an ActivityPub Server

  2. authorization - proof of authorization to retrieve the object identified by input id

  3. time - amount of time allowed to run test. This is meant to configure the limit for how long this test will wait for network requests.

Applicability

This test applies to a server hosting the ActivityPub Object identified by input id.

If input id is not a URI, outcome is inapplicable.

If input id URI scheme is not https or http, outcome is inapplicable. (This test may be revised later to handle other URI schemes).

If input time is not parseable as an RFC3339 dur-time, outcome is inapplicable.

Test Targets

Expectations

Assumptions

Implementation Considerations

Though the spec only requires serving the object in response to this Accept header value, servers seeking to interop widely may also want to serve the same object in response to Accept header values like:

Test Cases

These are test cases for this test itself.

simple passed case

outcome: passed

inputs

test targets

nginx 404 response body

outcome: failed

inputs

test targets

non-URI input id

outcome: inapplicable

inputs

test targets

non-RFC3339-duration input time

outcome: inapplicable

inputs

test targets

Glossary

outcome

An outcome is a conclusion that comes from evaluating a test on a test subject. An outcome can be one of the three following types:

Requirements Mapping

Change Log

Issues List