mirror of https://github.com/mitsuhiko/flask.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.3 KiB
75 lines
2.3 KiB
# -*- coding: utf-8 -*- |
|
""" |
|
Flaskr Tests |
|
~~~~~~~~~~~~ |
|
|
|
Tests the Flaskr application. |
|
|
|
:copyright: (c) 2014 by Armin Ronacher. |
|
:license: BSD, see LICENSE for more details. |
|
""" |
|
import os |
|
import flaskr |
|
import unittest |
|
import tempfile |
|
|
|
|
|
class FlaskrTestCase(unittest.TestCase): |
|
|
|
def setUp(self): |
|
"""Before each test, set up a blank database""" |
|
self.db_fd, flaskr.app.config['DATABASE'] = tempfile.mkstemp() |
|
flaskr.app.config['TESTING'] = True |
|
self.app = flaskr.app.test_client() |
|
flaskr.init_db() |
|
|
|
def tearDown(self): |
|
"""Get rid of the database again after each test.""" |
|
os.close(self.db_fd) |
|
os.unlink(flaskr.app.config['DATABASE']) |
|
|
|
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 b'No entries here so far' in rv.data |
|
|
|
def test_login_logout(self): |
|
"""Make sure login and logout works""" |
|
rv = self.login(flaskr.app.config['USERNAME'], |
|
flaskr.app.config['PASSWORD']) |
|
assert b'You were logged in' in rv.data |
|
rv = self.logout() |
|
assert b'You were logged out' in rv.data |
|
rv = self.login(flaskr.app.config['USERNAME'] + 'x', |
|
flaskr.app.config['PASSWORD']) |
|
assert b'Invalid username' in rv.data |
|
rv = self.login(flaskr.app.config['USERNAME'], |
|
flaskr.app.config['PASSWORD'] + 'x') |
|
assert b'Invalid password' in rv.data |
|
|
|
def test_messages(self): |
|
"""Test that messages work""" |
|
self.login(flaskr.app.config['USERNAME'], |
|
flaskr.app.config['PASSWORD']) |
|
rv = self.app.post('/add', data=dict( |
|
title='<Hello>', |
|
text='<strong>HTML</strong> allowed here' |
|
), follow_redirects=True) |
|
assert b'No entries here so far' not in rv.data |
|
assert b'<Hello>' in rv.data |
|
assert b'<strong>HTML</strong> allowed here' in rv.data |
|
|
|
|
|
if __name__ == '__main__': |
|
unittest.main()
|
|
|