ActivityPub § 5.3 Followers Collection:
Every actor SHOULD have a followers collection. This is a list of everyone who has sent a Follow activity for the actor, added as a side effect. This is where one would find a list of all the actors that are following the actor. The followers collection MUST be either an OrderedCollection or a Collection
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.
The identifier of this test is urn:uuid:018c3e08-611f-7e56-9f45-2fe5e4877d4e
.
The subject of this test is an ActivityPub Actor Object.
This test requires the following inputs indicating parts of the test subject:
object
- the object whose followers
property will be tested
This test applies to each of the followers collections derived
from the values of the property on object
named followers
.
object
is a JSON objectobject
JSON object has a property named followers
targets
be a setfollowersValues
be the result of
object.followers
is an Array, return itobject.followers
followersValues
targets
targets
targets
For every target target
target
is a JSON objecttarget
has a property named type
target
's type
property must be one of
What follows are some specific cases of applything this test.
inputs
object
:
{
"followers": {
"type": "Collection"
}
}
test targets
{
"type": "Collection"
}
passed
inputs
object
:
{
"followers": {
"type": "OrderedCollection"
}
}
test targets
{
"type": "OrderedCollection"
}
passed
inputs
object
:
{
"followers": {
"type": ["FancyCollection", "OrderedCollection"]
}
}
test targets
{
"type": ["FancyCollection", "OrderedCollection"]
}
passed
"FancyCollection"
is not well-defined here,
but this object still passes the test because at least one of the type
property values is OrderedCollection
and thus satisfies the requirement
as interpreted.inputs
object
:
{
"followers": 1
}
test targets
1
failed
inputs
object
:
{
"followers": {}
}
test targets
{}
failed
"Link"
inputs
object
:
{
"followers": {
"type": ["Link"]
}
}
test targets
{
"type": ["Link"]
}
failed
inputs
object
:
1
result
inapplicable
inputs
object
:
{ "foo": "bar" }
result
inapplicable
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:
inapplicable
: No part of the test subject matches the applicabilitypassed
: A test target meets all expectationsfailed
: A test target does not meet all expectationspassed
, the requirement is satisfied by the test subjectfailed
, the requirement is not satisfied by the test subjectinapplicable
, further testing is needed to determine requirement satisfaction