Advertisement
Guest User

Untitled

a guest
Jun 19th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.08 KB | None | 0 0
  1. # MyPackage/mypackage/__init__.py
  2. from flask import Flask
  3.  
  4. from mypackage.forms import *
  5. from mypackage.model import *
  6. from mypackage.views.admin import admin
  7. from mypackage.views.root import root
  8.  
  9. app = Flask(__name__)
  10. app.secret_key = 'Akljiopnq3029n'
  11. app.register_module(admin, url_prefix='/admin')
  12. app.register_module(root)
  13. app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///development.db'
  14. app.config['SQLALCHEMY_ECHO'] = True
  15. app.config['DEBUG'] = True
  16. app.config['CSRF_SESSION_KEY'] = 'asnoiwnefoiNEFOInef'
  17. db.init_app(app)
  18.  
  19. def setup_db():
  20.     db.create_all()
  21.  
  22. # MyPackage/mypackage/model/__init__.py
  23. from flaskext.sqlalchemy import SQLAlchemy
  24. from werkzeug import generate_password_hash, check_password_hash
  25.  
  26.  
  27. db = SQLAlchemy()
  28.  
  29. class InnoDBMixin(object):
  30.  
  31.     __table_args__ = {'mysql_engine': 'innodb'}
  32.  
  33.     id = db.Column(db.Integer, primary_key=True, autoincrement=True)
  34.  
  35. class User(db.Model, InnoDBMixin):
  36.  
  37.     __tablename__ = 'users'
  38.  
  39.     username = db.Column(db.Unicode(80), unique=True)
  40.     email = db.Column(db.Unicode(255), unique=True)
  41.     _password = db.Column(db.Unicode(80)) # synonym'd to password
  42.  
  43.     def __init__(self, username, password):
  44.         self.username = username
  45.         self._set_password(password)
  46.  
  47.     def _get_password(self):
  48.         return self._password
  49.  
  50.     def _set_password(self, password):
  51.         self._password = generate_password_hash(password)
  52.  
  53.     password = db.synonym('_password', descriptor=property(_get_password,
  54.                                                            _set_password))
  55.  
  56.     def check_password(self, password):
  57.         return check_password_hash(self.password, password)
  58.  
  59. # MyPackage/tests/test_mypackage.py
  60. import mypackage
  61. import unittest
  62. import tempfile
  63.  
  64. from flaskext.sqlalchemy import SQLAlchemy
  65.  
  66. from mypackage import model
  67.  
  68.  
  69. class MyPackageTestCase(unittest.TestCase):
  70.  
  71.     def setUp(self):
  72.         upstartr.app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite://'
  73.         upstartr.app.config['SQLALCHEMY_ENGINE'] = 'sqlite://'
  74.         upstartr.app.config['SQLALCHEMY_ECHO'] = True
  75.         upstartr.app.config['CSRF_ENABLED'] = False
  76.         upstartr.app.config['TESTING'] = True
  77.         db = SQLAlchemy(mypackage.app)
  78.         db.create_all()
  79.  
  80.         self.db = db
  81.         self.app = mypackage.app.test_client()
  82.  
  83.     def tearDown(self):
  84.         self.db.drop_all()
  85.  
  86.     def login(self, username, password):
  87.         return self.app.post('/login', data=dict(
  88.                 username=username,
  89.                 password=password
  90.                 ), follow_redirects=True)
  91.  
  92.     def logout(self):
  93.         return self.app.get('/logout', follow_redirects=True)
  94.  
  95.     def test_login_logout(self):
  96.         rv = self.login('admin', 'admin')
  97.         assert 'Welcome back' in rv.data
  98.         rv = self.logout()
  99.         assert 'See you later' in rv.data
  100.         rv = self.login('notadmin', 'invalid')
  101.         assert 'Invalid username' in rv.data
  102.         rv = self.login('admin', 'badpass')
  103.         assert 'Incorrect password' in rv.data
  104.  
  105. if __name__ == '__main__':
  106.     unittest.main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement