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 from oauth_dropins.webutil.testutil import requests_response
# import first so that Fake is defined before URL routes are registered # 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 from models import PROTOCOLS
import protocol import protocol
@ -296,6 +296,17 @@ class WebfingerTest(TestCase):
got = self.client.get(f'/.well-known/webfinger?resource=acct:user.com@user.com') got = self.client.get(f'/.well-known/webfinger?resource=acct:user.com@user.com')
self.assertEqual(404, got.status_code) 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): def test_bad_id(self):
got = self.client.get(f'/.well-known/webfinger?resource=acct:nope@fa.brid.gy') 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)) 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: if user and not user.direct:
error(f"{user.key} hasn't signed up yet", status=404) 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) error(f'No {cls.LABEL} user found for {id}', status=404)
ap_handle = user.handle_as('activitypub') ap_handle = user.handle_as('activitypub')