36 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
import pytest
 | 
						|
 | 
						|
from funkwhale_api.federation import routes
 | 
						|
from funkwhale_api.users import tasks
 | 
						|
 | 
						|
 | 
						|
def test_delete_account(factories, mocker):
 | 
						|
    user = factories["users.User"]()
 | 
						|
    actor = user.create_actor()
 | 
						|
    factories["federation.Follow"](target=actor, approved=True)
 | 
						|
    library = factories["music.Library"](actor=actor)
 | 
						|
    unrelated_library = factories["music.Library"]()
 | 
						|
    dispatch = mocker.spy(routes.outbox, "dispatch")
 | 
						|
 | 
						|
    tasks.delete_account(user_id=user.pk)
 | 
						|
 | 
						|
    dispatch.assert_called_once_with(
 | 
						|
        {"type": "Delete", "object": {"type": actor.type}}, context={"actor": actor}
 | 
						|
    )
 | 
						|
 | 
						|
    with pytest.raises(user.DoesNotExist):
 | 
						|
        user.refresh_from_db()
 | 
						|
 | 
						|
    with pytest.raises(library.DoesNotExist):
 | 
						|
        library.refresh_from_db()
 | 
						|
 | 
						|
    # this one shouldn't be deleted
 | 
						|
    unrelated_library.refresh_from_db()
 | 
						|
    actor.refresh_from_db()
 | 
						|
 | 
						|
    assert actor.type == "Tombstone"
 | 
						|
    assert actor.name is None
 | 
						|
    assert actor.summary is None
 | 
						|
    # this activity shouldn't be deleted
 | 
						|
    assert actor.outbox_activities.filter(type="Delete").count() == 1
 |