def test_reset_password_valid_user(self): from horus.views import ForgotPasswordController from hem.interfaces import IDBSession from horus.events import PasswordResetEvent from pyramid_mailer.interfaces import IMailer from pyramid_mailer.mailer import DummyMailer from horus.models import crypt from horus.interfaces import IHorusUserClass from horus.interfaces import IHorusActivationClass from horus.tests.models import User from horus.tests.models import Activation self.config.registry.registerUtility(User, IHorusUserClass) self.config.registry.registerUtility(Activation, IHorusActivationClass) self.config.add_route('index', '/') self.config.include('horus') self.config.registry.registerUtility(DummyMailer(), IMailer) user = User(username='******', email='*****@*****.**') user.set_password('foo') user.activation = Activation() self.session.add(user) self.session.flush() request = self.get_csrf_request(post={ 'Password': { 'Password': '******', 'Password-confirm': 'test123', }, }, request_method='POST') request.matchdict = Mock() get = Mock() get.return_value = user.activation.code request.matchdict.get = get request.user = None flash = Mock() request.session.flash = flash def handle_password_reset(event): request = event.request session = request.registry.getUtility(IDBSession) session.commit() self.config.add_subscriber(handle_password_reset, PasswordResetEvent) view = ForgotPasswordController(request) response = view.reset_password() assert not crypt.check(user.password, 'temp' + user.salt) assert response.status_int == 302
def test_profile_update_password(self): from horus.views import ProfileController from hem.interfaces import IDBSession from horus.events import ProfileUpdatedEvent from horus.models import crypt 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.add_route('index', '/') self.config.include('horus') user = User(username='******', email='*****@*****.**') user.password = '******' self.session.add(user) self.session.flush() def handle_profile_updated(event): request = event.request session = request.registry.getUtility(IDBSession) session.commit() self.config.add_subscriber(handle_profile_updated, ProfileUpdatedEvent) request = self.get_csrf_request(post={ 'email': '*****@*****.**', 'password': { 'password': '******', 'password-confirm': 'test123', }, }, request_method='POST') request.context = user request.matchdict = Mock() get = Mock() get.return_value = user.id request.matchdict.get = get flash = Mock() request.session.flash = flash view = ProfileController(request) view.edit_profile() new_user = User.get_by_id(request, user.id) assert new_user.email == '*****@*****.**' assert not crypt.check(user.password, 'temp' + user.salt)
def test_reset_password_valid_user(self): from horus.views import ForgotPasswordController from hem.interfaces import IDBSession from horus.events import PasswordResetEvent from pyramid_mailer.interfaces import IMailer from pyramid_mailer.mailer import DummyMailer from horus.models import crypt from horus.interfaces import IUserClass from horus.interfaces import IActivationClass from horus.tests.models import User from horus.tests.models import Activation self.config.registry.registerUtility(User, IUserClass) self.config.registry.registerUtility(Activation, IActivationClass) self.config.add_route('index', '/') self.config.include('horus') self.config.registry.registerUtility(DummyMailer(), IMailer) user = User(username='******', email='*****@*****.**') user.password = '******' user.activation = Activation() self.session.add(user) self.session.flush() request = self.get_csrf_request(post={ 'password': { 'password': '******', 'password-confirm': 'test123', }, }, request_method='POST') request.matchdict = Mock() get = Mock() get.return_value = user.activation.code request.matchdict.get = get request.user = None def handle_password_reset(event): request = event.request session = request.registry.getUtility(IDBSession) session.commit() self.config.add_subscriber(handle_password_reset, PasswordResetEvent) view = ForgotPasswordController(request) response = view.reset_password() assert not crypt.check(user.password, 'temp' + user.salt) assert response.status_int == 302
def test_profile_update_password(self): from horus.views import ProfileController from hem.interfaces import IDBSession from horus.events import ProfileUpdatedEvent from horus.models import crypt 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.add_route('index', '/') self.config.include('horus') user = User(username='******', email='*****@*****.**') user.password = '******' self.session.add(user) self.session.flush() def handle_profile_updated(event): request = event.request session = request.registry.getUtility(IDBSession) session.commit() self.config.add_subscriber(handle_profile_updated, ProfileUpdatedEvent) request = self.get_csrf_request(post={ 'email': '*****@*****.**', 'password': { 'password': '******', 'password-confirm': 'test123', }, }, request_method='POST') request.context = user request.matchdict = Mock() get = Mock() get.return_value = user.id request.matchdict.get = get view = ProfileController(request) view.edit_profile() new_user = User.get_by_id(request, user.id) assert new_user.email == '*****@*****.**' assert not crypt.check(user.password, 'temp' + user.salt)