Use dataclasses to define activitypub (de)serialization (#177)
* Use dataclasses to define activitypub (de)serialization
This commit is contained in:
parent
2c0a07a330
commit
8bbf1fe252
46 changed files with 1449 additions and 1228 deletions
|
@ -1,6 +1,6 @@
|
|||
from django.test import TestCase
|
||||
import json
|
||||
import pathlib
|
||||
from django.test import TestCase
|
||||
|
||||
from fedireads import models, remote_user
|
||||
|
||||
|
@ -9,29 +9,62 @@ class RemoteUser(TestCase):
|
|||
''' not too much going on in the books model but here we are '''
|
||||
def setUp(self):
|
||||
self.remote_user = models.User.objects.create_user(
|
||||
'mouse', 'mouse@mouse.com', 'mouseword',
|
||||
'rat', 'rat@rat.com', 'ratword',
|
||||
local=False,
|
||||
remote_id='https://example.com/users/mouse',
|
||||
inbox='https://example.com/users/mouse/inbox',
|
||||
outbox='https://example.com/users/mouse/outbox',
|
||||
remote_id='https://example.com/users/rat',
|
||||
inbox='https://example.com/users/rat/inbox',
|
||||
outbox='https://example.com/users/rat/outbox',
|
||||
)
|
||||
datafile = pathlib.Path(__file__).parent.joinpath(
|
||||
'data/ap_user.json'
|
||||
)
|
||||
self.user_data = json.loads(datafile.read_bytes())
|
||||
|
||||
|
||||
|
||||
def test_get_remote_user(self):
|
||||
actor = 'https://example.com/users/mouse'
|
||||
actor = 'https://example.com/users/rat'
|
||||
user = remote_user.get_or_create_remote_user(actor)
|
||||
self.assertEqual(user, self.remote_user)
|
||||
|
||||
|
||||
def test_create_remote_user(self):
|
||||
datafile = pathlib.Path(__file__).parent.joinpath('data/ap_user.json')
|
||||
data = json.loads(datafile.read_bytes())
|
||||
user = remote_user.create_remote_user(data)
|
||||
user = remote_user.create_remote_user(self.user_data)
|
||||
self.assertFalse(user.local)
|
||||
self.assertEqual(user.remote_id, 'https://example.com/user/mouse')
|
||||
self.assertEqual(user.username, 'mouse@example.com')
|
||||
self.assertEqual(user.name, 'MOUSE?? MOUSE!!')
|
||||
self.assertEqual(user.inbox, 'https://example.com/user/mouse/inbox')
|
||||
self.assertEqual(user.outbox, 'https://example.com/user/mouse/outbox')
|
||||
self.assertEqual(user.shared_inbox, 'https://example.com/inbox')
|
||||
self.assertEqual(user.public_key, data['publicKey']['publicKeyPem'])
|
||||
self.assertEqual(
|
||||
user.public_key,
|
||||
self.user_data['publicKey']['publicKeyPem']
|
||||
)
|
||||
self.assertEqual(user.local, False)
|
||||
self.assertEqual(user.fedireads_user, True)
|
||||
self.assertEqual(user.manually_approves_followers, False)
|
||||
|
||||
|
||||
def test_create_remote_user_missing_inbox(self):
|
||||
del self.user_data['inbox']
|
||||
self.assertRaises(
|
||||
TypeError,
|
||||
remote_user.create_remote_user,
|
||||
self.user_data
|
||||
)
|
||||
|
||||
|
||||
def test_create_remote_user_missing_outbox(self):
|
||||
del self.user_data['outbox']
|
||||
self.assertRaises(
|
||||
TypeError,
|
||||
remote_user.create_remote_user,
|
||||
self.user_data
|
||||
)
|
||||
|
||||
|
||||
def test_create_remote_user_default_fields(self):
|
||||
del self.user_data['manuallyApprovesFollowers']
|
||||
user = remote_user.create_remote_user(self.user_data)
|
||||
self.assertEqual(user.manually_approves_followers, False)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue