50 lines
1.9 KiB
Python
50 lines
1.9 KiB
Python
from funkwhale_api.federation import keys
|
|
from funkwhale_api.federation import jsonld
|
|
from funkwhale_api.federation import serializers
|
|
|
|
|
|
def test_actor_serializer_from_ap(db):
|
|
private, public = keys.get_key_pair()
|
|
actor_url = "https://test.federation/actor"
|
|
payload = {
|
|
"@context": jsonld.get_default_context(),
|
|
"id": actor_url,
|
|
"type": "Person",
|
|
"outbox": "https://test.com/outbox",
|
|
"inbox": "https://test.com/inbox",
|
|
"following": "https://test.com/following",
|
|
"followers": "https://test.com/followers",
|
|
"preferredUsername": "test",
|
|
"name": "Test",
|
|
"summary": "Hello world",
|
|
"manuallyApprovesFollowers": True,
|
|
"publicKey": {
|
|
"publicKeyPem": public.decode("utf-8"),
|
|
"owner": actor_url,
|
|
"id": actor_url + "#main-key",
|
|
},
|
|
"endpoints": {"sharedInbox": "https://noop.url/federation/shared/inbox"},
|
|
}
|
|
|
|
serializer = serializers.ActorSerializer(data=payload)
|
|
assert serializer.is_valid(raise_exception=True)
|
|
actor = serializer.save()
|
|
|
|
assert actor.fid == actor_url
|
|
assert actor.url is None
|
|
assert actor.inbox_url == payload["inbox"]
|
|
assert actor.shared_inbox_url == payload["endpoints"]["sharedInbox"]
|
|
assert actor.outbox_url == payload["outbox"]
|
|
assert actor.following_url == payload["following"]
|
|
assert actor.followers_url == payload["followers"]
|
|
assert actor.followers_url == payload["followers"]
|
|
assert actor.type == "Person"
|
|
assert actor.preferred_username == payload["preferredUsername"]
|
|
assert actor.name == payload["name"]
|
|
assert actor.summary == payload["summary"]
|
|
assert actor.fid == actor_url
|
|
assert actor.manually_approves_followers is True
|
|
assert actor.private_key is None
|
|
assert actor.public_key == payload["publicKey"]["publicKeyPem"]
|
|
assert actor.domain_id == "test.federation"
|