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')
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')
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)
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)
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)