import aputils import unittest from . import scriptpath class ObjectsTest(unittest.TestCase): def test_hostmeta(self): output = aputils.HostMeta.new('social.example.com') data = f''' ''' self.assertEqual(output, data) def test_hostmeta_json(self): output = aputils.HostMetaJson.new('social.example.com') data = {'links': [{'rel': 'lrdd', 'template': f'https://social.example.com/.well-known/webfinger?resource={{uri}}'}]} self.assertEqual(output, data) def test_nodeinfo_20(self): output = aputils.Nodeinfo.new( name = 'ap-software', version = '1.0.2', protocols = ['activitypub'], metadata = {'peers': ['social2.barkshark.xyz']}, open_regs = True, users = 5, halfyear = 5, month = 2, posts = 69, comments = 420 ) data = { 'version': '2.0', 'software': { 'name': 'ap-software', 'version': '1.0.2' }, 'protocols': [ aputils.NodeinfoProtocol.ACTIVITYPUB ], 'services': { 'inbound': [], 'outbound': [] }, 'openRegistrations': True, 'usage': { 'localPosts': 69, 'localComments': 420, 'users': { 'total': 5, 'activeHalfyear': 5, 'activeMonth': 2 } }, 'metadata': { 'peers': [ 'social2.barkshark.xyz' ] } } self.assertEqual(output['version'], '2.0') self.assertEqual(output, data) def test_nodeinfo_21(self): output = aputils.Nodeinfo.new( name = 'ap-software', version = '1.0.2', protocols = ['activitypub'], metadata = {'peers': ['social2.barkshark.xyz']}, open_regs = True, users = 5, halfyear = 5, month = 2, posts = 69, comments = 420, repo = 'https://git.example.com/example/ap-software', homepage = 'https://social.example.com' ) data = { 'version': '2.1', 'software': { 'name': 'ap-software', 'version': '1.0.2', 'repository': 'https://git.example.com/example/ap-software', 'homepage': 'https://social.example.com' }, 'protocols': [ aputils.NodeinfoProtocol.ACTIVITYPUB ], 'services': { 'inbound': [], 'outbound': [] }, 'openRegistrations': True, 'usage': { 'localPosts': 69, 'localComments': 420, 'users': { 'total': 5, 'activeHalfyear': 5, 'activeMonth': 2 } }, 'metadata': { 'peers': [ 'social2.barkshark.xyz' ] } } self.assertEqual(output['version'], '2.1') self.assertEqual(output, data) def test_webfinger_full(self): output = aputils.Webfinger.new( handle = 'merpinator', domain = 'social.example.com', actor = 'https://social.example.com/users/merpinator', profile = 'https://social.example.com/@merpinator', interaction = 'https://social.example.com/authorize_interaction?uri={uri}' ) data = { 'subject': 'acct:merpinator@social.example.com', 'aliases': [ 'https://social.example.com/users/merpinator', 'https://social.example.com/@merpinator' ], 'links': [ { 'rel': 'self', 'type': 'application/activity+json', 'href': 'https://social.example.com/users/merpinator' }, { 'rel': 'http://webfinger.net/rel/profile-page', 'type': 'text/html', 'href': 'https://social.example.com/@merpinator' }, { 'rel': 'http://ostatus.org/schema/1.0/subscribe', 'template': 'https://social.example.com/authorize_interaction?uri={uri}' } ] } self.assertEqual(output.handle, 'merpinator') self.assertEqual(output.domain, 'social.example.com') self.assertEqual(output.actor, 'https://social.example.com/users/merpinator') self.assertEqual(output.profile, 'https://social.example.com/@merpinator') self.assertEqual(output.interaction, 'https://social.example.com/authorize_interaction?uri={uri}') self.assertEqual(output, data) def test_webfinger_profile(self): output = aputils.Webfinger.new( handle = 'merpinator', domain = 'social.example.com', actor = 'https://social.example.com/users/merpinator', profile = 'https://social.example.com/@merpinator' ) data = { 'subject': 'acct:merpinator@social.example.com', 'aliases': [ 'https://social.example.com/users/merpinator', 'https://social.example.com/@merpinator' ], 'links': [ { 'rel': 'self', 'type': 'application/activity+json', 'href': 'https://social.example.com/users/merpinator' }, { 'rel': 'http://webfinger.net/rel/profile-page', 'type': 'text/html', 'href': 'https://social.example.com/@merpinator' } ] } self.assertEqual(output, data) def test_webfinger_actor(self): output = aputils.Webfinger.new( handle = 'merpinator', domain = 'social.example.com', actor = 'https://social.example.com/users/merpinator' ) data = { 'subject': 'acct:merpinator@social.example.com', 'aliases': [ 'https://social.example.com/users/merpinator' ], 'links': [ { 'rel': 'self', 'type': 'application/activity+json', 'href': 'https://social.example.com/users/merpinator' } ] } self.assertEqual(output, data) def test_wellknown_nodeinfo(self): output = aputils.WellKnownNodeinfo.new_template( domain = 'social.example.com', path = '/nodeinfo', v21 = True, v20 = True ) data = { 'links': [ { 'rel': 'http://nodeinfo.diaspora.software/ns/schema/2.0', 'href': 'https://social.example.com/nodeinfo/2.0.json' }, { 'rel': 'http://nodeinfo.diaspora.software/ns/schema/2.1', 'href': 'https://social.example.com/nodeinfo/2.1.json' } ] } self.assertEqual(output.v20, 'https://social.example.com/nodeinfo/2.0.json') self.assertEqual(output.v21, 'https://social.example.com/nodeinfo/2.1.json') self.assertEqual(output, data)