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.
65 lines
1.9 KiB
65 lines
1.9 KiB
15 years ago
|
# -*- 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_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"""
|
||
|
# start with a blank state
|
||
|
rv = self.app.get('/')
|
||
|
assert 'No entries here so far' in rv.data
|
||
|
self.login(flaskr.USERNAME, flaskr.PASSWORD)
|
||
|
rv = self.app.post('/add', data=dict(
|
||
|
title='<Hello>',
|
||
|
text='<strong>HTML</strong> 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 '<strong>HTML</strong> allowed here' in rv.data
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
unittest.main()
|