Created
November 8, 2012 20:30
-
-
Save octaflop/4041375 to your computer and use it in GitHub Desktop.
Flask-Login Usage Testing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ====================================================================== | |
| 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) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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") | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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