Instance level implementation status
The goal of this page is to provide an overview of the status of the implementation of features, that can be checked on the instance level. This means that we are not checking how servers interact with each other, or how they interact with users. Instead we are checking simple technical properties.
The code used to generate this page is available at codeberg.org. Contributions are welcome, both in the form of new features to test, and in adding your application.
Results
FEP-2677 | FEP-f1d5 | RFC 6415 | |
---|---|---|---|
feature | feature | feature | |
bovine | ✅ | ✅ | ✅ |
brutalinks | ✅ | ||
catodon | ✅ | ||
gancio | ✅ | ✅ | ✅ |
lemmy | |||
mastodon | ✅ | ✅ | |
mitra | ✅ | ||
mobilzon | |||
sharkey | ✅ | ||
wordpress |
Test Logs
bovine
Feature: FEP-2677: Identifying the Application Actor # features/fediverse-features/feps/fep-2677.feature:1
Current draft: https://codeberg.org/fediverse/fep/src/branch/main/fep/2677/fep-2677.md
Scenario: Application Actor is identified # features/fediverse-features/feps/fep-2677.feature:4
Given a Fediverse server # features/steps/nodeinfo.py:15
When querying /.well-known/nodeinfo # features/steps/nodeinfo.py:23
Then The links contain one of type "https://www.w3.org/ns/activitystreams#Application" # features/steps/nodeinfo.py:38
And This page can be resolved # features/steps/nodeinfo.py:48
And The result is an application actor # features/steps/nodeinfo.py:60
Feature: Nodeinfo # features/fediverse-features/fedi/node_info.feature:1
Information on nodeinfo is available in
FEP-f165: https://codeberg.org/fediverse/fep/src/branch/main/fep/f1d5/fep-f1d5.md
@nodeinfo-2-0
Scenario: # features/fediverse-features/fedi/node_info.feature:6
Given A Fediverse server # features/steps/nodeinfo.py:15
When Querying /.well-known/nodeinfo # features/steps/nodeinfo.py:23
Then The links contain one of type "http://nodeinfo.diaspora.software/ns/schema/2.0" # features/steps/nodeinfo.py:38
And This page can be resolved # features/steps/nodeinfo.py:48
And The body of this page obeys the schema given by "http://nodeinfo.diaspora.software/ns/schema/2.0" # features/steps/nodeinfo.py:65
Feature: Host Meta # features/fediverse-features/ietf/host_meta.feature:7
As defined in https://www.rfc-editor.org/rfc/rfc6415.html
Scenario: # features/fediverse-features/ietf/host_meta.feature:10
Given A Fediverse server # features/steps/nodeinfo.py:15
When Querying /.well-known/host-meta # features/steps/nodeinfo.py:23
Then The page must resolve at port 80 or 443 # features/steps/ietf.py:9
And If both port 80 _and_ 443 work, then they SHOULD return same document # features/steps/ietf.py:14
And The document SHOULD be served with "application/xrd+xml" media type # features/steps/ietf.py:19
And The document's root MUST be an "XRD" element # features/steps/ietf.py:26
And The document SHOULD NOT include elements of type "Subject" # features/steps/ietf.py:32
And The document SHOULD include elements of type "Link" # features/steps/ietf.py:32
And The "Link" elements should include either "template" or "href" attributes # features/steps/ietf.py:46
And The document should have at least one 'lrdd' document # features/steps/ietf.py:67
And Fediverse specific: The lrdd document must include template containing WebFinger well-known URI # features/steps/ietf.py:77
brutalinks
Feature: FEP-2677: Identifying the Application Actor # features/fediverse-features/feps/fep-2677.feature:1
Current draft: https://codeberg.org/fediverse/fep/src/branch/main/fep/2677/fep-2677.md
Scenario: Application Actor is identified # features/fediverse-features/feps/fep-2677.feature:4
Given a Fediverse server # features/steps/nodeinfo.py:15
When querying /.well-known/nodeinfo # features/steps/nodeinfo.py:23
Then The links contain one of type "https://www.w3.org/ns/activitystreams#Application" # features/steps/nodeinfo.py:38
Traceback (most recent call last):
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/model.py", line 1329, in run
match.run(runner.context)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/matchers.py", line 98, in run
self.func(context, *args, **kwargs)
File "features/steps/nodeinfo.py", line 45, in contains_rel
assert context.link
AssertionError
And This page can be resolved # None
And The result is an application actor # None
Feature: Nodeinfo # features/fediverse-features/fedi/node_info.feature:1
Information on nodeinfo is available in
FEP-f165: https://codeberg.org/fediverse/fep/src/branch/main/fep/f1d5/fep-f1d5.md
@nodeinfo-2-0
Scenario: # features/fediverse-features/fedi/node_info.feature:6
Given A Fediverse server # features/steps/nodeinfo.py:15
When Querying /.well-known/nodeinfo # features/steps/nodeinfo.py:23
Then The links contain one of type "http://nodeinfo.diaspora.software/ns/schema/2.0" # features/steps/nodeinfo.py:38
And This page can be resolved # features/steps/nodeinfo.py:48
And The body of this page obeys the schema given by "http://nodeinfo.diaspora.software/ns/schema/2.0" # features/steps/nodeinfo.py:65
Feature: Host Meta # features/fediverse-features/ietf/host_meta.feature:7
As defined in https://www.rfc-editor.org/rfc/rfc6415.html
Scenario: # features/fediverse-features/ietf/host_meta.feature:10
Given A Fediverse server # features/steps/nodeinfo.py:15
When Querying /.well-known/host-meta # features/steps/nodeinfo.py:23
Then The page must resolve at port 80 or 443 # features/steps/ietf.py:9
And If both port 80 _and_ 443 work, then they SHOULD return same document # features/steps/ietf.py:14
And The document SHOULD be served with "application/xrd+xml" media type # features/steps/ietf.py:19
Traceback (most recent call last):
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/model.py", line 1329, in run
match.run(runner.context)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/matchers.py", line 98, in run
self.func(context, *args, **kwargs)
File "features/steps/ietf.py", line 21, in check_media_type
assert media_type in context.content_type
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError
And The document's root MUST be an "XRD" element # None
And The document SHOULD NOT include elements of type "Subject" # None
And The document SHOULD include elements of type "Link" # None
And The "Link" elements should include either "template" or "href" attributes # None
And The document should have at least one 'lrdd' document # None
And Fediverse specific: The lrdd document must include template containing WebFinger well-known URI # None
catodon
Feature: FEP-2677: Identifying the Application Actor # features/fediverse-features/feps/fep-2677.feature:1
Current draft: https://codeberg.org/fediverse/fep/src/branch/main/fep/2677/fep-2677.md
Scenario: Application Actor is identified # features/fediverse-features/feps/fep-2677.feature:4
Given a Fediverse server # features/steps/nodeinfo.py:15
When querying /.well-known/nodeinfo # features/steps/nodeinfo.py:23
Then The links contain one of type "https://www.w3.org/ns/activitystreams#Application" # features/steps/nodeinfo.py:38
Traceback (most recent call last):
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/model.py", line 1329, in run
match.run(runner.context)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/matchers.py", line 98, in run
self.func(context, *args, **kwargs)
File "features/steps/nodeinfo.py", line 45, in contains_rel
assert context.link
AssertionError
And This page can be resolved # None
And The result is an application actor # None
Feature: Nodeinfo # features/fediverse-features/fedi/node_info.feature:1
Information on nodeinfo is available in
FEP-f165: https://codeberg.org/fediverse/fep/src/branch/main/fep/f1d5/fep-f1d5.md
@nodeinfo-2-0
Scenario: # features/fediverse-features/fedi/node_info.feature:6
Given A Fediverse server # features/steps/nodeinfo.py:15
When Querying /.well-known/nodeinfo # features/steps/nodeinfo.py:23
Then The links contain one of type "http://nodeinfo.diaspora.software/ns/schema/2.0" # features/steps/nodeinfo.py:38
And This page can be resolved # features/steps/nodeinfo.py:48
And The body of this page obeys the schema given by "http://nodeinfo.diaspora.software/ns/schema/2.0" # features/steps/nodeinfo.py:65
Traceback (most recent call last):
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/model.py", line 1329, in run
match.run(runner.context)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/matchers.py", line 98, in run
self.func(context, *args, **kwargs)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/api/async_step.py", line 157, in wrapped_decorator
return step_decorator(astep_func, context, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/api/async_step.py", line 124, in step_decorator
loop.run_until_complete(astep_func(context, *args, **kwargs))
File "/usr/local/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "features/steps/nodeinfo.py", line 74, in validate
jsonschema.validate(context.page_body, schema)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/jsonschema/validators.py", line 1308, in validate
raise error
jsonschema.exceptions.ValidationError: Additional properties are not allowed ('homepage' was unexpected)
Failed validating 'additionalProperties' in schema['properties']['software']:
{'additionalProperties': False,
'description': 'Metadata about server software in use.',
'properties': {'name': {'description': 'The canonical name of this '
'server software.',
'pattern': '^[a-z0-9-]+$',
'type': 'string'},
'version': {'description': 'The version of this server '
'software.',
'type': 'string'}},
'required': ['name', 'version'],
'type': 'object'}
On instance['software']:
{'homepage': 'https://catodon.social/',
'name': 'catodon',
'version': '23.12-alpha.3'}
Feature: Host Meta # features/fediverse-features/ietf/host_meta.feature:7
As defined in https://www.rfc-editor.org/rfc/rfc6415.html
Scenario: # features/fediverse-features/ietf/host_meta.feature:10
Given A Fediverse server # features/steps/nodeinfo.py:15
When Querying /.well-known/host-meta # features/steps/nodeinfo.py:23
Then The page must resolve at port 80 or 443 # features/steps/ietf.py:9
And If both port 80 _and_ 443 work, then they SHOULD return same document # features/steps/ietf.py:14
And The document SHOULD be served with "application/xrd+xml" media type # features/steps/ietf.py:19
And The document's root MUST be an "XRD" element # features/steps/ietf.py:26
And The document SHOULD NOT include elements of type "Subject" # features/steps/ietf.py:32
And The document SHOULD include elements of type "Link" # features/steps/ietf.py:32
And The "Link" elements should include either "template" or "href" attributes # features/steps/ietf.py:46
And The document should have at least one 'lrdd' document # features/steps/ietf.py:67
And Fediverse specific: The lrdd document must include template containing WebFinger well-known URI # features/steps/ietf.py:77
gancio
Feature: FEP-2677: Identifying the Application Actor # features/fediverse-features/feps/fep-2677.feature:1
Current draft: https://codeberg.org/fediverse/fep/src/branch/main/fep/2677/fep-2677.md
Scenario: Application Actor is identified # features/fediverse-features/feps/fep-2677.feature:4
Given a Fediverse server # features/steps/nodeinfo.py:15
When querying /.well-known/nodeinfo # features/steps/nodeinfo.py:23
Then The links contain one of type "https://www.w3.org/ns/activitystreams#Application" # features/steps/nodeinfo.py:38
And This page can be resolved # features/steps/nodeinfo.py:48
And The result is an application actor # features/steps/nodeinfo.py:60
Feature: Nodeinfo # features/fediverse-features/fedi/node_info.feature:1
Information on nodeinfo is available in
FEP-f165: https://codeberg.org/fediverse/fep/src/branch/main/fep/f1d5/fep-f1d5.md
@nodeinfo-2-0
Scenario: # features/fediverse-features/fedi/node_info.feature:6
Given A Fediverse server # features/steps/nodeinfo.py:15
When Querying /.well-known/nodeinfo # features/steps/nodeinfo.py:23
Then The links contain one of type "http://nodeinfo.diaspora.software/ns/schema/2.0" # features/steps/nodeinfo.py:38
And This page can be resolved # features/steps/nodeinfo.py:48
And The body of this page obeys the schema given by "http://nodeinfo.diaspora.software/ns/schema/2.0" # features/steps/nodeinfo.py:65
Feature: Host Meta # features/fediverse-features/ietf/host_meta.feature:7
As defined in https://www.rfc-editor.org/rfc/rfc6415.html
Scenario: # features/fediverse-features/ietf/host_meta.feature:10
Given A Fediverse server # features/steps/nodeinfo.py:15
When Querying /.well-known/host-meta # features/steps/nodeinfo.py:23
Then The page must resolve at port 80 or 443 # features/steps/ietf.py:9
And If both port 80 _and_ 443 work, then they SHOULD return same document # features/steps/ietf.py:14
And The document SHOULD be served with "application/xrd+xml" media type # features/steps/ietf.py:19
And The document's root MUST be an "XRD" element # features/steps/ietf.py:26
And The document SHOULD NOT include elements of type "Subject" # features/steps/ietf.py:32
And The document SHOULD include elements of type "Link" # features/steps/ietf.py:32
And The "Link" elements should include either "template" or "href" attributes # features/steps/ietf.py:46
And The document should have at least one 'lrdd' document # features/steps/ietf.py:67
And Fediverse specific: The lrdd document must include template containing WebFinger well-known URI # features/steps/ietf.py:77
lemmy
Feature: FEP-2677: Identifying the Application Actor # features/fediverse-features/feps/fep-2677.feature:1
Current draft: https://codeberg.org/fediverse/fep/src/branch/main/fep/2677/fep-2677.md
Scenario: Application Actor is identified # features/fediverse-features/feps/fep-2677.feature:4
Given a Fediverse server # features/steps/nodeinfo.py:15
When querying /.well-known/nodeinfo # features/steps/nodeinfo.py:23
Then The links contain one of type "https://www.w3.org/ns/activitystreams#Application" # features/steps/nodeinfo.py:38
Traceback (most recent call last):
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/model.py", line 1329, in run
match.run(runner.context)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/matchers.py", line 98, in run
self.func(context, *args, **kwargs)
File "features/steps/nodeinfo.py", line 45, in contains_rel
assert context.link
AssertionError
And This page can be resolved # None
And The result is an application actor # None
Feature: Nodeinfo # features/fediverse-features/fedi/node_info.feature:1
Information on nodeinfo is available in
FEP-f165: https://codeberg.org/fediverse/fep/src/branch/main/fep/f1d5/fep-f1d5.md
@nodeinfo-2-0
Scenario: # features/fediverse-features/fedi/node_info.feature:6
Given A Fediverse server # features/steps/nodeinfo.py:15
When Querying /.well-known/nodeinfo # features/steps/nodeinfo.py:23
Then The links contain one of type "http://nodeinfo.diaspora.software/ns/schema/2.0" # features/steps/nodeinfo.py:38
And This page can be resolved # features/steps/nodeinfo.py:48
And The body of this page obeys the schema given by "http://nodeinfo.diaspora.software/ns/schema/2.0" # features/steps/nodeinfo.py:65
Traceback (most recent call last):
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/model.py", line 1329, in run
match.run(runner.context)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/matchers.py", line 98, in run
self.func(context, *args, **kwargs)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/api/async_step.py", line 157, in wrapped_decorator
return step_decorator(astep_func, context, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/api/async_step.py", line 124, in step_decorator
loop.run_until_complete(astep_func(context, *args, **kwargs))
File "/usr/local/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "features/steps/nodeinfo.py", line 74, in validate
jsonschema.validate(context.page_body, schema)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/jsonschema/validators.py", line 1308, in validate
raise error
jsonschema.exceptions.ValidationError: 'services' is a required property
Failed validating 'required' in schema:
{'$schema': 'http://json-schema.org/draft-04/schema#',
'additionalProperties': False,
'description': 'NodeInfo schema version 2.0.',
'id': 'http://nodeinfo.diaspora.software/ns/schema/2.0#',
'properties': {'metadata': {'additionalProperties': True,
'description': 'Free form key value pairs '
'for software specific '
'values. Clients should '
'not rely on any specific '
'key present.',
'minProperties': 0,
'type': 'object'},
'openRegistrations': {'description': 'Whether this '
'server allows '
'open '
'self-registration.',
'type': 'boolean'},
'protocols': {'description': 'The protocols supported '
'on this server.',
'items': {'enum': ['activitypub',
'buddycloud',
'dfrn',
'diaspora',
'libertree',
'ostatus',
'pumpio',
'tent',
'xmpp',
'zot']},
'minItems': 1,
'type': 'array'},
'services': {'additionalProperties': False,
'description': 'The third party sites '
'this server can connect '
'to via their application '
'API.',
'properties': {'inbound': {'description': 'The '
'third '
'party '
'sites '
'this '
'server '
'can '
'retrieve '
'messages '
'from '
'for '
'combined '
'display '
'with '
'regular '
'traffic.',
'items': {'enum': ['atom1.0',
'gnusocial',
'imap',
'pnut',
'pop3',
'pumpio',
'rss2.0',
'twitter']},
'minItems': 0,
'type': 'array'},
'outbound': {'description': 'The '
'third '
'party '
'sites '
'this '
'server '
'can '
'publish '
'messages '
'to '
'on '
'the '
'behalf '
'of '
'a '
'user.',
'items': {'enum': ['atom1.0',
'blogger',
'buddycloud',
'diaspora',
'dreamwidth',
'drupal',
'facebook',
'friendica',
'gnusocial',
'google',
'insanejournal',
'libertree',
'linkedin',
'livejournal',
'mediagoblin',
'myspace',
'pinterest',
'pnut',
'posterous',
'pumpio',
'redmatrix',
'rss2.0',
'smtp',
'tent',
'tumblr',
'twitter',
'wordpress',
'xmpp']},
'minItems': 0,
'type': 'array'}},
'required': ['inbound', 'outbound'],
'type': 'object'},
'software': {'additionalProperties': False,
'description': 'Metadata about server '
'software in use.',
'properties': {'name': {'description': 'The '
'canonical '
'name '
'of '
'this '
'server '
'software.',
'pattern': '^[a-z0-9-]+$',
'type': 'string'},
'version': {'description': 'The '
'version '
'of '
'this '
'server '
'software.',
'type': 'string'}},
'required': ['name', 'version'],
'type': 'object'},
'usage': {'additionalProperties': False,
'description': 'Usage statistics for this '
'server.',
'properties': {'localComments': {'description': 'The '
'amount '
'of '
'comments '
'that '
'were '
'made '
'by '
'users '
'that '
'are '
'registered '
'on '
'this '
'server.',
'minimum': 0,
'type': 'integer'},
'localPosts': {'description': 'The '
'amount '
'of '
'posts '
'that '
'were '
'made '
'by '
'users '
'that '
'are '
'registered '
'on '
'this '
'server.',
'minimum': 0,
'type': 'integer'},
'users': {'additionalProperties': False,
'description': 'statistics '
'about '
'the '
'users '
'of '
'this '
'server.',
'properties': {'activeHalfyear': {'description': 'The '
'amount '
'of '
'users '
'that '
'signed '
'in '
'at '
'least '
'once '
'in '
'the '
'last '
'180 '
'days.',
'minimum': 0,
'type': 'integer'},
'activeMonth': {'description': 'The '
'amount '
'of '
'users '
'that '
'signed '
'in '
'at '
'least '
'once '
'in '
'the '
'last '
'30 '
'days.',
'minimum': 0,
'type': 'integer'},
'total': {'description': 'The '
'total '
'amount '
'of '
'on '
'this '
'server '
'registered '
'users.',
'minimum': 0,
'type': 'integer'}},
'type': 'object'}},
'required': ['users'],
'type': 'object'},
'version': {'description': 'The schema version, must '
'be 2.0.',
'enum': ['2.0']}},
'required': ['version',
'software',
'protocols',
'services',
'openRegistrations',
'usage',
'metadata'],
'type': 'object'}
On instance:
{'openRegistrations': True,
'protocols': ['activitypub'],
'software': {'name': 'lemmy', 'version': '0.19.2'},
'usage': {'localComments': 426123,
'localPosts': 111450,
'users': {'activeHalfyear': 8204,
'activeMonth': 2692,
'total': 50377}},
'version': '2.0'}
Feature: Host Meta # features/fediverse-features/ietf/host_meta.feature:7
As defined in https://www.rfc-editor.org/rfc/rfc6415.html
Scenario: # features/fediverse-features/ietf/host_meta.feature:10
Given A Fediverse server # features/steps/nodeinfo.py:15
When Querying /.well-known/host-meta # features/steps/nodeinfo.py:23
Traceback (most recent call last):
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/model.py", line 1329, in run
match.run(runner.context)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/matchers.py", line 98, in run
self.func(context, *args, **kwargs)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/api/async_step.py", line 157, in wrapped_decorator
return step_decorator(astep_func, context, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/api/async_step.py", line 124, in step_decorator
loop.run_until_complete(astep_func(context, *args, **kwargs))
File "/usr/local/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "features/steps/nodeinfo.py", line 29, in query_path
response.raise_for_status()
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/aiohttp/client_reqrep.py", line 1059, in raise_for_status
raise ClientResponseError(
aiohttp.client_exceptions.ClientResponseError: 404, message='Not Found', url=URL('https://lemmy.ml/.well-known/host-meta')
Then The page must resolve at port 80 or 443 # None
And If both port 80 _and_ 443 work, then they SHOULD return same document # None
And The document SHOULD be served with "application/xrd+xml" media type # None
And The document's root MUST be an "XRD" element # None
And The document SHOULD NOT include elements of type "Subject" # None
And The document SHOULD include elements of type "Link" # None
And The "Link" elements should include either "template" or "href" attributes # None
And The document should have at least one 'lrdd' document # None
And Fediverse specific: The lrdd document must include template containing WebFinger well-known URI # None
mastodon
Feature: FEP-2677: Identifying the Application Actor # features/fediverse-features/feps/fep-2677.feature:1
Current draft: https://codeberg.org/fediverse/fep/src/branch/main/fep/2677/fep-2677.md
Scenario: Application Actor is identified # features/fediverse-features/feps/fep-2677.feature:4
Given a Fediverse server # features/steps/nodeinfo.py:15
When querying /.well-known/nodeinfo # features/steps/nodeinfo.py:23
Then The links contain one of type "https://www.w3.org/ns/activitystreams#Application" # features/steps/nodeinfo.py:38
Traceback (most recent call last):
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/model.py", line 1329, in run
match.run(runner.context)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/matchers.py", line 98, in run
self.func(context, *args, **kwargs)
File "features/steps/nodeinfo.py", line 45, in contains_rel
assert context.link
AssertionError
And This page can be resolved # None
And The result is an application actor # None
Feature: Nodeinfo # features/fediverse-features/fedi/node_info.feature:1
Information on nodeinfo is available in
FEP-f165: https://codeberg.org/fediverse/fep/src/branch/main/fep/f1d5/fep-f1d5.md
@nodeinfo-2-0
Scenario: # features/fediverse-features/fedi/node_info.feature:6
Given A Fediverse server # features/steps/nodeinfo.py:15
When Querying /.well-known/nodeinfo # features/steps/nodeinfo.py:23
Then The links contain one of type "http://nodeinfo.diaspora.software/ns/schema/2.0" # features/steps/nodeinfo.py:38
And This page can be resolved # features/steps/nodeinfo.py:48
And The body of this page obeys the schema given by "http://nodeinfo.diaspora.software/ns/schema/2.0" # features/steps/nodeinfo.py:65
Feature: Host Meta # features/fediverse-features/ietf/host_meta.feature:7
As defined in https://www.rfc-editor.org/rfc/rfc6415.html
Scenario: # features/fediverse-features/ietf/host_meta.feature:10
Given A Fediverse server # features/steps/nodeinfo.py:15
When Querying /.well-known/host-meta # features/steps/nodeinfo.py:23
Then The page must resolve at port 80 or 443 # features/steps/ietf.py:9
And If both port 80 _and_ 443 work, then they SHOULD return same document # features/steps/ietf.py:14
And The document SHOULD be served with "application/xrd+xml" media type # features/steps/ietf.py:19
And The document's root MUST be an "XRD" element # features/steps/ietf.py:26
And The document SHOULD NOT include elements of type "Subject" # features/steps/ietf.py:32
And The document SHOULD include elements of type "Link" # features/steps/ietf.py:32
And The "Link" elements should include either "template" or "href" attributes # features/steps/ietf.py:46
And The document should have at least one 'lrdd' document # features/steps/ietf.py:67
And Fediverse specific: The lrdd document must include template containing WebFinger well-known URI # features/steps/ietf.py:77
mitra
Feature: FEP-2677: Identifying the Application Actor # features/fediverse-features/feps/fep-2677.feature:1
Current draft: https://codeberg.org/fediverse/fep/src/branch/main/fep/2677/fep-2677.md
Scenario: Application Actor is identified # features/fediverse-features/feps/fep-2677.feature:4
Given a Fediverse server # features/steps/nodeinfo.py:15
When querying /.well-known/nodeinfo # features/steps/nodeinfo.py:23
Then The links contain one of type "https://www.w3.org/ns/activitystreams#Application" # features/steps/nodeinfo.py:38
Traceback (most recent call last):
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/model.py", line 1329, in run
match.run(runner.context)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/matchers.py", line 98, in run
self.func(context, *args, **kwargs)
File "features/steps/nodeinfo.py", line 45, in contains_rel
assert context.link
AssertionError
And This page can be resolved # None
And The result is an application actor # None
Feature: Nodeinfo # features/fediverse-features/fedi/node_info.feature:1
Information on nodeinfo is available in
FEP-f165: https://codeberg.org/fediverse/fep/src/branch/main/fep/f1d5/fep-f1d5.md
@nodeinfo-2-0
Scenario: # features/fediverse-features/fedi/node_info.feature:6
Given A Fediverse server # features/steps/nodeinfo.py:15
When Querying /.well-known/nodeinfo # features/steps/nodeinfo.py:23
Then The links contain one of type "http://nodeinfo.diaspora.software/ns/schema/2.0" # features/steps/nodeinfo.py:38
And This page can be resolved # features/steps/nodeinfo.py:48
And The body of this page obeys the schema given by "http://nodeinfo.diaspora.software/ns/schema/2.0" # features/steps/nodeinfo.py:65
Feature: Host Meta # features/fediverse-features/ietf/host_meta.feature:7
As defined in https://www.rfc-editor.org/rfc/rfc6415.html
Scenario: # features/fediverse-features/ietf/host_meta.feature:10
Given A Fediverse server # features/steps/nodeinfo.py:15
When Querying /.well-known/host-meta # features/steps/nodeinfo.py:23
Traceback (most recent call last):
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/model.py", line 1329, in run
match.run(runner.context)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/matchers.py", line 98, in run
self.func(context, *args, **kwargs)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/api/async_step.py", line 157, in wrapped_decorator
return step_decorator(astep_func, context, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/api/async_step.py", line 124, in step_decorator
loop.run_until_complete(astep_func(context, *args, **kwargs))
File "/usr/local/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "features/steps/nodeinfo.py", line 29, in query_path
response.raise_for_status()
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/aiohttp/client_reqrep.py", line 1059, in raise_for_status
raise ClientResponseError(
aiohttp.client_exceptions.ClientResponseError: 404, message='Not Found', url=URL('https://mitra.social/.well-known/host-meta')
Then The page must resolve at port 80 or 443 # None
And If both port 80 _and_ 443 work, then they SHOULD return same document # None
And The document SHOULD be served with "application/xrd+xml" media type # None
And The document's root MUST be an "XRD" element # None
And The document SHOULD NOT include elements of type "Subject" # None
And The document SHOULD include elements of type "Link" # None
And The "Link" elements should include either "template" or "href" attributes # None
And The document should have at least one 'lrdd' document # None
And Fediverse specific: The lrdd document must include template containing WebFinger well-known URI # None
mobilzon
Feature: FEP-2677: Identifying the Application Actor # features/fediverse-features/feps/fep-2677.feature:1
Current draft: https://codeberg.org/fediverse/fep/src/branch/main/fep/2677/fep-2677.md
Scenario: Application Actor is identified # features/fediverse-features/feps/fep-2677.feature:4
Given a Fediverse server # features/steps/nodeinfo.py:15
When querying /.well-known/nodeinfo # features/steps/nodeinfo.py:23
Then The links contain one of type "https://www.w3.org/ns/activitystreams#Application" # features/steps/nodeinfo.py:38
Traceback (most recent call last):
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/model.py", line 1329, in run
match.run(runner.context)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/matchers.py", line 98, in run
self.func(context, *args, **kwargs)
File "features/steps/nodeinfo.py", line 45, in contains_rel
assert context.link
AssertionError
And This page can be resolved # None
And The result is an application actor # None
Feature: Nodeinfo # features/fediverse-features/fedi/node_info.feature:1
Information on nodeinfo is available in
FEP-f165: https://codeberg.org/fediverse/fep/src/branch/main/fep/f1d5/fep-f1d5.md
@nodeinfo-2-0
Scenario: # features/fediverse-features/fedi/node_info.feature:6
Given A Fediverse server # features/steps/nodeinfo.py:15
When Querying /.well-known/nodeinfo # features/steps/nodeinfo.py:23
Then The links contain one of type "http://nodeinfo.diaspora.software/ns/schema/2.0" # features/steps/nodeinfo.py:38
And This page can be resolved # features/steps/nodeinfo.py:48
And The body of this page obeys the schema given by "http://nodeinfo.diaspora.software/ns/schema/2.0" # features/steps/nodeinfo.py:65
Traceback (most recent call last):
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/model.py", line 1329, in run
match.run(runner.context)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/matchers.py", line 98, in run
self.func(context, *args, **kwargs)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/api/async_step.py", line 157, in wrapped_decorator
return step_decorator(astep_func, context, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/api/async_step.py", line 124, in step_decorator
loop.run_until_complete(astep_func(context, *args, **kwargs))
File "/usr/local/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "features/steps/nodeinfo.py", line 74, in validate
jsonschema.validate(context.page_body, schema)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/jsonschema/validators.py", line 1308, in validate
raise error
jsonschema.exceptions.ValidationError: 'Mobilizon' does not match '^[a-z0-9-]+$'
Failed validating 'pattern' in schema['properties']['software']['properties']['name']:
{'description': 'The canonical name of this server software.',
'pattern': '^[a-z0-9-]+$',
'type': 'string'}
On instance['software']['name']:
'Mobilizon'
Feature: Host Meta # features/fediverse-features/ietf/host_meta.feature:7
As defined in https://www.rfc-editor.org/rfc/rfc6415.html
Scenario: # features/fediverse-features/ietf/host_meta.feature:10
Given A Fediverse server # features/steps/nodeinfo.py:15
When Querying /.well-known/host-meta # features/steps/nodeinfo.py:23
Traceback (most recent call last):
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/model.py", line 1329, in run
match.run(runner.context)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/matchers.py", line 98, in run
self.func(context, *args, **kwargs)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/api/async_step.py", line 157, in wrapped_decorator
return step_decorator(astep_func, context, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/api/async_step.py", line 124, in step_decorator
loop.run_until_complete(astep_func(context, *args, **kwargs))
File "/usr/local/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "features/steps/nodeinfo.py", line 29, in query_path
response.raise_for_status()
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/aiohttp/client_reqrep.py", line 1059, in raise_for_status
raise ClientResponseError(
aiohttp.client_exceptions.ClientResponseError: 404, message='Not Found', url=URL('https://demo.mobilizon.org/.well-known/host-meta')
Then The page must resolve at port 80 or 443 # None
And If both port 80 _and_ 443 work, then they SHOULD return same document # None
And The document SHOULD be served with "application/xrd+xml" media type # None
And The document's root MUST be an "XRD" element # None
And The document SHOULD NOT include elements of type "Subject" # None
And The document SHOULD include elements of type "Link" # None
And The "Link" elements should include either "template" or "href" attributes # None
And The document should have at least one 'lrdd' document # None
And Fediverse specific: The lrdd document must include template containing WebFinger well-known URI # None
sharkey
Feature: FEP-2677: Identifying the Application Actor # features/fediverse-features/feps/fep-2677.feature:1
Current draft: https://codeberg.org/fediverse/fep/src/branch/main/fep/2677/fep-2677.md
Scenario: Application Actor is identified # features/fediverse-features/feps/fep-2677.feature:4
Given a Fediverse server # features/steps/nodeinfo.py:15
When querying /.well-known/nodeinfo # features/steps/nodeinfo.py:23
Then The links contain one of type "https://www.w3.org/ns/activitystreams#Application" # features/steps/nodeinfo.py:38
Traceback (most recent call last):
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/model.py", line 1329, in run
match.run(runner.context)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/matchers.py", line 98, in run
self.func(context, *args, **kwargs)
File "features/steps/nodeinfo.py", line 45, in contains_rel
assert context.link
AssertionError
And This page can be resolved # None
And The result is an application actor # None
Feature: Nodeinfo # features/fediverse-features/fedi/node_info.feature:1
Information on nodeinfo is available in
FEP-f165: https://codeberg.org/fediverse/fep/src/branch/main/fep/f1d5/fep-f1d5.md
@nodeinfo-2-0
Scenario: # features/fediverse-features/fedi/node_info.feature:6
Given A Fediverse server # features/steps/nodeinfo.py:15
When Querying /.well-known/nodeinfo # features/steps/nodeinfo.py:23
Then The links contain one of type "http://nodeinfo.diaspora.software/ns/schema/2.0" # features/steps/nodeinfo.py:38
And This page can be resolved # features/steps/nodeinfo.py:48
And The body of this page obeys the schema given by "http://nodeinfo.diaspora.software/ns/schema/2.0" # features/steps/nodeinfo.py:65
Traceback (most recent call last):
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/model.py", line 1329, in run
match.run(runner.context)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/matchers.py", line 98, in run
self.func(context, *args, **kwargs)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/api/async_step.py", line 157, in wrapped_decorator
return step_decorator(astep_func, context, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/api/async_step.py", line 124, in step_decorator
loop.run_until_complete(astep_func(context, *args, **kwargs))
File "/usr/local/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "features/steps/nodeinfo.py", line 74, in validate
jsonschema.validate(context.page_body, schema)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/jsonschema/validators.py", line 1308, in validate
raise error
jsonschema.exceptions.ValidationError: Additional properties are not allowed ('homepage' was unexpected)
Failed validating 'additionalProperties' in schema['properties']['software']:
{'additionalProperties': False,
'description': 'Metadata about server software in use.',
'properties': {'name': {'description': 'The canonical name of this '
'server software.',
'pattern': '^[a-z0-9-]+$',
'type': 'string'},
'version': {'description': 'The version of this server '
'software.',
'type': 'string'}},
'required': ['name', 'version'],
'type': 'object'}
On instance['software']:
{'homepage': 'https://github.com/transfem-org/sharkey',
'name': 'sharkey',
'version': '2024.1.0.beta2'}
Feature: Host Meta # features/fediverse-features/ietf/host_meta.feature:7
As defined in https://www.rfc-editor.org/rfc/rfc6415.html
Scenario: # features/fediverse-features/ietf/host_meta.feature:10
Given A Fediverse server # features/steps/nodeinfo.py:15
When Querying /.well-known/host-meta # features/steps/nodeinfo.py:23
Then The page must resolve at port 80 or 443 # features/steps/ietf.py:9
And If both port 80 _and_ 443 work, then they SHOULD return same document # features/steps/ietf.py:14
And The document SHOULD be served with "application/xrd+xml" media type # features/steps/ietf.py:19
And The document's root MUST be an "XRD" element # features/steps/ietf.py:26
And The document SHOULD NOT include elements of type "Subject" # features/steps/ietf.py:32
And The document SHOULD include elements of type "Link" # features/steps/ietf.py:32
And The "Link" elements should include either "template" or "href" attributes # features/steps/ietf.py:46
And The document should have at least one 'lrdd' document # features/steps/ietf.py:67
And Fediverse specific: The lrdd document must include template containing WebFinger well-known URI # features/steps/ietf.py:77
wordpress
Feature: FEP-2677: Identifying the Application Actor # features/fediverse-features/feps/fep-2677.feature:1
Current draft: https://codeberg.org/fediverse/fep/src/branch/main/fep/2677/fep-2677.md
Scenario: Application Actor is identified # features/fediverse-features/feps/fep-2677.feature:4
Given a Fediverse server # features/steps/nodeinfo.py:15
When querying /.well-known/nodeinfo # features/steps/nodeinfo.py:23
Then The links contain one of type "https://www.w3.org/ns/activitystreams#Application" # features/steps/nodeinfo.py:38
And This page can be resolved # features/steps/nodeinfo.py:48
And The result is an application actor # features/steps/nodeinfo.py:60
Traceback (most recent call last):
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/model.py", line 1329, in run
match.run(runner.context)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/matchers.py", line 98, in run
self.func(context, *args, **kwargs)
File "features/steps/nodeinfo.py", line 62, in check_application_actor
assert context.page_body["type"] == "Application"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError
Feature: Nodeinfo # features/fediverse-features/fedi/node_info.feature:1
Information on nodeinfo is available in
FEP-f165: https://codeberg.org/fediverse/fep/src/branch/main/fep/f1d5/fep-f1d5.md
@nodeinfo-2-0
Scenario: # features/fediverse-features/fedi/node_info.feature:6
Given A Fediverse server # features/steps/nodeinfo.py:15
When Querying /.well-known/nodeinfo # features/steps/nodeinfo.py:23
Then The links contain one of type "http://nodeinfo.diaspora.software/ns/schema/2.0" # features/steps/nodeinfo.py:38
And This page can be resolved # features/steps/nodeinfo.py:48
And The body of this page obeys the schema given by "http://nodeinfo.diaspora.software/ns/schema/2.0" # features/steps/nodeinfo.py:65
Traceback (most recent call last):
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/model.py", line 1329, in run
match.run(runner.context)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/matchers.py", line 98, in run
self.func(context, *args, **kwargs)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/api/async_step.py", line 157, in wrapped_decorator
return step_decorator(astep_func, context, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/api/async_step.py", line 124, in step_decorator
loop.run_until_complete(astep_func(context, *args, **kwargs))
File "/usr/local/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "features/steps/nodeinfo.py", line 74, in validate
jsonschema.validate(context.page_body, schema)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/jsonschema/validators.py", line 1308, in validate
raise error
jsonschema.exceptions.ValidationError: 'webmention' is not one of ['activitypub', 'buddycloud', 'dfrn', 'diaspora', 'libertree', 'ostatus', 'pumpio', 'tent', 'xmpp', 'zot']
Failed validating 'enum' in schema['properties']['protocols']['items']:
{'enum': ['activitypub',
'buddycloud',
'dfrn',
'diaspora',
'libertree',
'ostatus',
'pumpio',
'tent',
'xmpp',
'zot']}
On instance['protocols'][1]:
'webmention'
Feature: Host Meta # features/fediverse-features/ietf/host_meta.feature:7
As defined in https://www.rfc-editor.org/rfc/rfc6415.html
Scenario: # features/fediverse-features/ietf/host_meta.feature:10
Given A Fediverse server # features/steps/nodeinfo.py:15
When Querying /.well-known/host-meta # features/steps/nodeinfo.py:23
Then The page must resolve at port 80 or 443 # features/steps/ietf.py:9
And If both port 80 _and_ 443 work, then they SHOULD return same document # features/steps/ietf.py:14
And The document SHOULD be served with "application/xrd+xml" media type # features/steps/ietf.py:19
And The document's root MUST be an "XRD" element # features/steps/ietf.py:26
And The document SHOULD NOT include elements of type "Subject" # features/steps/ietf.py:32
Traceback (most recent call last):
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/model.py", line 1329, in run
match.run(runner.context)
File "/woodpecker/src/codeberg.org/helge/fediverse-features-tests/venv/lib/python3.11/site-packages/behave/matchers.py", line 98, in run
self.func(context, *args, **kwargs)
File "features/steps/ietf.py", line 40, in element_types
raise ValueError(f"Contains elements of type {element_type}")
ValueError: Contains elements of type Subject
And The document SHOULD include elements of type "Link" # None
And The "Link" elements should include either "template" or "href" attributes # None
And The document should have at least one 'lrdd' document # None
And Fediverse specific: The lrdd document must include template containing WebFinger well-known URI # None