예제 #1
0
def test_profile_modify_correct(client):

    c = client
    c.get("/clients")

    # Cogemos un cliente random de la base de datos.
    client_old = ClientModel.query.filter(ClientModel.client_id == 1).first()

    # Nos inventamos datos
    new_email = "*****@*****.**"
    new_dni_nie = "000000000000"
    new_name = "Inventado"
    new_iban = "0000000000000000000000"

    # Nos aseguramos de que no exista ese email en la base de datos
    assert ClientModel.find_by_email(new_email) is None

    # Nos aseguramos de que no exista ese dni en la base de datos
    assert ClientModel.find_by_dni(new_dni_nie) is None

    # Hacemos el put con datos inventados
    path = '/profile/' + client_old.email
    params = {
        'name': new_name,
        'iban': new_iban,
        'dni_nie': new_dni_nie,
        'email': new_email
    }
    r = c.put(path, json=params)

    assert r.status_code == 200

    # Antes de nada comprobamos si realmente se han modificado el email o el dni
    assert ClientModel.find_by_email(new_email) is not None

    assert ClientModel.find_by_dni(new_dni_nie) is not None

    # Ahora comprobaremos los otros datos
    new_client = ClientModel.find_by_email(new_email)

    assert new_client.nombre == new_name
    assert new_client.iban == new_iban
    assert new_client.dni_nie == new_dni_nie
    assert new_client.email == new_email
예제 #2
0
    def put(self, email):
        parser = reqparse.RequestParser()
        parser.add_argument('name', type=str, required=False)
        parser.add_argument('iban', type=str, required=False)
        parser.add_argument('dni_nie', type=str, required=False)
        parser.add_argument('email', type=str, required=False)
        data = parser.parse_args()

        try:
            client = ClientModel.find_by_email(email)
            if client is not None:
                if data['name']:
                    client.set_name(data['name'])
                if data['iban']:
                    client.set_iban(data['iban'])
                if data['dni_nie']:
                    if ClientModel.find_by_dni(data['dni_nie']) is None:
                        client.set_dni_nie(data['dni_nie'])
                    else:
                        if ClientModel.find_by_dni(data['dni_nie']).client_id == client.client_id:
                            client.set_dni_nie(data['dni_nie'])
                        else:
                            return {"message": "The new DNI/NIE is already in use"}, 406
                if data['email']:
                    if ClientModel.find_by_email(data['email']) is None:
                        client.set_email(data['email'])
                    else:
                        if ClientModel.find_by_email(data['email']) == client:
                            client.set_email(data['email'])
                        else:
                            return {"message": "The new email is already in use"}, 405

                return {"message": "Client profile modified successfully"}, 200
            else:
                return {"message": "Client with this email doesn't exist"}, 404
        except:
            return {"message": "Error Modify client profile"}, 500