def test_already_exists():
    headers = {
        'Accept': '*/*',
        'User-agent': 'request',
    }

    new_collaborator = {
        "name": "Teste",
        "email": "*****@*****.**",
        "password": "******",
        "confirm_password": "******"
    }

    url = 'http://0.0.0.0:5000/collaborators'

    response = requests.post(url,
                             headers=headers,
                             data=json.dumps(new_collaborator))

    response = requests.post(url,
                             headers=headers,
                             data=json.dumps(new_collaborator))
    response_json = response.json()
    status = response.status_code
    message = response_json['message']

    assert (status == 400
            and message == MSG_ALREADY_EXISTS.format('colaborador'))
    def put(self, user_id):
        result = None
        schema = UserSchema()
        update_schema = UserUpdateSchema()
        req_data = request.get_json() or None
        email = None

        if req_data is None:
            return resp_data_invalid('Users', [], msg=MSG_NO_DATA)

        user = get_user_by_id(user_id)

        if not isinstance(user, User):
            return user

        # carrega os dados de acordo com o schema de atualização
        data, errors = update_schema.load(req_data)

        # em caso de erros retorno uma resposta 422 com os erros de
        # validação do schema
        if errors:
            return resp_data_invalid('Users', errors)

        email = data.get('email', None)

        if email and exists_email_in_users(email, user):
            return resp_data_invalid('Users', [{
                'email': [MSG_ALREADY_EXISTS.format('usuário')]
            }])

        try:
            # para cada chave dentro do dados do update schema
            # atribuimos seu valor
            for i in data.keys():
                user[i] = data[i]

            user.save()

        except NotUniqueError:
            return resp_already_exists('Users', 'usuário')

        except ValidationError as e:
            return resp_exception('Users',
                                  msg=MSG_INVALID_DATA,
                                  description=e.__str__())

        except Exception as e:
            return resp_exception('Users', description=e.__str__())

        result = schema.dump(user)

        return resp_ok('Users',
                       MSG_RESOURCE_UPDATED.format('Usuário'),
                       data=result.data)
def test_post_already_exists_must_return_bad_request(client):
    """
        Verifica o status code 400 e a menssagem
    """
    client.post(endpoint_post,
                data=dumps(dict(return_json_valid())),
                content_type='application/json')
    resp2 = client.post(endpoint_post,
                        data=dumps(dict(return_json_valid())),
                        content_type='application/json')

    assert resp2.status_code == EStatus_Code.BAD_REQUEST.value
    assert resp2.json['message'] == MSG_ALREADY_EXISTS.format('usuário')
Beispiel #4
0
    def test_responses_already_exists(self, client):
        client.post(
            self.ENDPOINT,
            data=dumps(dict(full_name='teste', email='*****@*****.**', password='******')),
            content_type='application/json'
        )

        resp_2 = client.post(
            self.ENDPOINT,
            data=dumps(dict(full_name='teste', email='*****@*****.**', password='******')),
            content_type='application/json'
        )

        assert resp_2.status_code == 400
        assert resp_2.json.get('message') == MSG_ALREADY_EXISTS.format('usuário')
Beispiel #5
0
def resp_already_exists(resource: str, description: str):
    """
    Responses 400
    """

    if not isinstance(resource, str):
        raise ValueError(MSG_MESSAGES_MUST_BE_STRING)

    resp = jsonify({
        "resource": resource,
        "message": MSG_ALREADY_EXISTS.format(description),
    })

    resp.status_code = 400

    return resp
    def put(self, user_id):
        result = None
        schema = UserSchema(many=True)
        update_schema = UserUpdateSchema()
        req_data = request.json or None
        email = None

        if req_data is None:
            return resp_invalid_data('Users', {}, msg=MSG_NO_DATA)

        confirm_password = req_data.pop('confirm_password')

        if not check_password_in_singup(req_data.get('password'),
                                        confirm_password):
            errors = {'password': MSG_PASSWORD_DIDNT_MATCH}
            return resp_invalid_data('Users', errors)

        try:
            query = get_user_by_id(user_id)
            user = schema.dump(query)
            data = update_schema.load(req_data)

        except IntegrityError:
            return resp_invalid_data('Users', IntegrityError.orig)

        email = data.get('email', None)

        if email and exists_email_in_user(email, user):
            return resp_ok('Users',
                           {'email': MSG_ALREADY_EXISTS.format('user')})
        try:
            query.update(request.json)
            current_app.db.session.commit()

        except IntegrityError as err:
            return resp_already_exists('Users', err.orig)
        except ValidationError as err:
            return resp_exception('Users', description=err.__str__())
        except Exception as err:
            return resp_exception('Users', description=err.__str__())
        result = re.search("'.*'", str(data.keys())).group()
        return resp_ok('Users',
                       MSG_RESOURCE_UPDATED.format('Fields'),
                       data=result)
Beispiel #7
0
def test_resp_already_exists_response():
    description = 'Some description'
    resp = resp_already_exists('pytest', description)
    message = resp.json.get('message')
    assert message == MSG_ALREADY_EXISTS.format(description)
Beispiel #8
0
    def put(self, user_id):
        result = None
        schema = UserSchema()
        update_schema = UserUpdateSchema()
        req_data = request.get_json() or None
        email = None
        current_user = get_user_by_email(get_jwt_identity())

        if not isinstance(current_user, User):
            return current_user

        if not (current_user.is_active()) and current_user.is_admin():
            return resp_notallowed_user('Users')

        # Valido se o payload está vazio
        if req_data is None:
            return resp_data_invalid('Users', [], msg=MSG_NO_DATA)

        # Busco o usuário na coleção users pelo seu id
        user = get_user_by_id(user_id)

        # se não for uma instancia do modelo User retorno uma resposta
        # da requisição http do flask
        if not isinstance(user, User):
            return user

        # carrego meus dados de acordo com o schema de atualização
        data, errors = update_schema.load(req_data)

        # em caso de erros retorno uma resposta 422 com os erros de
        # validação do schema
        if errors:
            return resp_data_invalid('Users', errors)

        email = data.get('email', None)

        # Valido se existe um email na coleção de usuários
        if email and exists_email_in_users(email, user):
            return resp_data_invalid('Users', [{
                'email': [MSG_ALREADY_EXISTS.format('usuário')]
            }])

        try:
            # para cada chave dentro do dados do update schema
            # atribuimos seu valor
            for i in data.keys():
                user[i] = data[i]

            user.save()

        except NotUniqueError:
            return resp_already_exists('Users', 'usuário')

        except ValidationError as e:
            return resp_exception('Users',
                                  msg=MSG_INVALID_DATA,
                                  description=e.__str__())

        except Exception as e:
            return resp_exception('Users', description=e.__str__())

        result = schema.dump(user)

        return resp_ok('Users',
                       MSG_RESOURCE_UPDATED.format('Usuário'),
                       data=result.data)