mirror of
https://github.com/nikdoof/simple-webfinger.git
synced 2025-12-13 10:22:15 +00:00
Fix rel filtering (resolves #4)
This commit is contained in:
@@ -48,12 +48,10 @@ def get_account_links(user: str, data: dict) -> list:
|
||||
return links
|
||||
|
||||
|
||||
def filter_links(links: dict[str, str], rel: str) -> list:
|
||||
def filter_links(links: dict[str, str], rel: list[str]) -> list:
|
||||
"""
|
||||
Filter links by rel provided.
|
||||
"""
|
||||
if isinstance(rel, str):
|
||||
rel = [rel]
|
||||
new_links = []
|
||||
for link in links:
|
||||
if link["rel"] in rel:
|
||||
@@ -105,7 +103,8 @@ def create_app(config={}):
|
||||
|
||||
# If we have a 'rel' value on the request, filter down to the requested rel
|
||||
# https://datatracker.ietf.org/doc/html/rfc7033#section-4.3
|
||||
rel = request.args.get("rel")
|
||||
print(request.args)
|
||||
rel = request.args.getlist("rel")
|
||||
if rel:
|
||||
links = filter_links(links, rel)
|
||||
|
||||
|
||||
@@ -44,3 +44,31 @@ def test_invalid_user_request(app, client):
|
||||
"""
|
||||
response = client.get("/.well-known/webfinger?resource=nikdoof@doofnet.uk")
|
||||
assert response.status_code == 404
|
||||
|
||||
def test_rel_filtering(client):
|
||||
"""
|
||||
Check that filtering links by rel work correctly
|
||||
"""
|
||||
response = client.get("/.well-known/webfinger?resource=acct:nikdoof@doofnet.uk&rel=self")
|
||||
assert response.status_code == 200
|
||||
|
||||
assert len(response.json['links'])
|
||||
for link in response.json['links']:
|
||||
assert link['rel'] == 'self'
|
||||
|
||||
def test_multiple_rel_filtering(client):
|
||||
"""
|
||||
Check that filtering links by mulitple rel work correctly
|
||||
"""
|
||||
rels = ['self', 'http://webfinger.net/rel/profile-page']
|
||||
params = {
|
||||
'resource': 'acct:nikdoof@doofnet.uk',
|
||||
'rel': rels,
|
||||
}
|
||||
|
||||
response = client.get("/.well-known/webfinger", query_string=params)
|
||||
assert response.status_code == 200
|
||||
|
||||
assert len(response.json['links']) > 1
|
||||
for link in response.json['links']:
|
||||
assert link['rel'] in rels
|
||||
|
||||
Reference in New Issue
Block a user