Files
flaskfdx/tests/test_auth.py
T

53 lines
1.6 KiB
Python

import pytest
from flask import g, session
from flaskfdx.db import get_db
def test_register(client, app):
assert client.get('/auth/register').status_code == 200
response = client.post(
'auth/register', data={'userid': 'a', 'email': 'a@b.c', 'password': 'a'}
)
assert 'http://localhost/auth/login' == response.headers['Location']
with app.app_context():
assert get_db().execute(
"SELECT * FROM users WHERE userid = 'a'",
).fetchone() is not None
@pytest.mark.parametrize(('userid', 'password', 'message'), (
('', '', b'Userid is required.'),
('a', '', b'Password is required.'),
('test', 'test', b'already registered'),
))
def test_register_validate_input(client, userid, password, message):
response = client.post(
'/auth/register',
data={'userid': userid, 'password': password}
)
assert message in response.data
def test_login(client, auth):
assert client.get('/auth/login').status_code == 200
response = auth.login()
assert response.headers['Location'] == 'http://localhost/'
with client:
client.get('/')
assert session['user_id'] == 1
assert g.user['userid'] == 'test'
@pytest.mark.parametrize(('userid', 'password', 'message'), (
('a', 'test', b'Incorrect userid'),
('test', 'a', b'Incorrect password.'),
))
def test_login_validate_input(auth, userid, password, message):
response = auth.login(userid, password)
assert message in response.data
def testz_logout(client, auth):
auth.login()
with client:
auth.logout()
assert 'user_id' not in session