funkwhale/api/tests/users/test_mutations.py

34 wiersze
1.3 KiB
Python

from funkwhale_api.users import tasks
def test_delete_account_mutation(mocker, factories, now):
user = factories["users.User"](subsonic_api_token="test", password="test")
actor = user.create_actor()
on_commit = mocker.patch("funkwhale_api.common.utils.on_commit")
secret_key = user.secret_key
set_unusable_password = mocker.spy(user, "set_unusable_password")
factories["users.Grant"](user=user)
factories["users.AccessToken"](user=user)
factories["users.RefreshToken"](user=user)
mutation = factories["common.Mutation"](
type="delete_account", target=actor, payload={}
)
mutation.apply()
user.refresh_from_db()
set_unusable_password.assert_called_once_with()
assert user.has_usable_password() is False
assert user.subsonic_api_token is None
assert user.secret_key is not None and user.secret_key != secret_key
assert user.users_grant.count() == 0
assert user.users_refreshtoken.count() == 0
assert user.users_accesstoken.count() == 0
on_commit.assert_called_once_with(tasks.delete_account.delay, user_id=user.pk)
assert mutation.previous_state == {
"actor": {"preferred_username": actor.preferred_username},
"user": {"username": user.username, "id": user.pk},
}