65 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
| from funkwhale_api.federation import actors, serializers
 | |
| 
 | |
| 
 | |
| def test_actor_fetching(r_mock):
 | |
|     payload = {
 | |
|         "id": "https://actor.mock/users/actor#main-key",
 | |
|         "owner": "test",
 | |
|         "publicKeyPem": "test_pem",
 | |
|     }
 | |
|     actor_url = "https://actor.mock/"
 | |
|     r_mock.get(actor_url, json=payload)
 | |
|     r = actors.get_actor_data(actor_url)
 | |
| 
 | |
|     assert r == payload
 | |
| 
 | |
| 
 | |
| def test_get_actor(factories, r_mock, mocker):
 | |
|     update_domain_nodeinfo = mocker.patch(
 | |
|         "funkwhale_api.federation.tasks.update_domain_nodeinfo"
 | |
|     )
 | |
|     actor = factories["federation.Actor"].build()
 | |
|     payload = serializers.ActorSerializer(actor).data
 | |
|     r_mock.get(actor.fid, json=payload)
 | |
|     new_actor = actors.get_actor(actor.fid)
 | |
| 
 | |
|     assert new_actor.pk is not None
 | |
|     assert serializers.ActorSerializer(new_actor).data == payload
 | |
|     update_domain_nodeinfo.assert_called_once_with(domain_name=new_actor.domain_id)
 | |
| 
 | |
| 
 | |
| def test_get_actor_use_existing(factories, preferences, mocker):
 | |
|     preferences["federation__actor_fetch_delay"] = 60
 | |
|     actor = factories["federation.Actor"]()
 | |
|     get_data = mocker.patch("funkwhale_api.federation.actors.get_actor_data")
 | |
|     new_actor = actors.get_actor(actor.fid)
 | |
| 
 | |
|     assert new_actor == actor
 | |
|     get_data.assert_not_called()
 | |
| 
 | |
| 
 | |
| def test_get_actor_refresh(factories, preferences, mocker):
 | |
|     preferences["federation__actor_fetch_delay"] = 0
 | |
|     actor = factories["federation.Actor"]()
 | |
|     payload = serializers.ActorSerializer(actor).data
 | |
|     # actor changed their username in the meantime
 | |
|     payload["preferredUsername"] = "New me"
 | |
|     mocker.patch("funkwhale_api.federation.actors.get_actor_data", return_value=payload)
 | |
|     new_actor = actors.get_actor(actor.fid)
 | |
| 
 | |
|     assert new_actor == actor
 | |
|     assert new_actor.last_fetch_date > actor.last_fetch_date
 | |
|     assert new_actor.preferred_username == "New me"
 | |
| 
 | |
| 
 | |
| def test_get_service_actor(db, settings):
 | |
|     settings.FEDERATION_HOSTNAME = "test.hello"
 | |
|     settings.FEDERATION_SERVICE_ACTOR_USERNAME = "bob"
 | |
|     actor = actors.get_service_actor()
 | |
| 
 | |
|     assert actor.preferred_username == "bob"
 | |
|     assert actor.domain.name == "test.hello"
 | |
|     assert actor.private_key is not None
 | |
|     assert actor.type == "Service"
 | |
|     assert actor.public_key is not None
 |