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 followerstargets be a setfollowersValues be the result of
object.followers is an Array, return itobject.followersfollowersValues
targetstargetstargetsFor every target target
target is a JSON objecttarget has a property named typetarget'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"
}
passedinputs
object:
{
"followers": {
"type": "OrderedCollection"
}
}
test targets
{
"type": "OrderedCollection"
}
passedinputs
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
failedinputs
object:
{
"followers": {}
}
test targets
{}
failed"Link"inputs
object:
{
"followers": {
"type": ["Link"]
}
}
test targets
{
"type": ["Link"]
}
failedinputs
object:
1
result
inapplicableinputs
object:
{ "foo": "bar" }
result
inapplicableoutcomeAn 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