def test_delete_user(db: SQLAlchemy) -> None: new_user = create_user() deleted_user = UserService().delete_by_id(new_user.user_id) if deleted_user: assert len(UserService().get_all()) == 0
def reset_password(token): """Resets a users password given a valid token. Parmaeters ---------- token: The JWT that was sent to the users email. """ data = request.get_json() user = User.verify_reset_password_token(token) updates = UserInterface() updates['password'] = data['new_password'] try: if user: UserService().update(user, updates) send_email("[QuickBoosters] Password Reset", "password reset successfully", "*****@*****.**", user.email) return jsonify({ 'status': 'success', 'message': 'Password successfully updated' }) except Exception as e: return jsonify({'status': 'failure', 'message': str(e)})
def test_update_user(db: SQLAlchemy) -> None: new_user = create_user() new_changes = UserInterface() new_changes['username'] = '******' updated_user: User = UserService().update(new_user, new_changes) assert updated_user.username == 'updatedName'
def create_user() -> User: user: UserInterface = { "user_id": 1, "username": "******", "email": "*****@*****.**", "password": "******", "role": RoleTypes.MEMBER, "created_on": datetime.now() } new_user = UserService().create(user) return new_user
def create_user() -> None: """ Nessecary for ForeignKey Constraint""" user: UserInterface = { "user_id": 1, "username": "******", "email": "*****@*****.**", "password": "******", "role": RoleTypes.MEMBER, "created_on": datetime.now() } UserService().create(user)
def login_and_generate_token() -> str: """API route to generate token. Returns the new token Returns: str: a JSON encoded response. """ username: str = request.form['username'] password: str = request.form['password'] user = UserService().get_by_username(username) try: if user and user.check_password(password): token = encodeAuthToken(user.id) return jsonify({ 'status': 'Success', 'auth_token': token.decode('UTF-8') }) except Exception as e: return jsonify({'status': 'failure', 'error': str(e)})
def reset_password_request(): """Sends an email with a JWT token""" url = request.host_url + 'password-reset/' data = request.get_json() email = data['email'] user = UserService().get_by_email(email) try: if user: send_password_reset_email(user, url) return jsonify({ 'status': 'success', 'message': 'Email sent to: ' + email }) except Exception as e: return jsonify({'status': 'failure', 'error': str(e)})
def register_user(): """An API route to create a new user. Returns the new created user. Returns: str: A JSON encoded response. """ try: schema = UserSchema() new_user = UserService().create(schema.load(request.get_json())) return {"user": new_user.username} except IntegrityError: return jsonify({ 'status': 'failure', 'error': request.get_json()['username'] + ' already taken.' }) except Exception as e: return jsonify({'status': 'failure', 'error': str(e)})
def test_get_user_by_username(db: SQLAlchemy) -> None: new_user = create_user() assert UserService.get_by_username( new_user.username).username == "exampleUserName"
def test_get_user_by_id(db: SQLAlchemy) -> None: new_user = create_user() assert UserService.get_by_id(new_user.user_id).user_id == 1