Skip to content

Instantly share code, notes, and snippets.

@octaflop
Created November 8, 2012 20:30
Show Gist options
  • Select an option

  • Save octaflop/4041375 to your computer and use it in GitHub Desktop.

Select an option

Save octaflop/4041375 to your computer and use it in GitHub Desktop.
Flask-Login Usage Testing
======================================================================
FAIL: test_login (__main__.JoyHikeDBCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "dbtests.py", line 68, in test_login
assert "logged in as" in rv.data
AssertionError
======================================================================
FAIL: test_logout (__main__.JoyHikeDBCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "dbtests.py", line 63, in test_logout
assert "Logged out" in rv.data
AssertionError
======================================================================
FAIL: test_register (__main__.JoyHikeDBCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "dbtests.py", line 59, in test_register
assert "Successful" in rv.data
AssertionError
----------------------------------------------------------------------
Ran 4 tests in 6.720s
FAILED (failures=3)
from ..db.socialmodels import User, DbUser, Anonymous
from ..db.database import db_session
from forms.loginform import LoginForm
from forms.registrationform import RegistrationForm
from sqlalchemy.orm.exc import NoResultFound
from sqlalchemy.exc import DatabaseError
login_manager = LoginManager()
login_manager.anonymous_user = Anonymous
login_manager.login_view = "login"
login_manager.login_message = u"Kindly log in"
login_manager.refresh_view = "reauth"
@login_manager.user_loader
def load_user(userid):
return User.query.get(userid)
login_manager.setup_app(app)
@app.route('/register', methods=['GET', 'POST'])
def register():
form = RegistrationForm(request.form)
if form.validate_on_submit():
name, password, passwordc, email = form.username.data, form.password.data, form.passwordc.data, form.email.data
try:
user = User(name, email, password)
db_session.add(user)
db_session.commit()
flash("Successful Registration!")
user = User.query.filter_by(name=name).one()
login_user(DbUser(user))
return redirect(request.args.get("next") or url_for("appindex"))
except DatabaseError as e:
flash("Could not register... %s" % e)
return redirect("/register")
return render_template("register.html", form=form)
@app.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm(request.form)
if form.validate_on_submit():
name, password = form.username.data, form.password.data
try:
user = User.query.filter_by(name=name,
password=password).one()
login_user(DbUser(user))
flash("Logged in as %s" % (user.name))
return redirect(request.args.get("next") or url_for("appindex"))
#login_user(user)
except NoResultFound:
return redirect("/login")
return redirect(url_for('appindex'))
return render_template('login.html', form=form)
@app.route('/logout')
@login_required
def logout():
logout_user()
flash("Logged out sucessfully")
return redirect(url_for('appindex'))
@app.route("/reauth", methods=["GET", "POST"])
@login_required
def reauth():
if request.method == "POST":
confirm_login()
flash(u"Reauthenticated.")
return redirect(request.args.get("next") or url_for("index"))
return render_template("reauth.html")
import someapp as j
from someapp.db.testdatabase import init_db, drop_db, db_session, engine, dburi
import unittest
import fixtures
appurl = "/api/%s"
header = { "content-type": "application/json" }
class UsageCase(unittest.TestCase):
dburi = dburi
test_user1 = {
'username': 'william',
'email': 'will@southpark.com',
'password': 'powers'
}
def create_app(self):
j.app.config['DATABASE'] = self.dburi
j.app.config['SQLALCHEMY_DATABASE_URI'] = self.dburi
j.app.config['TESTING'] = True
self.app = j.app.test_client()
self.engine = engine
def setUp(self):
self.create_app()
init_db()
fixtures.install(self.engine, *fixtures.all_data)
self.session = db_session
def tearDown(self):
drop_db()
self.session.remove()
def register(self, username, password, email):
return self.app.post('/register', data=dict(
username=username,
password=password,
passwordc=password,
email=email
), follow_redirects=True)
def login(self, username, password):
return self.app.post('/login', data=dict(
username=username,
password=password
), follow_redirects=True)
def logout(self):
return self.app.get('/logout', follow_redirects=True)
def test_register(self):
rv = self.register(**self.test_user1)
assert "Successful" in rv.data
def test_logout(self):
rv = self.logout()
assert "Logged out" in rv.data
def test_login(self):
rv = self.login(self.test_user1['username'],
self.test_user1['password'])
assert "logged in as" in rv.data
def test_list_disallowed(self):
rv = self.app.get(appurl % "routes", headers=header)
#print rv.data
#veritas = '{\n "objects": [], \n "total_pages": 0, \n "page": 1\n}'
veritas = "401"
assert veritas in rv.data
if __name__ == "__main__":
unittest.main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment