def register_post(self): vm = RegisterViewModel() vm.from_dict(self.request.POST) vm.validate() if vm.error: return vm.to_dict() account = AccountService.find_account_by_email(vm.email) if account: vm.error = ( "An account with this email already exists. " "Please log in instead." ) return vm.to_dict() account = AccountService.create_account( vm.email, vm.first_name, vm.last_name, vm.password, vm.twitter ) print("Registered new user: "******"Registered new NFLPool user: {account.first_name} {account.last_name} {account.email}" print(message) SlackService.send_message(message) # send welcome email EmailService.send_welcome_email(account.email) # redirect print("Redirecting to account index page...") self.redirect("/account")
def test_register_validation_valid(self): # 3 A's of test: Arrange, Act, then Assert # Arrange from nflpool.viewmodels.register_viewmodel import RegisterViewModel from nflpool.data.account import Account data = { "first_name": "Paul", "last_name": "Cutler", "email": "*****@*****.**", "password": "******", "confirm_password": "******", } # noinspection PyTypeChecker vm = RegisterViewModel() vm.from_dict(data) # Act target = "nflpool.services.account_service.AccountService.find_account_by_email" with unittest.mock.patch(target, return_value=Account()): vm.validate() # Assert: self.assertIsNone(vm.error)
def test_register_validation_existing_user(self): # Arrange from nflpool.viewmodels.register_viewmodel import RegisterViewModel from nflpool.data.account import Account data = {"email": "*****@*****.**"} # noinspection PyTypeChecker vm = RegisterViewModel() vm.from_dict(data) # Act target = "nflpool.services.account_service.AccountService.find_account_by_email" with unittest.mock.patch(target, return_value=Account()): vm.validate() # Assert: self.assertIsNotNone(vm.error) self.assertTrue("exist" in vm.error)
def test_register_validation_no_email(): # Arrange from nflpool.viewmodels.register_viewmodel import RegisterViewModel data = { "first_name": "Paul", "last_name": "Cutler", "email": "", "password": "******", "confirm_password": "******", } # noinspection PyTypeChecker vm = RegisterViewModel() vm.from_dict(data) # Act vm.validate() # Assert: assert vm.error is not None assert "email" in vm.error is True
def test_register_validation_no_password(self): # Arrange from nflpool.viewmodels.register_viewmodel import RegisterViewModel data = { "first_name": "Paul", "last_name": "Cutler", "email": "*****@*****.**", "password": "", "confirm_password": "", } # noinspection PyTypeChecker vm = RegisterViewModel() vm.from_dict(data) # Act vm.validate() # Assert: self.assertIsNotNone(vm.error) self.assertTrue("password" in vm.error)
def register_get(self): vm = RegisterViewModel() return vm.to_dict()