From 91b0e0c9cd71f50f6937630fa7b6b43eb9434a84 Mon Sep 17 00:00:00 2001 From: Feanil Patel Date: Wed, 26 Feb 2020 09:47:46 -0500 Subject: [PATCH] Don't UI test studio course team page. --- .../tests/studio/test_studio_course_team.py | 388 ------------------ 1 file changed, 388 deletions(-) delete mode 100644 common/test/acceptance/tests/studio/test_studio_course_team.py diff --git a/common/test/acceptance/tests/studio/test_studio_course_team.py b/common/test/acceptance/tests/studio/test_studio_course_team.py deleted file mode 100644 index acfcb49b57..0000000000 --- a/common/test/acceptance/tests/studio/test_studio_course_team.py +++ /dev/null @@ -1,388 +0,0 @@ -""" -Acceptance tests for course in studio -""" - - -from common.test.acceptance.pages.common.auto_auth import AutoAuthPage -from common.test.acceptance.pages.studio.index import DashboardPage -from common.test.acceptance.pages.studio.users import CourseTeamPage -from common.test.acceptance.tests.studio.base_studio_test import StudioCourseTest - - -class CourseTeamPageTest(StudioCourseTest): - """ As a course author, I want to be able to add others to my team """ - shard = 2 - - def _make_user(self, username): - """ Registers user and returns user representation dictionary as expected by `log_in` function """ - user = { - 'username': username, - 'email': username + "@example.com", - 'password': username + '123$%^' - } - AutoAuthPage( - self.browser, no_login=True, - username=user.get('username'), email=user.get('email'), password=user.get('password') - ).visit() - return user - - def _update_user(self, user_info): - """ - Update user with provided `user_info` - - Arguments: - `user_info`: dictionary containing values of attributes to be updated - """ - AutoAuthPage( - self.browser, no_login=True, **user_info - ).visit() - - def setUp(self, is_staff=False): - """ - Install a course with no content using a fixture. - """ - super(CourseTeamPageTest, self).setUp(is_staff) - - self.other_user = self._make_user('other') - self.dashboard_page = DashboardPage(self.browser) - self.page = CourseTeamPage( - self.browser, self.course_info['org'], self.course_info['number'], self.course_info['run'] - ) - self._go_to_course_team_page() - - def _go_to_course_team_page(self): - """ Opens Course Team page """ - self.page.visit() - self.page.wait_until_no_loading_indicator() - - def _refresh_page(self): - """ - Reload the page. - """ - self.page = CourseTeamPage( - self.browser, self.course_info['org'], self.course_info['number'], self.course_info['run'] - ) - self._go_to_course_team_page() - - def _assert_current_course(self, visible=True): - """ Checks if current course is accessible to current user """ - self.dashboard_page.visit() - courses = self.dashboard_page.list_courses() - - def check_course_equality(course1, course2): - """ Compares to course dictionaries using org, number and run as keys""" - return ( - course1['org'] == course2['display_organization'] and - course1['number'] == course2['display_coursenumber'] and - course1['run'] == course2['run'] - ) - - actual_visible = any((check_course_equality(course, self.course_info) for course in courses)) - - self.assertEqual(actual_visible, visible) - - def _assert_user_present(self, user, present=True): - """ Checks if specified user present on Course Team page """ - if present: - self.page.wait_for( - lambda: user.get('username') in self.page.usernames, - description="Wait for user to be present" - ) - else: - self.page.wait_for( - lambda: user.get('username') not in self.page.usernames, - description="Wait for user to be absent" - ) - - def _should_see_dialog(self, dialog_type, dialog_message): - """ Asserts dialog with specified message is shown """ - self.page.modal_dialog_visible(dialog_type) - self.assertIn(dialog_message, self.page.modal_dialog_text(dialog_type)) - - def _assert_is_staff(self, user, can_manage=True): - """ Checks if user have staff permissions, can be promoted and can't be demoted """ - self.assertIn("staff", user.role_label.lower()) - if can_manage: - self.assertTrue(user.can_promote) - self.assertFalse(user.can_demote) - self.assertIn("Add Admin Access", user.promote_button_text) - - def _assert_is_admin(self, user): - """ Checks if user have admin permissions, can't be promoted and can be demoted """ - self.assertIn("admin", user.role_label.lower()) - self.assertFalse(user.can_promote) - self.assertTrue(user.can_demote) - self.assertIn("Remove Admin Access", user.demote_button_text) - - def _assert_can_manage_users(self): - """ Checks if current user can manage course team """ - self.assertTrue(self.page.has_add_button) - for user in self.page.users: - self.assertTrue(user.can_promote or user.can_demote) # depending on actual user role - self.assertTrue(user.can_delete) - - def _assert_can_not_manage_users(self): - """ Checks if current user can't manage course team """ - self.assertFalse(self.page.has_add_button) - for user in self.page.users: - self.assertFalse(user.can_promote) - self.assertFalse(user.can_demote) - self.assertFalse(user.can_delete) - - def test_admins_can_add_other_users(self): - """ - Scenario: Admins can add other users - Given I have opened a new course in Studio - And I am viewing the course team settings - When I add other user to the course team - And other user logs in - Then he does see the course on her page - """ - self.page.add_user_to_course(self.other_user.get('email')) - self._assert_user_present(self.other_user, present=True) - self.log_in(self.other_user) - self._assert_current_course(visible=True) - - def test_added_users_cannot_add_or_delete_other_users(self): - """ - Scenario: Added users cannot delete or add other users - Given I have opened a new course in Studio - And I am viewing the course team settings - When I add other user to the course team - And other user logs in - And he selects the new course - And he views the course team settings - Then he cannot manage users - """ - self.page.add_user_to_course(self.other_user.get('email')) - self._assert_user_present(self.other_user, present=True) - - self.log_in(self.other_user) - self._assert_current_course(visible=True) - self._go_to_course_team_page() - - bob = self.page.get_user(self.other_user.get('email')) - self.assertTrue(bob.is_current_user) - self.assertFalse(self.page.has_add_button) - - self._assert_can_not_manage_users() - - def test_admins_can_delete_other_users(self): - """ - Scenario: Admins can delete other users - Given I have opened a new course in Studio - And I am viewing the course team settings - When I add other user to the course team - And I delete other user from the course team - And other user logs in - Then he does not see the course on her page - """ - self.page.add_user_to_course(self.other_user.get('email')) - self._assert_user_present(self.other_user, present=True) - self.page.delete_user_from_course(self.other_user.get('email')) - self._assert_user_present(self.other_user, present=False) - - self.log_in(self.other_user) - self._assert_current_course(visible=False) - - def test_admins_can_delete_other_inactive_users(self): - """ - Scenario: Admins can delete other inactive users - Given I have opened a new course in Studio - And I am viewing the course team settings. - When I add other user to the course team, - And then delete that other user from the course team. - And other user logs in - Then he/she does not see the course on page - """ - self.page.add_user_to_course(self.other_user.get('email')) - self._assert_user_present(self.other_user, present=True) - - # inactivate user - user_info = { - 'username': self.other_user.get('username'), - 'email': self.other_user.get('email'), - 'password': self.other_user.get('password'), - 'is_active': False - } - self._update_user(user_info) - - # go to course team page to perform delete operation - self._go_to_course_team_page() - self.page.delete_user_from_course(self.other_user.get('email')) - - self._assert_user_present(self.other_user, present=False) - - def test_admins_cannot_add_users_that_do_not_exist(self): - """ - Scenario: Admins cannot add users that do not exist - Given I have opened a new course in Studio - And I am viewing the course team settings - When I add "dennis" to the course team - Then I should see "Could not find user by email address" somewhere on the page - """ - self.page.add_user_to_course("dennis@example.com") - self._should_see_dialog('error', "Could not find user by email address") - - def test_admins_should_be_able_to_make_other_people_into_admins(self): - """ - Scenario: Admins should be able to make other people into admins - Given I have opened a new course in Studio - And I am viewing the course team settings - And I add other user to the course team - When I make other user a course team admin - And other user logs in - And he selects the new course - And he views the course team settings - Then other user should be marked as an admin - And he can manage users - """ - self.page.add_user_to_course(self.other_user.get('email')) - self._assert_user_present(self.other_user, present=True) - - other = self.page.get_user(self.other_user.get('email')) - self._assert_is_staff(other) - other.click_promote() - self._refresh_page() - self._assert_is_admin(other) - - self.log_in(self.other_user) - self._go_to_course_team_page() - other = self.page.get_user(self.other_user.get('email')) - self.assertTrue(other.is_current_user) - self._assert_can_manage_users() - - def test_admins_should_be_able_to_remove_other_admins(self): - """ - Scenario: Admins should be able to remove other admins - Given I have opened a new course in Studio - And I grant admin rights to other user - Then he can add, delete, promote and demote users - And I am viewing the course team settings - When I remove admin rights from other user - And other user logs in - And he selects the new course - And he views the course team settings - Then other user should not be marked as an admin - And he cannot manage users - """ - self.page.add_user_to_course(self.other_user.get('email')) - self._assert_user_present(self.other_user, present=True) - - other = self.page.get_user(self.other_user.get('email')) - self._assert_is_staff(other) - other.click_promote() - self._refresh_page() - other = self.page.get_user(self.other_user.get('email')) - self._assert_is_admin(other) - - # precondition check - frank is an admin and can add/delete/promote/demote users - self.log_in(self.other_user) - self._go_to_course_team_page() - other = self.page.get_user(self.other_user.get('email')) - self.assertTrue(other.is_current_user) - self._assert_can_manage_users() - - self.log_in(self.user) - self._go_to_course_team_page() - other = self.page.get_user(self.other_user.get('email')) - other.click_demote() - self._refresh_page() - other = self.page.get_user(self.other_user.get('email')) - self._assert_is_staff(other) - - self.log_in(self.other_user) - self._go_to_course_team_page() - other = self.page.get_user(self.other_user.get('email')) - self.assertTrue(other.is_current_user) - self._assert_can_not_manage_users() - - def test_admins_should_be_able_to_remove_themself_if_other_admin_exists(self): - """ - Scenario: Admins should be able to give course ownership to someone else - Given I have opened a new course in Studio - And I am viewing the course team settings - And I'm the only course admin - Then I cannot delete or demote myself - When I add other user to the course team - And I make other user a course team admin - Then I can delete or demote myself - When I delete myself from the course team - And I am logged into studio - Then I do not see the course on my page - """ - self.page.add_user_to_course(self.other_user.get('email')) - self._assert_user_present(self.other_user, present=True) - - current = self.page.get_user(self.user.get('email')) - self.assertFalse(current.can_demote) - self.assertFalse(current.can_delete) - self.assertIn("Promote another member to Admin to remove your admin rights", current.no_change_warning_text) - - other = self.page.get_user(self.other_user.get('email')) - other.click_promote() - self._refresh_page() - other = self.page.get_user(self.other_user.get('email')) - self._assert_is_admin(other) - - current = self.page.get_user(self.user.get('email')) - self.assertTrue(current.can_demote) - self.assertTrue(current.can_delete) - current.click_delete() - - self.log_in(self.user) - self._assert_current_course(visible=False) - - def test_admins_should_be_able_to_give_course_ownership_to_someone_else(self): - """ - Scenario: Admins should be able to give course ownership to someone else - Given I have opened a new course in Studio - And I am viewing the course team settings - When I add other user to the course team - And I make other user a course team admin - When I remove admin rights from myself - Then I should not be marked as an admin - And I cannot manage users - And I cannot make myself a course team admin - When other user logs in - And he selects the new course - And he views the course team settings - And he deletes me from the course team - And I am logged into studio - Then I do not see the course on my page - """ - self.page.add_user_to_course(self.other_user.get('email')) - self._assert_user_present(self.other_user, present=True) - - current = self.page.get_user(self.user.get('email')) - self.assertFalse(current.can_demote) - self.assertFalse(current.can_delete) - self.assertIn("Promote another member to Admin to remove your admin rights", current.no_change_warning_text) - - other = self.page.get_user(self.other_user.get('email')) - other.click_promote() - self._refresh_page() - - other = self.page.get_user(self.other_user.get('email')) - self._assert_is_admin(other) - - current = self.page.get_user(self.user.get('email')) - self.assertTrue(current.can_demote) - self.assertTrue(current.can_delete) - current.click_demote() - self._refresh_page() - current = self.page.get_user(self.user.get('email')) - self._assert_is_staff(current, can_manage=False) - self._assert_can_not_manage_users() - self.assertFalse(current.can_promote) - - self.log_in(self.other_user) - self._go_to_course_team_page() - - current = self.page.get_user(self.user.get('email')) - current.click_delete() - self._refresh_page() - self._assert_user_present(self.user, present=False) - - self.log_in(self.user) - self._assert_current_course(visible=False)