def test_should_not_allow_None_as_prefs(client): add_user("foo", "*****@*****.**", "foobar") prefs = None update_prefs("*****@*****.**", prefs) user = get_user("*****@*****.**") assert user.get("preferences") == {}
def test_valid_user_preferences(client): # create the user add_user("foo", "*****@*****.**", "foobar") preferences = { "favorite_cast_member": "Goldie Hawn", "favorite_genre": "Comedy", "preferred_ratings": ["G", "PG", "PG-13"] } # update user preferences result = update_prefs("*****@*****.**", preferences) assert result.matched_count == 1 assert result.modified_count == 1 # get the user user = get_user("*****@*****.**") assert user.get('preferences') is not None new_preferences = { "favorite_cast_member": "Daniel Day-Lewis", "favorite_genre": "Drama", "preferred_ratings": ["R"] } result = update_prefs(user.get('email'), new_preferences) assert result.matched_count == 1 assert result.modified_count == 1 user = get_user("*****@*****.**") assert user.get("preferences") == new_preferences
def signup(): if request.method == 'GET': return redirect(url_for('login')) email = request.form['email'] name = request.form['name'] pw = request.form['password'] if len(pw) < 8: return render_template( 'login.html', signuperror="Make sure that your password is at least 8 characters!" ) if pw != request.form['confirmpassword']: return render_template( 'login.html', signuperror="Make sure that the passwords you enter match!") insertionresult = add_user( name, email, bcrypt.generate_password_hash(pw.encode('utf8')).decode("utf-8")) if 'error' in insertionresult: return render_template('login.html', signuperror=insertionresult["error"]) userdata = get_user(email) if not userdata: return render_template( 'login.html', signuperror= "There's something wrong on our end. Please try again later!") user = create_user_object(userdata) flask_login.login_user(user) return redirect(url_for('show_movies'))
def make_admin_user_for_ui_test(): try: post_data = request.get_json() email = expect(post_data['email'], str, 'email') name = expect(post_data['name'], str, 'name') password = expect(post_data['password'], str, 'password') except Exception as e: jsonify({'error': str(e)}), 400 errors = {} if len(password) < 8: errors['password'] = "******" if len(name) <= 3: errors['name'] = "You must specify a name of at least 3 characters." if len(errors.keys()) != 0: response_object = {'status': 'fail', 'error': errors} return jsonify(response_object), 411 insertionresult = add_user( name, email, bcrypt.generate_password_hash( password=password.encode('utf8')).decode("utf-8")) if 'error' in insertionresult: errors['email'] = insertionresult["error"] make_admin(email) userdata = get_user(email) if not userdata: errors['general'] = "Internal error, please try again later." if len(errors.keys()) != 0: response_object = {'status': 'fail', 'error': errors} return make_response(jsonify(response_object)), 400 else: userdata = { "email": userdata['email'], "name": userdata['name'], "preferences": userdata.get('preferences'), "isAdmin": True } user = User(userdata) jwt = create_access_token(user.to_json()) try: login_user(user.email, jwt) response_object = { 'status': 'success', 'auth_token': jwt, 'info': userdata } return make_response(jsonify(response_object)), 201 except Exception as e: response_object = {'status': 'fail', 'error': {'internal': e}} return make_response(jsonify(response_object)), 500
def make_admin_user_for_ui_test(): try: post_data = request.get_json() email = expect(post_data["email"], str, "email") name = expect(post_data["name"], str, "name") password = expect(post_data["password"], str, "password") except Exception as e: jsonify({"error": str(e)}), 400 errors = {} if len(password) < 8: errors["password"] = "******" if len(name) <= 3: errors["name"] = "You must specify a name of at least 3 characters." if len(errors.keys()) != 0: response_object = {"error": errors} return jsonify(response_object), 411 insertionresult = add_user( name, email, bcrypt.generate_password_hash( password=password.encode("utf8")).decode("utf-8"), ) if "error" in insertionresult: errors["email"] = insertionresult["error"] make_admin(email) userdata = get_user(email) if not userdata: errors["general"] = "Internal error, please try again later." if len(errors.keys()) != 0: response_object = {"error": errors} return make_response(jsonify(response_object)), 400 else: userdata = { "email": userdata["email"], "name": userdata["name"], "preferences": userdata.get("preferences"), "isAdmin": True, } user = User(userdata) jwt = create_access_token(user.to_json()) try: login_user(user.email, jwt) response_object = {"auth_token": jwt, "info": userdata} return make_response(jsonify(response_object)), 201 except Exception as e: response_object = {"error": {"internal": str(e)}} return make_response(jsonify(response_object)), 500
def test_registration(client): delete_user('*****@*****.**') # the password will be hashed at the api layer # NEVER # NEVER # NEVER store passwords in plaintext result = add_user(test_user.get('name'), test_user.get('email'), test_user.get('password')) assert result == {'success': True} found_user = get_user(test_user.get('email')) assert found_user.get('name') == test_user.get('name') assert found_user.get('email') == test_user.get('email') assert found_user.get('password') == test_user.get('password')
def test_registration(client): delete_user("*****@*****.**") # the password will be hashed at the api layer # NEVER # NEVER # NEVER store passwords in plaintext result = add_user(test_user.get("name"), test_user.get("email"), test_user.get("password")) assert result == {"success": True} found_user = get_user(test_user.get("email")) assert found_user.get("name") == test_user.get("name") assert found_user.get("email") == test_user.get("email") assert found_user.get("password") == test_user.get("password")
def test_no_duplicate_registrations(client): result = add_user(test_user.get('name'), test_user.get('email'), test_user.get('password')) assert result == {'error': "A user with the given email already exists."}
def test_no_duplicate_registrations(client): result = add_user(test_user.get("name"), test_user.get("email"), test_user.get("password")) assert result == {"error": "A user with the given email already exists."}