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.

92 lines
2.2 KiB

10 years ago
# -*- coding: utf-8 -*-
"""
Flaskr Tests
~~~~~~~~~~~~
Tests the Flaskr application.
:copyright: (c) 2015 by Armin Ronacher.
10 years ago
: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):
10 years ago
db_fd, temp_db_location = tempfile.mkstemp()
config = {
'DATABASE': temp_db_location,
'TESTING': True,
'DB_FD': db_fd
}
10 years ago
app = create_app(config=config)
with app.app_context():
init_db()
yield app
@pytest.fixture
def client(request, app):
client = app.test_client()
10 years ago
def teardown():
os.close(app.config['DB_FD'])
os.unlink(app.config['DATABASE'])
10 years ago
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):
10 years ago
"""Make sure login and logout works"""
rv = login(client, app.config['USERNAME'],
app.config['PASSWORD'])
10 years ago
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'])
10 years ago
assert b'Invalid username' in rv.data
rv = login(client, app.config['USERNAME'],
app.config['PASSWORD'] + 'x')
10 years ago
assert b'Invalid password' in rv.data
def test_messages(client, app):
10 years ago
"""Test that messages work"""
login(client, app.config['USERNAME'],
app.config['PASSWORD'])
10 years ago
rv = client.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'&lt;Hello&gt;' in rv.data
assert b'<strong>HTML</strong> allowed here' in rv.data