forked from orbit-oss/flask
app.open_resource needs to get called with the correct mode param (python3 will read bytes [not str] if the wrong mode is used), add mode param docs. rv.data is bytes, fix the data type we compare it with to be also bytes
75 lines
2.3 KiB
Python
75 lines
2.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
Flaskr Tests
|
|
~~~~~~~~~~~~
|
|
|
|
Tests the Flaskr application.
|
|
|
|
:copyright: (c) 2010 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()
|