diff --git a/models.py b/models.py index 07c0142..0295585 100644 --- a/models.py +++ b/models.py @@ -324,6 +324,8 @@ class User(StringIdModel, metaclass=ProtocolUserMeta): # override web users to always use domain instead of custom username handle = self.key.id() if self.LABEL == 'web' else self.handle + if not handle: + return None return ids.translate_handle(handle=handle, from_proto=self.__class__, to_proto=to_proto) diff --git a/tests/test_models.py b/tests/test_models.py index 9032705..5f96466 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -166,6 +166,15 @@ class UserTest(TestCase): self.assertEqual('alice', self.user.username()) self.assertEqual('@y.z@web.brid.gy', self.user.handle_as('ap')) + def test_handle_as_None(self): + class NoHandle(Fake): + @ndb.ComputedProperty + def handle(self): + return None + + user = NoHandle() + self.assertIsNone(user.handle_as(OtherFake)) + @patch('requests.get', return_value=requests_response(DID_DOC)) def test_ap_actor(self, mock_get): user = self.make_user('did:plc:abc', cls=ATProto)