funkwhale/api/tests/federation/test_webfinger.py

71 wiersze
2.0 KiB
Python
Czysty Zwykły widok Historia

2018-03-28 22:00:20 +00:00
import pytest
from django import forms
from funkwhale_api.federation import webfinger
def test_webfinger_clean_resource():
2018-06-09 13:36:16 +00:00
t, r = webfinger.clean_resource("acct:service@test.federation")
assert t == "acct"
assert r == "service@test.federation"
@pytest.mark.parametrize(
"resource,message",
[
("", "Invalid resource string"),
("service@test.com", "Missing webfinger resource type"),
("noop:service@test.com", "Invalid webfinger resource type"),
],
)
2018-03-28 22:00:20 +00:00
def test_webfinger_clean_resource_errors(resource, message):
with pytest.raises(forms.ValidationError) as excinfo:
webfinger.clean_resource(resource)
assert message == str(excinfo)
def test_webfinger_clean_acct(settings):
2018-06-09 13:36:16 +00:00
username, hostname = webfinger.clean_acct("library@test.federation")
assert username == "library"
assert hostname == "test.federation"
@pytest.mark.parametrize(
"resource,message",
[
("service", "Invalid format"),
("service@test.com", "Invalid hostname test.com"),
("noop@test.federation", "Invalid account"),
],
)
2018-03-28 22:00:20 +00:00
def test_webfinger_clean_acct_errors(resource, message, settings):
with pytest.raises(forms.ValidationError) as excinfo:
webfinger.clean_resource(resource)
assert message == str(excinfo)
2018-04-08 08:42:10 +00:00
def test_webfinger_get_resource(r_mock):
2018-06-09 13:36:16 +00:00
resource = "acct:test@test.webfinger"
2018-04-08 08:42:10 +00:00
payload = {
2018-06-09 13:36:16 +00:00
"subject": resource,
"aliases": ["https://test.webfinger"],
"links": [
2018-04-08 08:42:10 +00:00
{
2018-06-09 13:36:16 +00:00
"rel": "self",
"type": "application/activity+json",
"href": "https://test.webfinger/user/test",
2018-04-08 08:42:10 +00:00
}
2018-06-09 13:36:16 +00:00
],
2018-04-08 08:42:10 +00:00
}
r_mock.get(
2018-06-09 13:36:16 +00:00
"https://test.webfinger/.well-known/webfinger?resource={}".format(resource),
json=payload,
2018-04-08 08:42:10 +00:00
)
2018-06-09 13:36:16 +00:00
data = webfinger.get_resource("acct:test@test.webfinger")
2018-04-08 08:42:10 +00:00
2018-06-09 13:36:16 +00:00
assert data["actor_url"] == "https://test.webfinger/user/test"
assert data["subject"] == resource