def test_activate_invalid_user(self): from horus.views import RegisterController from pyramid_mailer.interfaces import IMailer from pyramid_mailer.mailer import DummyMailer from horus.interfaces import IUserClass from horus.tests.models import User from horus.interfaces import IActivationClass from horus.tests.models import Activation self.config.registry.registerUtility(Activation, IActivationClass) self.config.registry.registerUtility(User, IUserClass) self.config.include('horus') self.config.add_route('index', '/') self.config.registry.registerUtility(DummyMailer(), IMailer) bad_act = Activation() user = User(username='******', email='*****@*****.**') user.activation = Activation() user.password = '******' user2 = User(username='******', email='*****@*****.**') user2.activation = bad_act user2.password = '******' self.session.add(user) self.session.add(user2) self.session.flush() request = testing.DummyRequest() request.matchdict = Mock() def get(val, ret): if val == 'code': return bad_act.code elif val == 'user_id': return user.id request.matchdict.get = get controller = RegisterController(request) response = controller.activate() new_user1 = User.get_by_username(request, 'sontek') new_user2 = User.get_by_username(request, 'jessie') assert not new_user1.is_activated assert not new_user2.is_activated assert response.status_int == 404
def test_activate_invalid(self): from horus.views import RegisterController from pyramid_mailer.interfaces import IMailer from pyramid_mailer.mailer import DummyMailer from horus.interfaces import IUserClass from horus.tests.models import User from horus.interfaces import IActivationClass from horus.tests.models import Activation self.config.registry.registerUtility(Activation, IActivationClass) self.config.registry.registerUtility(User, IUserClass) self.config.include('horus') self.config.add_route('index', '/') self.config.registry.registerUtility(DummyMailer(), IMailer) user = User(username='******', email='*****@*****.**') user.password = '******' user.activation = Activation() self.session.add(user) self.session.flush() request = testing.DummyRequest() request.matchdict = Mock() get = Mock() get.return_value = 'invalid' request.matchdict.get = get controller = RegisterController(request) response = controller.activate() user = User.get_by_username(request, 'sontek') assert not user.is_activated assert response.status_int == 404
def test_register_creates_user(self): from horus.views import RegisterController from pyramid_mailer.mailer import DummyMailer from pyramid_mailer.interfaces import IMailer from horus.interfaces import IUserClass from horus.tests.models import User from horus.interfaces import IActivationClass from horus.tests.models import Activation self.config.registry.registerUtility(Activation, IActivationClass) self.config.registry.registerUtility(User, IUserClass) self.config.include('horus') self.config.registry.registerUtility(DummyMailer(), IMailer) self.config.add_route('index', '/') request = self.get_csrf_request(post={ 'username': '******', 'password': { 'password': '******', 'password-confirm': 'test123', }, 'email': '*****@*****.**' }, request_method='POST') request.user = Mock() controller = RegisterController(request) response = controller.register() assert response.status_int == 302 user = User.get_by_username(request, 'admin') assert user != None
def test_get_user_by_invalid_username(self): from horus.tests.models import User user = User(username='******', email='*****@*****.**') user.password = '******' self.session.add(user) self.session.commit() request = testing.DummyRequest() new_user = User.get_by_username(request, 'sontek1') assert new_user == None
def test_register_no_email_validation(self): from horus.views import RegisterController from pyramid_mailer.mailer import DummyMailer from pyramid_mailer.interfaces import IMailer from hem.interfaces import IDBSession from horus.events import NewRegistrationEvent from horus.interfaces import IUserClass from horus.tests.models import User from horus.interfaces import IActivationClass from horus.tests.models import Activation self.config.registry.registerUtility(Activation, IActivationClass) self.config.registry.registerUtility(User, IUserClass) self.config.include('horus') self.config.registry.registerUtility(DummyMailer(), IMailer) self.config.add_route('index', '/') self.config.registry.settings['horus.require_activation'] = False def handle_registration(event): request = event.request session = request.registry.getUtility(IDBSession) session.commit() self.config.add_subscriber(handle_registration, NewRegistrationEvent) request = self.get_csrf_request(post={ 'username': '******', 'password': { 'password': '******', 'password-confirm': 'test123', }, 'email': '*****@*****.**' }, request_method='POST') flash = Mock() request.session.flash = flash request.user = Mock() controller = RegisterController(request) response = controller.register() assert response.status_int == 302 user = User.get_by_username(request, 'admin') assert user.is_activated == True flash.assert_called_with( 'You have been registered, you may log in now!', 'success')
def test_activate_multiple_users(self): from horus.views import RegisterController from pyramid_mailer.interfaces import IMailer from pyramid_mailer.mailer import DummyMailer from horus.interfaces import IUserClass from horus.tests.models import User from horus.interfaces import IActivationClass from horus.tests.models import Activation self.config.registry.registerUtility(Activation, IActivationClass) self.config.registry.registerUtility(User, IUserClass) self.config.include('horus') self.config.add_route('index', '/') self.config.registry.registerUtility(DummyMailer(), IMailer) user = User(username='******', email='*****@*****.**') user.activation = Activation() user.password = '******' user1 = User(username='******', email='*****@*****.**') user1.activation = Activation() user1.password = '******' self.session.add(user) self.session.add(user1) self.session.flush() request = testing.DummyRequest() request.matchdict = Mock() def get(key, default): if key == 'code': return user1.activation.code else: return user1.id request.matchdict.get = get controller = RegisterController(request) response = controller.activate() user = User.get_by_username(request, 'sontek1') activations = Activation.get_all(request) assert len(activations.all()) == 1 assert user.is_activated assert response.status_int == 302
def test_register_no_email_validation(self): from horus.views import RegisterController from pyramid_mailer.mailer import DummyMailer from pyramid_mailer.interfaces import IMailer from hem.interfaces import IDBSession from horus.events import NewRegistrationEvent from horus.interfaces import IUserClass from horus.tests.models import User from horus.interfaces import IActivationClass from horus.tests.models import Activation self.config.registry.registerUtility(Activation, IActivationClass) self.config.registry.registerUtility(User, IUserClass) self.config.include('horus') self.config.registry.registerUtility(DummyMailer(), IMailer) self.config.add_route('index', '/') self.config.registry.settings['horus.require_activation'] = False def handle_registration(event): request = event.request session = request.registry.getUtility(IDBSession) session.commit() self.config.add_subscriber(handle_registration, NewRegistrationEvent) request = self.get_csrf_request(post={ 'username': '******', 'password': { 'password': '******', 'password-confirm': 'test123', }, 'email': '*****@*****.**' }, request_method='POST') request.user = Mock() view = RegisterController(request) with patch('horus.views.FlashMessage') as FlashMessage: response = view.register() FlashMessage.assert_called_with(request, view.Str.registration_done, kind="success") assert response.status_int == 302 user = User.get_by_username(request, 'admin') assert user.is_activated == True
def test_get_user_activation(self): from horus.tests.models import Activation from horus.tests.models import User user1 = User(username='******', email='*****@*****.**') user2 = User(username='******', email='*****@*****.**') user1.set_password('password') user2.set_password('password') activation = Activation() user2.activation = activation self.session.add(user1) self.session.add(user2) self.session.commit() request = testing.DummyRequest() new_user = User.get_by_username(request, 'sontek2') new_activation = Activation.get_by_code(request, activation.code) assert activation == new_activation assert new_user.activation == new_activation
def test_get_user_activation(self): from horus.tests.models import Activation from horus.tests.models import User user1 = User(username='******', email='*****@*****.**') user2 = User(username='******', email='*****@*****.**') user1.password = '******' user2.password = '******' activation = Activation() user2.activation = activation self.session.add(user1) self.session.add(user2) self.session.commit() request = testing.DummyRequest() new_user = User.get_by_username(request, 'sontek2') new_activation = Activation.get_by_code(request, activation.code) assert activation == new_activation assert new_user.activation == new_activation