Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # MyPackage/mypackage/__init__.py
- from flask import Flask
- from mypackage.forms import *
- from mypackage.model import *
- from mypackage.views.admin import admin
- from mypackage.views.root import root
- app = Flask(__name__)
- app.secret_key = 'Akljiopnq3029n'
- app.register_module(admin, url_prefix='/admin')
- app.register_module(root)
- app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///development.db'
- app.config['SQLALCHEMY_ECHO'] = True
- app.config['DEBUG'] = True
- app.config['CSRF_SESSION_KEY'] = 'asnoiwnefoiNEFOInef'
- db.init_app(app)
- def setup_db():
- db.create_all()
- # MyPackage/mypackage/model/__init__.py
- from flaskext.sqlalchemy import SQLAlchemy
- from werkzeug import generate_password_hash, check_password_hash
- db = SQLAlchemy()
- class InnoDBMixin(object):
- __table_args__ = {'mysql_engine': 'innodb'}
- id = db.Column(db.Integer, primary_key=True, autoincrement=True)
- class User(db.Model, InnoDBMixin):
- __tablename__ = 'users'
- username = db.Column(db.Unicode(80), unique=True)
- email = db.Column(db.Unicode(255), unique=True)
- _password = db.Column(db.Unicode(80)) # synonym'd to password
- def __init__(self, username, password):
- self.username = username
- self._set_password(password)
- def _get_password(self):
- return self._password
- def _set_password(self, password):
- self._password = generate_password_hash(password)
- password = db.synonym('_password', descriptor=property(_get_password,
- _set_password))
- def check_password(self, password):
- return check_password_hash(self.password, password)
- # MyPackage/tests/test_mypackage.py
- import mypackage
- import unittest
- import tempfile
- from flaskext.sqlalchemy import SQLAlchemy
- from mypackage import model
- class MyPackageTestCase(unittest.TestCase):
- def setUp(self):
- upstartr.app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite://'
- upstartr.app.config['SQLALCHEMY_ENGINE'] = 'sqlite://'
- upstartr.app.config['SQLALCHEMY_ECHO'] = True
- upstartr.app.config['CSRF_ENABLED'] = False
- upstartr.app.config['TESTING'] = True
- db = SQLAlchemy(mypackage.app)
- db.create_all()
- self.db = db
- self.app = mypackage.app.test_client()
- def tearDown(self):
- self.db.drop_all()
- 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_login_logout(self):
- rv = self.login('admin', 'admin')
- assert 'Welcome back' in rv.data
- rv = self.logout()
- assert 'See you later' in rv.data
- rv = self.login('notadmin', 'invalid')
- assert 'Invalid username' in rv.data
- rv = self.login('admin', 'badpass')
- assert 'Incorrect password' in rv.data
- if __name__ == '__main__':
- unittest.main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement