def test_cannot_create_two_users_with_same_email(self): email = '*****@*****.**' user = User(email=email) self.user_repo.create_unconfirmed_user(user) user2 = User(email=email) with self.assertRaises(AlreadyExistsException): self.user_repo.create_unconfirmed_user(user2)
def create_ready_to_use_user(self): email = '%s@%s.com' % (uuid.uuid4(), TestCase.get_and_increment_random_index()) password = str(uuid.uuid4()) new_user = User(email=email) self.user_repo.create_unconfirmed_user(new_user) self.user_repo.confirm_user(email=new_user.email, confirmation_code=new_user.confirmation_code) self.user_repo.set_password(email=new_user.email, password=password, confirmation_code=new_user.confirmation_code) return TestUser(email, password)
def test_cannot_log_in_if_password_not_set(self): email = '*****@*****.**' password = '******' new_user = User(email=email) self.user_repo.create_unconfirmed_user(new_user) self.user_repo.confirm_user( email=email, confirmation_code=new_user.confirmation_code) with self.assertRaises(BadLoginException): self.user_repo.authenticate(email=email, password='')
def test_creates_unconfirmed_user(self): email = '*****@*****.**' new_user = User(email=email) self.user_repo.create_unconfirmed_user(new_user) with self.assertRaises(MissingValueException): self.user_repo.get_user(email) returned_user = self.user_repo.get_unconfirmed_user(email) self.assertEquals(returned_user.email, email) self.assertEquals(returned_user.status, UserStatus.UNCONFIRMED)
def test_cannot_set_password_without_confirmation_code_if_unconfirmed( self): email = '*****@*****.**' password = '******' new_user = User(email=email) self.user_repo.create_unconfirmed_user(new_user) with self.assertRaises(IllegalArgumentException): self.user_repo.set_password(email=new_user.email, password=password)
def post(self): POST = self.request.POST email = POST['email'] user = User(email=email) try: self.user_repo.create_unconfirmed_user(user=user, send_email=True) response = self.redirect(Url().for_page('signedup')) return response except AlreadyExistsException: self.write_template('signup', {'title': 'Givabit - Sign up', 'success': False, 'error': 'User already exists'})
def test_can_log_in(self): email = '*****@*****.**' password = '******' new_user = User(email=email) self.user_repo.create_unconfirmed_user(new_user) self.user_repo.set_password( email=new_user.email, password=password, confirmation_code=new_user.confirmation_code) self._assert_can_log_in(new_user, password)
def test_confirms_user(self): email = '*****@*****.**' new_user = User(email=email) self.user_repo.create_unconfirmed_user(new_user) with self.assertRaises(IncorrectConfirmationCodeException): self.user_repo.confirm_user(email=email, confirmation_code='wrong_code') confirmation_code = new_user.confirmation_code self.user_repo.confirm_user(email=email, confirmation_code=confirmation_code) self.assertEquals(self.user_repo.get_user(email), new_user)
def test_fails_if_email_already_exists(self): email = '*****@*****.**' user = User(email=email) self.user_repo.create_unconfirmed_user(user) request = webapp2.Request.blank(Url().for_page('signup')) request.method = 'POST' request.POST['email'] = email response = webapp2.Response() SignupPage(request=request, response=response).post() self.assertIn('already exists', response.body)
def test_user_confirmation_mail_contains_confirmation_code(self): confirmation_code = str(uuid.uuid4()) email = '*****@*****.**' % str(uuid.uuid4()) user = User(email=email, confirmation_code=confirmation_code) EmailService().send_user_confirmation_mail(user) messages = self.mail_stub.get_sent_messages() self.assertEquals(len(messages), 1) message = messages[0] self.assertEquals(message.to, email) self.assertIn( Url().for_page('confirmation', confirmation_code=confirmation_code, email=email), str(message.body))
def test_cannot_set_password_with_wrong_second_confirmation(self): email = '*****@*****.**' password = '******' new_user = User(email=email) self.user_repo.create_unconfirmed_user(new_user) self.user_repo.confirm_user( email=email, confirmation_code=new_user.confirmation_code) self.user_repo.confirm_user( email=email, confirmation_code=new_user.confirmation_code) with self.assertRaises(IncorrectConfirmationCodeException): self.user_repo.set_password(email=new_user.email, password=password, confirmation_code='wrong')
def test_can_change_password(self): email = '*****@*****.**' old_password = '******' new_password = '******' new_user = User(email=email) self.user_repo.create_unconfirmed_user(new_user) self.user_repo.set_password( email=new_user.email, password=old_password, confirmation_code=new_user.confirmation_code) self.user_repo.set_password(email=new_user.email, password=new_password, old_password=old_password) with self.assertRaises(BadLoginException): self.user_repo.authenticate(email=email, password=old_password) self._assert_can_log_in(new_user, new_password)
def test_cannot_set_password_without_existing_password_if_confirmed(self): email = '*****@*****.**' old_password = '******' new_password = '******' new_user = User(email=email) self.user_repo.create_unconfirmed_user(new_user) confirmation_code = new_user.confirmation_code self.user_repo.set_password( email=new_user.email, password=old_password, confirmation_code=new_user.confirmation_code) with self.assertRaises(IllegalArgumentException): self.user_repo.set_password( email=new_user.email, password=new_password, confirmation_code=new_user.confirmation_code) with self.assertRaises(IllegalArgumentException): self.user_repo.set_password(email=new_user.email, password=new_password) self._assert_can_log_in(new_user, old_password)
from givabit.backend.charity import Charity from givabit.backend.user import User c1 = Charity(name='Shelter') c2 = Charity(name='Oxfam') c3 = Charity(name='BHF') c4 = Charity(name='BHF') u1 = User(email='*****@*****.**') u2 = User(email='*****@*****.**') u3 = User(email='*****@*****.**') u4 = User(email='*****@*****.**') u5 = User(email='*****@*****.**')
def test_cannot_log_in_if_unconfirmed(self): email = '*****@*****.**' new_user = User(email=email) self.user_repo.create_unconfirmed_user(new_user) with self.assertRaises(BadLoginException): self.user_repo.authenticate(email=email, password='')