def app(): """Create and configure a new app instance for each test.""" # create the app with common test config # app = create_app({"TESTING": True, "SQLALCHEMY_DATABASE_URI": "sqlite:///:memory:"}) app = create_app({ "TESTING": True, "SQLALCHEMY_DATABASE_URI": "postgresql://*****:*****@localhost:5432/test_flaskr" }) # create the database and load test data # set _password to pre-generated hashes, since hashing for each test is slow with app.app_context(): init_db() user = User(username="******", _password=_user1_pass, profile="test user profile") db.session.add_all(( user, User(username="******", _password=_user2_pass, profile="other user profile"), Post( title="test title", body="test\nbody", author=user, created=datetime(2018, 1, 1), ), )) db.session.commit() yield app
def register(): """Register a new user. Validates that the username is not already taken. Hashes the password for security. """ if request.method == "POST": username = request.form["username"] password = request.form["password"] error = None if not username: error = "Username is required." elif not password: error = "Password is required." elif db.session.query( User.query.filter_by(username=username).exists()).scalar(): error = f"User {username} is already registered." if error is None: # the name is available, create the user and go to the login page db.session.add(User(username=username, password=password)) db.session.commit() return redirect(url_for("auth.login")) flash(error) return render_template("auth/register.html")
def register(): """Register a new user. Validates that the email is not already taken. Hashes the password for security. """ if request.method == "POST": email = request.form["email"] first_name = request.form["first_name"] last_name = request.form["last_name"] password = request.form["password"] confirm_password = request.form["confirm_password"] error = None if not first_name or not last_name: error = "Name is required" elif not email: error = "Email is required." elif not password: error = "Password is required." elif password != confirm_password: error = "Passwords do not match" elif db.session.query( User.query.filter_by(email=email).exists()).scalar(): error = f"Email {email} is already registered." if error is None: print("SUccess") # the name is available, create the user and go to the login page db.session.add( User(first_name=first_name, last_name=last_name, email=email, password=password)) db.session.commit() return redirect(url_for("auth.login")) print("Error") flash(error) return render_template("register.html")
def register(): """Register a new user. Validates that the username and email is not already taken. Hashes the password for security """ if request.method == 'POST': username = request.form['username'] email = request.form['email'] password = request.form['password'] repassword = request.form["repassword"] error = None if not username: error = 'Username is required.' elif not email: error = 'Email is required.' elif not password: error = 'Password is required.' elif password != repassword: error = 'Passwords must match.' elif db.session.query( User.query.filter_by(username=username).exists() ).scalar(): error = f"User {username} is already registered." elif db.session.query( User.query.filter_by(email=email).exists() ).scalar(): error = f"User {email} is already registered." if error is None: # getting the user profile image link = gravatar(email, use_ssl=True) # the name and email is available, create the user and go to the login page db.session.add(User(username=username,email=email,password=password,image=link)) db.session.commit() return redirect(url_for('auth.login')) flash(error) return render_template('auth/register.html')
def test_user_password(app): user = User(username="******", password="******") assert user.password != "a" assert user.check_password("a")