# -*- coding: utf-8 -*- """ Flaskr Tests ~~~~~~~~~~~~ Tests the Flaskr application. :copyright: (c) 2010 by Armin Ronacher. :license: BSD, see LICENSE for more details. """ import flaskr import unittest import tempfile class FlaskrTestCase(unittest.TestCase): def setUp(self): """Before each test, set up a blank database""" self.db = tempfile.NamedTemporaryFile() self.app = flaskr.app.test_client() flaskr.DATABASE = self.db.name flaskr.init_db() 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) # testing functions def test_empty_db(self): """Start with a blank database.""" rv = self.app.get('/') assert 'No entries here so far' in rv.data def test_login_logout(self): """Make sure login and logout works""" rv = self.login(flaskr.USERNAME, flaskr.PASSWORD) assert 'You were logged in' in rv.data rv = self.logout() assert 'You were logged out' in rv.data rv = self.login(flaskr.USERNAME + 'x', flaskr.PASSWORD) assert 'Invalid username' in rv.data rv = self.login(flaskr.USERNAME, flaskr.PASSWORD + 'x') assert 'Invalid password' in rv.data def test_messages(self): """Test that messages work""" self.login(flaskr.USERNAME, flaskr.PASSWORD) rv = self.app.post('/add', data=dict( title='', text='HTML allowed here' ), follow_redirects=True) assert 'No entries here so far' not in rv.data self.login(flaskr.USERNAME, flaskr.PASSWORD) assert '<Hello>' in rv.data assert 'HTML allowed here' in rv.data if __name__ == '__main__': unittest.main()