dankventskalender migrate to flask
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.

59 lines
1.6KB

  1. import pytest
  2. from flask import g, session
  3. from calender.db import get_db
  4. def test_register(client, app):
  5. assert client.get('/auth/register').status_code == 200
  6. response = client.post(
  7. '/auth/register', data={'username': 'a', 'password': 'a'}
  8. )
  9. assert 'http://localhost/auth/login' == response.headers['Location']
  10. with app.app_context():
  11. assert get_db().execute(
  12. "select * from user where username = 'a'",
  13. ).fetchone() is not None
  14. @pytest.mark.parametrize(('username', 'password', 'message'), (
  15. ('', '', b'Username is required.'),
  16. ('a', '', b'Password is required.'),
  17. ('test', 'test', b'already registered'),
  18. ))
  19. def test_register_validate_input(client, username, password, message):
  20. response = client.post(
  21. '/auth/register',
  22. data={'username': username, 'password': password}
  23. )
  24. assert message in response.data
  25. def test_login(client, auth):
  26. assert client.get('/auth/login').status_code == 200
  27. response = auth.login()
  28. assert response.headers['Location'] == 'http://localhost/'
  29. with client:
  30. client.get('/')
  31. assert session['user_id'] == 1
  32. assert g.user['username'] == 'test'
  33. @pytest.mark.parametrize(('username', 'password', 'message'), (
  34. ('a', 'test', b'Incorrect username.'),
  35. ('test', 'a', b'Incorrect password.'),
  36. ))
  37. def test_login_validate_input(auth, username, password, message):
  38. response = auth.login(username, password)
  39. assert message in response.data
  40. def test_logout(client, auth):
  41. auth.login()
  42. with client:
  43. auth.logout()
  44. assert 'user_id' not in session