# -*- coding: utf-8 -*- """ Flaskr Tests ~~~~~~~~~~~~ Tests the Flaskr application. :copyright: (c) 2015 by Armin Ronacher. :license: BSD, see LICENSE for more details. """ import os import tempfile import pytest from flaskr.factory import create_app from flaskr.blueprints.flaskr import init_db @pytest.fixture def app(request): db_fd, temp_db_location = tempfile.mkstemp() config = { 'DATABASE': temp_db_location, 'TESTING': True, 'DB_FD': db_fd } app = create_app(config=config) with app.app_context(): init_db() yield app @pytest.fixture def client(request, app): client = app.test_client() def teardown(): os.close(app.config['DB_FD']) os.unlink(app.config['DATABASE']) request.addfinalizer(teardown) return client def login(client, username, password): return client.post('/login', data=dict( username=username, password=password ), follow_redirects=True) def logout(client): return client.get('/logout', follow_redirects=True) def test_empty_db(client): """Start with a blank database.""" rv = client.get('/') assert b'No entries here so far' in rv.data def test_login_logout(client, app): """Make sure login and logout works""" rv = login(client, app.config['USERNAME'], app.config['PASSWORD']) assert b'You were logged in' in rv.data rv = logout(client) assert b'You were logged out' in rv.data rv = login(client,app.config['USERNAME'] + 'x', app.config['PASSWORD']) assert b'Invalid username' in rv.data rv = login(client, app.config['USERNAME'], app.config['PASSWORD'] + 'x') assert b'Invalid password' in rv.data def test_messages(client, app): """Test that messages work""" login(client, app.config['USERNAME'], app.config['PASSWORD']) rv = client.post('/add', data=dict( title='', text='HTML allowed here' ), follow_redirects=True) assert b'No entries here so far' not in rv.data assert b'<Hello>' in rv.data assert b'HTML allowed here' in rv.data