def test_deactivate_account(self): user = RegisterHelper.create_user() RegisterHelper.fill_login_form(self.selenium, self.login_url) RegisterHelper.submit_login_form(self.selenium) self.selenium.get(self.profile_url) # show deactivation popup self.selenium.find_element_by_xpath('//button[@name="_deactivate_account"]').click() # wait for popup deactivate_button = WebDriverWait(self.selenium, 10).until( EC.visibility_of_element_located((By.ID, "deactivate_account_button")) ) deactivate_button.click() # reload user to check updates in the model user = get_user_model().objects.get(pk=user.pk) self.assertFalse(user.is_active, "User still active even after clicking on deactivate button") # Test that the user is redirected to home screen self.assertEqual(self.selenium.current_url, '%s/' % self.live_server_url, "Browser is not redirected to home screen after deactivating the user") # Test the user has been logged out self.selenium.get(self.login_redirect_url) self.assertTrue(RegisterHelper.is_login_page(self.selenium, self.live_server_url), "User is still logged in after deactivating his account") # Test the user is not able to login RegisterHelper.fill_login_form(self.selenium, self.login_url) RegisterHelper.submit_login_form(self.selenium) self.assertEqual(self.selenium.current_url, self.inactive_url, "User is not redirected to inactive URL when trying to login")
def test_update_personal_information(self): user = RegisterHelper.create_user() RegisterHelper.fill_login_form(self.selenium, self.login_url) RegisterHelper.submit_login_form(self.selenium) first_name = "new first name" last_name = "new last name" self.selenium.get(self.profile_url) self.selenium.find_element_by_id('id_first_name').send_keys(first_name) self.selenium.find_element_by_id('id_last_name').send_keys(last_name) self._save_profile() # check the if the form was updated correctly or not self.assertEqual(self.selenium.current_url, self.profile_url, "Failed to redirect to profile page after submit") self.assertEqual( self.selenium.find_element_by_id('id_first_name').get_attribute( 'value'), first_name, "Failed to update first name in profile form") self.assertEqual( self.selenium.find_element_by_id('id_last_name').get_attribute( 'value'), last_name, "Failed to update last name in profile form") # reload user to check updates in the model user = get_user_model().objects.get(pk=user.pk) self.assertEqual(user.first_name, first_name, "Failed to update first name in user model") self.assertEqual(user.last_name, last_name, "Failed to update last name in user model")
def test_update_notifications(self): user = RegisterHelper.create_user() RegisterHelper.fill_login_form(self.selenium, self.login_url) RegisterHelper.submit_login_form(self.selenium) # Get the notification profile mailer_profile = user.mailer_profile mailer_profile.notify_report_accepted = True mailer_profile.save() self.selenium.get(self.profile_url) self.selenium.find_element_by_id('id_notify_report_accepted').click() self._save_profile() # check the if the form was updated correctly or not self.assertEqual(self.selenium.current_url, self.profile_url, "Failed to redirect to profile page after submit") self.assertFalse( self.selenium.find_element_by_id( 'id_notify_report_accepted').is_selected(), "Failed to deselect notification option") # reload user to check updates in the model user = get_user_model().objects.get(pk=user.pk) mailer_profile = user.mailer_profile self.assertFalse( mailer_profile.notify_report_accepted, "Failed to update notification option in mailer model")
def test_rest_token(self): user = RegisterHelper.create_user() RegisterHelper.fill_login_form(self.selenium, self.login_url) RegisterHelper.submit_login_form(self.selenium) # This user should not have REST token when he is created assert Token.objects.filter(user=user).exists() == False, "User should not have REST token right after creation" # User without a token should not see the Token field or button in his profile self.selenium.get(self.profile_url) self.assertFalse(self.selenium.find_elements_by_id('id_rest_token'), "REST token is visible even though the user doesn't have one!") self.assertFalse(self.selenium.find_elements_by_id('id_rest_token_submit'), "REST token is visible even though the user doesn't have one!") # Create REST token for the user token = Token.objects.create(user=user) old_key = token.key # User with a token should see the Token field or button in his profile self.selenium.get(self.profile_url) self.assertTrue(self.selenium.find_elements_by_id('id_rest_token'), "REST token is not visible even though the user have one!") self.assertTrue(self.selenium.find_elements_by_id('id_rest_token_submit'), "REST token is not visible even though the user have one!") # Request change REST token self.selenium.find_element_by_id('id_rest_token_submit').click() self.assertEqual(self.selenium.current_url, self.profile_url, "Failed to redirect to profile page after REST token change") # Test the token has been updated new_token = Token.objects.filter(user=user)[0] self.assertNotEqual(old_key, new_token.key, "Failed to change REST token") # Test the user has been notified by email when the token was changed self.assertEqual(len(mail.outbox), 1, 'Token changed email failed to send')
def test_approve_request(self): # Create admin RegisterHelper.create_superuser() RegisterHelper.fill_login_form(self.selenium, self.login_url, admin=True) RegisterHelper.submit_login_form(self.selenium) # Create user user = RegisterHelper.create_user(approved=False) # Get EmailAddress URL email_obj = EmailAddress.objects.filter(user=user)[0] assert email_obj.admin_approval != 'approved', 'EmailAddress is already approved when created!' email_url = reverse('admin:account_emailaddress_change', args=[email_obj.id]) email_url = '%s%s' % (self.live_server_url, email_url) self.selenium.get(email_url) self.selenium.find_element_by_xpath( '//input[@name="_approve"]').click() self.assertEqual(self.selenium.current_url, email_url) # Reload email_obj email_obj = EmailAddress.objects.get(pk=email_obj.pk) self.assertEqual(email_obj.admin_approval, 'approved', 'Failed to approve EmailAddress')
def setUp(self): # Call the setUp() of parent class. super(MUOTestBase, self).setUp() # Launch a browser. self.browser = webdriver.Firefox() self.browser.implicitly_wait( SELENIUM_WEB_ELEMENT_PRESENCE_CHECK_TIMEOUT) # Create test data. self._set_up_test_data() # Create the user. user = RegisterHelper.create_user() # Assign user's permissions. self._assign_user_permissions(user)
def test_reject_request(self): # Create admin RegisterHelper.create_superuser() RegisterHelper.fill_login_form(self.selenium, self.login_url, admin=True) RegisterHelper.submit_login_form(self.selenium) # Create user user = RegisterHelper.create_user(approved=False) # Get EmailAddress URL email_obj = EmailAddress.objects.filter(user=user)[0] assert email_obj.admin_approval != 'rejected', 'EmailAddress is already rejected when created!' email_url = reverse('admin:account_emailaddress_change', args=[email_obj.id]) email_url = '%s%s' % (self.live_server_url, email_url) self.selenium.get(email_url) # show rejection popup self.selenium.find_element_by_xpath( '//button[@name="_reject"]').click() # wait for popup reject_textarea = WebDriverWait(self.selenium, 10).until( EC.visibility_of_element_located((By.ID, "reject_reason_text"))) reject_button = self.selenium.find_element_by_xpath( '//input[@name="_reject"]') self.assertFalse( reject_button.is_enabled(), 'Reject button is enabled even though reject reason is empty') reject_reason = "These are more than 15 characters" reject_textarea.send_keys(reject_reason) self.assertTrue( reject_button.is_enabled(), 'Reject button is disabled even after filling reject reason') reject_button.click() self.assertEqual(self.selenium.current_url, email_url) # Reload email_obj email_obj = EmailAddress.objects.get(pk=email_obj.pk) self.assertEqual(email_obj.admin_approval, 'rejected', 'Failed to reject EmailAddress') self.assertEqual(email_obj.reject_reason, reject_reason, 'Failed to update reject reason')