import pytest from pyramid.httpexceptions import HTTPFound from pyramid.testing import DummyRequest, DummyResource from ordr.models.account import Role from ... import ( # noqa: F401 app_config, dbsession, get_example_user, get_post_request ) def test_login(): ''' test the view for the login form ''' from ordr.views.account import login context = DummyResource(nav_active=None) result = login(context, None) assert result == {'loginerror': False} assert context.nav_active == 'welcome' @pytest.mark.parametrize( # noqa: F811 'role', [Role.USER, Role.PURCHASER, Role.ADMIN] ) def test_check_login_ok(dbsession, role): ''' test the processing of the login form with valid credentials ''' from ordr.views.account import check_login user = get_example_user(role) dbsession.add(user) post_data = {'username': user.username, 'password': user.first_name} request = DummyRequest(dbsession=dbsession, POST=post_data) context = DummyResource(nav_active=None) result = check_login(context, request) assert isinstance(result, HTTPFound) assert result.location == 'http://example.com//' @pytest.mark.parametrize( # noqa: F811 'role', [Role.UNVALIDATED, Role.NEW, Role.INACTIVE] ) def test_check_login_not_activated(dbsession, role): ''' test the processing of the login form with an inactive user ''' from ordr.views.account import check_login user = get_example_user(role) dbsession.add(user) post_data = {'username': user.username, 'password': user.first_name} request = DummyRequest(dbsession=dbsession, POST=post_data) context = DummyResource(nav_active=None) result = check_login(context, request) assert result == {'loginerror': True} assert context.nav_active == 'welcome' @pytest.mark.parametrize( # noqa: F811 'username,password', [ ('', ''), ('TerryGilliam', ''), ('', 'Terry'), ('TerryGilliam', 'wrong password'), ('wrong username', 'Terry'), ] ) def test_check_login_invalid_credentials(dbsession, username, password): ''' test the processing of the login form with invalid credentials ''' from ordr.views.account import check_login user = get_example_user(Role.USER) dbsession.add(user) post_data = {'username': username, 'password': password} request = DummyRequest(dbsession=dbsession, POST=post_data) context = DummyResource(nav_active=None) result = check_login(context, request) assert result == {'loginerror': True} assert context.nav_active == 'welcome' def test_logout(): ''' test the logout view ''' from ordr.views.account import logout request = DummyRequest() result = logout(None, request) assert isinstance(result, HTTPFound) assert result.location == 'http://example.com//'