def create_users_data(): staff_user = UserFactory(last_login=now() - timedelta(days=5)) instructor_user = UserFactory(last_login=now() - timedelta(days=5)) course = CourseOverviewFactory(end=now() + timedelta(days=30)) archived_course = CourseOverviewFactory(end=now() - timedelta(days=30)) course_ids = [course.id, archived_course.id] for course_id in course_ids: CourseAccessRoleFactory.create(course_id=course_id, user=staff_user, role="staff") CourseAccessRoleFactory.create(course_id=course_id, user=instructor_user, role="instructor")
def test_get_roles(self): """Create a role for a user, then get it""" expected_role = CourseAccessRoleFactory.create( course_id=self.course.id, user=self.user, role="SuperCoolTestRole", ) roles = data.get_user_roles(self.user.username) assert roles == {expected_role}
def test_get_compliance_deadline_for_user(self): """ Test that the proper deadlines get returned for each user scenario * Staff deadline returns STAFF_USER_COMPLIANCE_DEADLINE * CourseAccessRole Users return ELEVATED_PRIVILEGE_USER_COMPLIANCE_DEADLINE * Everyone else gets GENERAL_USER_COMPLIANCE_DEADLINE """ # Staff user returned the STAFF_USER_COMPLIANCE_DEADLINE user = UserFactory(is_staff=True) self.assertEqual(date1, _get_compliance_deadline_for_user(user)) # User with CourseAccessRole returns the ELEVATED_PRIVILEGE_USER_COMPLIANCE_DEADLINE user = UserFactory() CourseAccessRoleFactory.create(user=user) self.assertEqual(date2, _get_compliance_deadline_for_user(user)) user = UserFactory() self.assertEqual(date3, _get_compliance_deadline_for_user(user))
def test_get_compliance_deadline_for_user_fallbacks(self): """ Test that when some deadlines aren't specified, we cascade from general to specific. """ staff = UserFactory(is_staff=True) privileged = UserFactory() CourseAccessRoleFactory.create(user=privileged) both = UserFactory(is_staff=True) CourseAccessRoleFactory.create(user=both) user = UserFactory() only_general = { 'GENERAL_USER_COMPLIANCE_DEADLINE': date3 } with self.settings(PASSWORD_POLICY_COMPLIANCE_ROLLOUT_CONFIG=only_general): self.assertEqual(date3, _get_compliance_deadline_for_user(staff)) self.assertEqual(date3, _get_compliance_deadline_for_user(privileged)) self.assertEqual(date3, _get_compliance_deadline_for_user(both)) no_staff = { 'ELEVATED_PRIVILEGE_USER_COMPLIANCE_DEADLINE': date2, 'GENERAL_USER_COMPLIANCE_DEADLINE': date3 } with self.settings(PASSWORD_POLICY_COMPLIANCE_ROLLOUT_CONFIG=no_staff): self.assertEqual(date2, _get_compliance_deadline_for_user(both)) self.assertEqual(date2, _get_compliance_deadline_for_user(staff)) no_privileged = { 'STAFF_USER_COMPLIANCE_DEADLINE': date1, 'GENERAL_USER_COMPLIANCE_DEADLINE': date3 } with self.settings(PASSWORD_POLICY_COMPLIANCE_ROLLOUT_CONFIG=no_privileged): self.assertEqual(date1, _get_compliance_deadline_for_user(both)) self.assertEqual(date3, _get_compliance_deadline_for_user(privileged)) only_privileged = { 'ELEVATED_PRIVILEGE_USER_COMPLIANCE_DEADLINE': date2, } with self.settings(PASSWORD_POLICY_COMPLIANCE_ROLLOUT_CONFIG=only_privileged): self.assertEqual(date2, _get_compliance_deadline_for_user(both)) self.assertEqual(date2, _get_compliance_deadline_for_user(staff)) self.assertIsNone(_get_compliance_deadline_for_user(user)) early_elevated = { 'STAFF_USER_COMPLIANCE_DEADLINE': date2, 'ELEVATED_PRIVILEGE_USER_COMPLIANCE_DEADLINE': date1, } with self.settings(PASSWORD_POLICY_COMPLIANCE_ROLLOUT_CONFIG=early_elevated): self.assertEqual(date1, _get_compliance_deadline_for_user(both)) self.assertEqual(date2, _get_compliance_deadline_for_user(staff)) self.assertEqual(date1, _get_compliance_deadline_for_user(privileged)) self.assertIsNone(_get_compliance_deadline_for_user(user)) early_general = { 'STAFF_USER_COMPLIANCE_DEADLINE': date3, 'ELEVATED_PRIVILEGE_USER_COMPLIANCE_DEADLINE': date2, 'GENERAL_USER_COMPLIANCE_DEADLINE': date1, } with self.settings(PASSWORD_POLICY_COMPLIANCE_ROLLOUT_CONFIG=early_general): self.assertEqual(date1, _get_compliance_deadline_for_user(both)) self.assertEqual(date1, _get_compliance_deadline_for_user(staff)) self.assertEqual(date1, _get_compliance_deadline_for_user(privileged)) self.assertEqual(date1, _get_compliance_deadline_for_user(user))