test_usuario.py 2.18 KB
import pytest
from django.contrib.auth import get_user_model

from core.tests.fixtures import create_user, CONTENT_TYPE_JSON
from core.tests.utils import post, get, JSON_CONTENT_TYPE, patch


@pytest.mark.django_db
def test_usuario_cambio_password_satisfactoriamente():
    usuario_autenticado = create_user(username='mbarrera')
    usuario_autenticado.set_password('ultima_contraseña')

    data = {
        "clave": "ultima_contraseña",
        "clave_nueva": "nueva_contraseña",
        "clave_nueva_2": "nueva_contraseña"
    }

    endpoint = "/api/v1/usuario/cambiar-clave-secreta/"
    response = patch(endpoint, data=data, content_type=CONTENT_TYPE_JSON, user_logged=usuario_autenticado)

    assert response.status_code == 200

    debianitram = get_user_model().objects.get(username='mbarrera')
    assert debianitram.check_password('nueva_contraseña')


@pytest.mark.django_db
def test_usuario_cambio_password_falla_con_clave():
    usuario_autenticado = create_user(username='mbarrera')
    usuario_autenticado.set_password('ultima_contraseña')

    data = {
        "clave": "ultima.-.",
        "clave_nueva": "nueva_contraseña",
        "clave_nueva_2": "nueva_contraseña"
    }

    endpoint = "/api/v1/usuario/cambiar-clave-secreta/"
    response = patch(endpoint, data=data, content_type=CONTENT_TYPE_JSON, user_logged=usuario_autenticado)

    assert response.status_code == 400
    errors = response.json()['errors']
    assert errors[0]['detail'] == 'La contraseña anterior no es válida. ¡Intentalo nuevamente!'


@pytest.mark.django_db
def test_usuario_cambio_password_falla_no_coinciden_nuevas_password():
    usuario_autenticado = create_user(username='mbarrera')
    usuario_autenticado.set_password('ultima_contraseña')

    data = {
        "clave": "ultima_contraseña",
        "clave_nueva": "NuevaContraseña",
        "clave_nueva_2": "nueva_contraseña"
    }

    endpoint = "/api/v1/usuario/cambiar-clave-secreta/"
    response = patch(endpoint, data=data, content_type=CONTENT_TYPE_JSON, user_logged=usuario_autenticado)

    assert response.status_code == 400
    errors = response.json()['errors']
    assert errors[0]['detail'] == 'Los nuevos campos de contraseñas no coinciden'