webfinger: check that AP protocol is enabled

pull/968/head
Ryan Barrett 2024-04-23 15:31:24 -07:00
rodzic ce23a72549
commit 9fe715137a
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 6BE31FDF4776E9D4
2 zmienionych plików z 13 dodań i 2 usunięć

Wyświetl plik

@ -8,7 +8,7 @@ from oauth_dropins.webutil import util
from oauth_dropins.webutil.testutil import requests_response
# import first so that Fake is defined before URL routes are registered
from .testutil import Fake, TestCase
from .testutil import ExplicitEnableFake, Fake, TestCase
from models import PROTOCOLS
import protocol
@ -296,6 +296,17 @@ class WebfingerTest(TestCase):
got = self.client.get(f'/.well-known/webfinger?resource=acct:user.com@user.com')
self.assertEqual(404, got.status_code)
def test_protocol_not_enabled(self):
self.make_user('eefake:user', cls=ExplicitEnableFake)
got = self.client.get(f'/.well-known/webfinger?resource=acct:eefake:user@eefake.brid.gy')
self.assertEqual(404, got.status_code)
def test_protocol_enabled(self):
self.make_user('eefake:user', cls=ExplicitEnableFake,
enabled_protocols=['activitypub'])
got = self.client.get(f'/.well-known/webfinger?resource=acct:eefake:user@eefake.brid.gy')
self.assertEqual(200, got.status_code)
def test_bad_id(self):
got = self.client.get(f'/.well-known/webfinger?resource=acct:nope@fa.brid.gy')
self.assertEqual(400, got.status_code, got.get_data(as_text=True))

Wyświetl plik

@ -90,7 +90,7 @@ class Webfinger(flask_util.XrdOrJrd):
if user and not user.direct:
error(f"{user.key} hasn't signed up yet", status=404)
if not user:
if not user or not user.is_enabled_to(activitypub.ActivityPub, user=user):
error(f'No {cls.LABEL} user found for {id}', status=404)
ap_handle = user.handle_as('activitypub')