Merge branch 'master' into ri/EDUCATOR-394-disable-self-generation-certificates
This commit is contained in:
@@ -2,7 +2,6 @@
|
||||
Common code shared by course and library fixtures.
|
||||
"""
|
||||
import json
|
||||
import re
|
||||
|
||||
import requests
|
||||
from lazy import lazy
|
||||
@@ -33,22 +32,20 @@ class StudioApiFixture(object):
|
||||
"""
|
||||
# Use auto-auth to retrieve the session for a logged in user
|
||||
session = requests.Session()
|
||||
response = session.get(STUDIO_BASE_URL + "/auto_auth?staff=true")
|
||||
response = session.get(STUDIO_BASE_URL + '/auto_auth?staff=true')
|
||||
|
||||
# Return the session from the request
|
||||
if response.ok:
|
||||
# auto_auth returns information about the newly created user
|
||||
# capture this so it can be used by by the testcases.
|
||||
user_pattern = re.compile(r'Logged in user {0} \({1}\) with password {2} and user_id {3}'.format(
|
||||
r'(?P<username>\S+)', r'(?P<email>[^\)]+)', r'(?P<password>\S+)', r'(?P<user_id>\d+)'))
|
||||
user_matches = re.match(user_pattern, response.text)
|
||||
if user_matches:
|
||||
self.user = user_matches.groupdict()
|
||||
# Capture the details of the authenticated user
|
||||
self.user = response.json()
|
||||
|
||||
if not self.user:
|
||||
raise StudioApiLoginError('Auto-auth failed. Response was: {}'.format(self.user))
|
||||
|
||||
return session
|
||||
|
||||
else:
|
||||
msg = "Could not log in to use Studio restful API. Status code: {0}".format(response.status_code)
|
||||
msg = 'Could not log in to use Studio restful API. Status code: {0}'.format(response.status_code)
|
||||
raise StudioApiLoginError(msg)
|
||||
|
||||
@lazy
|
||||
|
||||
@@ -1,26 +1,28 @@
|
||||
"""
|
||||
Auto-auth page (used to automatically log in during testing).
|
||||
"""
|
||||
|
||||
import re
|
||||
import json
|
||||
import os
|
||||
import urllib
|
||||
|
||||
from bok_choy.page_object import XSS_INJECTION, PageObject, unguarded
|
||||
|
||||
from common.test.acceptance.pages.lms import AUTH_BASE_URL
|
||||
# The URL used for user auth in testing
|
||||
AUTH_BASE_URL = os.environ.get('test_url', 'http://localhost:8031')
|
||||
|
||||
|
||||
class AutoAuthPage(PageObject):
|
||||
"""
|
||||
The automatic authorization page.
|
||||
When allowed via the django settings file, visiting
|
||||
this url will create a user and log them in.
|
||||
|
||||
When enabled via the Django settings file, visiting this url will create a user and log them in.
|
||||
"""
|
||||
|
||||
CONTENT_REGEX = r'.+? user (?P<username>\S+) \((?P<email>.+?)\) with password \S+ and user_id (?P<user_id>\d+)$'
|
||||
# Internal cache for parsed user info.
|
||||
_user_info = None
|
||||
|
||||
def __init__(self, browser, username=None, email=None, password=None, full_name=None, staff=None, course_id=None,
|
||||
enrollment_mode=None, roles=None, is_active=None):
|
||||
def __init__(self, browser, username=None, email=None, password=None, full_name=XSS_INJECTION, staff=False, course_id=None,
|
||||
enrollment_mode=None, roles=None, no_login=False, is_active=True, course_access_roles=None):
|
||||
"""
|
||||
Auto-auth is an end-point for HTTP GET requests.
|
||||
By default, it will create accounts with random user credentials,
|
||||
@@ -39,33 +41,36 @@ class AutoAuthPage(PageObject):
|
||||
# This will eventually hold the details about the user account
|
||||
self._user_info = None
|
||||
|
||||
# Create query string parameters if provided
|
||||
self._params = {}
|
||||
course_access_roles = course_access_roles or []
|
||||
course_access_roles = ','.join(course_access_roles)
|
||||
|
||||
if username is not None:
|
||||
self._params = {
|
||||
'full_name': full_name,
|
||||
'staff': staff,
|
||||
'is_active': is_active,
|
||||
'course_access_roles': course_access_roles,
|
||||
}
|
||||
|
||||
if username:
|
||||
self._params['username'] = username
|
||||
|
||||
self._params['full_name'] = full_name if full_name is not None else XSS_INJECTION
|
||||
|
||||
if email is not None:
|
||||
if email:
|
||||
self._params['email'] = email
|
||||
|
||||
if password is not None:
|
||||
if password:
|
||||
self._params['password'] = password
|
||||
|
||||
if staff is not None:
|
||||
self._params['staff'] = "true" if staff else "false"
|
||||
|
||||
if course_id is not None:
|
||||
if course_id:
|
||||
self._params['course_id'] = course_id
|
||||
|
||||
if enrollment_mode:
|
||||
self._params['enrollment_mode'] = enrollment_mode
|
||||
|
||||
if roles is not None:
|
||||
if roles:
|
||||
self._params['roles'] = roles
|
||||
|
||||
if is_active is not None:
|
||||
self._params['is_active'] = "true" if is_active else "false"
|
||||
if no_login:
|
||||
self._params['no_login'] = True
|
||||
|
||||
@property
|
||||
def url(self):
|
||||
@@ -81,27 +86,16 @@ class AutoAuthPage(PageObject):
|
||||
return url
|
||||
|
||||
def is_browser_on_page(self):
|
||||
return True if self.get_user_info() is not None else False
|
||||
|
||||
@unguarded
|
||||
def get_user_info(self):
|
||||
"""Parse the auto auth page body to extract relevant details about the user that was logged in."""
|
||||
message = self.q(css='BODY').text[0]
|
||||
match = re.match(self.CONTENT_REGEX, message)
|
||||
if not match:
|
||||
return None
|
||||
else:
|
||||
user_info = match.groupdict()
|
||||
user_info['user_id'] = int(user_info['user_id'])
|
||||
return user_info
|
||||
return bool(self.user_info)
|
||||
|
||||
@property
|
||||
@unguarded
|
||||
def user_info(self):
|
||||
"""A dictionary containing details about the user account."""
|
||||
if self._user_info is None:
|
||||
user_info = self.get_user_info()
|
||||
if user_info is not None:
|
||||
self._user_info = self.get_user_info()
|
||||
if not self._user_info:
|
||||
body = self.q(css='BODY').text[0]
|
||||
self._user_info = json.loads(body)
|
||||
|
||||
return self._user_info
|
||||
|
||||
def get_user_id(self):
|
||||
@@ -2,6 +2,3 @@ import os
|
||||
|
||||
# Get the URL of the instance under test
|
||||
BASE_URL = os.environ.get('test_url', 'http://localhost:8003')
|
||||
|
||||
# The URL used for user auth in testing
|
||||
AUTH_BASE_URL = os.environ.get('test_url', 'http://localhost:8031')
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
"""
|
||||
Courseware Boomarks
|
||||
"""
|
||||
|
||||
from common.test.acceptance.pages.common.paging import PaginatedUIMixin
|
||||
from common.test.acceptance.pages.lms.course_page import CoursePage
|
||||
|
||||
|
||||
@@ -1,89 +0,0 @@
|
||||
"""
|
||||
Auto-auth page (used to automatically log in during testing).
|
||||
"""
|
||||
|
||||
import re
|
||||
import urllib
|
||||
|
||||
from bok_choy.page_object import PageObject
|
||||
|
||||
from common.test.acceptance.pages.studio import BASE_URL
|
||||
|
||||
|
||||
class AutoAuthPage(PageObject):
|
||||
"""
|
||||
The automatic authorization page.
|
||||
When allowed via the django settings file, visiting
|
||||
this url will create/update a user and log them in.
|
||||
"""
|
||||
|
||||
def __init__(self, browser, username=None, email=None, password=None,
|
||||
staff=None, course_id=None, roles=None, no_login=None, is_active=None):
|
||||
"""
|
||||
Auto-auth is an end-point for HTTP GET requests.
|
||||
By default, it will create accounts with random user credentials,
|
||||
but you can also specify credentials using querystring parameters.
|
||||
|
||||
Can be used to update an account, call to this end-point with already
|
||||
made account's credentials along with values to update will result into
|
||||
an account update.
|
||||
|
||||
`username`, `email`, and `password` are the user's credentials (strings)
|
||||
`staff` is a boolean indicating whether the user is global staff.
|
||||
`course_id` is the ID of the course to enroll the student in.
|
||||
`is_active` activation status of user
|
||||
Currently, this has the form "org/number/run"
|
||||
|
||||
Note that "global staff" is NOT the same as course staff.
|
||||
"""
|
||||
super(AutoAuthPage, self).__init__(browser)
|
||||
|
||||
# Create query string parameters if provided
|
||||
self._params = {}
|
||||
|
||||
if username is not None:
|
||||
self._params['username'] = username
|
||||
|
||||
if email is not None:
|
||||
self._params['email'] = email
|
||||
|
||||
if password is not None:
|
||||
self._params['password'] = password
|
||||
|
||||
if staff is not None:
|
||||
self._params['staff'] = "true" if staff else "false"
|
||||
|
||||
if course_id is not None:
|
||||
self._params['course_id'] = course_id
|
||||
|
||||
if roles is not None:
|
||||
self._params['roles'] = roles
|
||||
|
||||
if no_login:
|
||||
self._params['no_login'] = True
|
||||
|
||||
if is_active is not None:
|
||||
self._params['is_active'] = 'true' if is_active else 'false'
|
||||
|
||||
@property
|
||||
def url(self):
|
||||
"""
|
||||
Construct the URL.
|
||||
"""
|
||||
url = BASE_URL + "/auto_auth"
|
||||
query_str = urllib.urlencode(self._params)
|
||||
|
||||
if query_str:
|
||||
url += "?" + query_str
|
||||
|
||||
return url
|
||||
|
||||
def is_browser_on_page(self):
|
||||
message = self.q(css='BODY').text[0]
|
||||
match = re.search(r'(Logged in|Created) user ([^$]+) with password ([^$]+) and user_id ([^$]+)$', message)
|
||||
return True if match else False
|
||||
|
||||
def get_user_id(self):
|
||||
message = self.q(css='BODY').text[0].strip()
|
||||
match = re.search(r' user_id ([^$]+)$', message)
|
||||
return match.groups()[0] if match else None
|
||||
@@ -127,7 +127,7 @@ class ComponentVisibilityEditorView(BaseComponentEditorView):
|
||||
"""
|
||||
This returns the message shown at the top of the visibility dialog about the
|
||||
current visibility state (at the time that the dialog was opened).
|
||||
For example, "Current visible to: All Learners and Staff".
|
||||
For example, "Access is restricted to: All Learners and Staff".
|
||||
"""
|
||||
return self.q(css=self._bounded_selector('.visibility-header'))[0].text
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ from bok_choy.web_app_test import with_cache
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, CourseUpdateDesc, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.course_info import CourseInfoPage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.dashboard import DashboardPage
|
||||
|
||||
@@ -4,7 +4,7 @@ Single page performance tests for Studio.
|
||||
from bok_choy.web_app_test import with_cache
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage
|
||||
|
||||
from ..tests.helpers import AcceptanceTest
|
||||
|
||||
@@ -13,12 +13,12 @@ from nose.plugins.attrib import attr
|
||||
from pytz import UTC, utc
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.instructor_dashboard import DataDownloadPage, InstructorDashboardPage
|
||||
from common.test.acceptance.pages.studio.settings_group_configurations import GroupConfigurationsPage
|
||||
from common.test.acceptance.tests.discussion.helpers import CohortTestMixin
|
||||
from common.test.acceptance.tests.helpers import EventsTestMixin, UniqueCourseTest, create_user_partition_json
|
||||
from openedx.core.lib.partitions.partitions import Group
|
||||
from xmodule.partitions.partitions import Group
|
||||
|
||||
|
||||
@attr(shard=8)
|
||||
|
||||
@@ -6,7 +6,7 @@ from uuid import uuid4
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.discussion import DiscussionTabSingleThreadPage, InlineDiscussionPage
|
||||
from common.test.acceptance.tests.discussion.helpers import BaseDiscussionMixin, BaseDiscussionTestCase, CohortTestMixin
|
||||
|
||||
@@ -20,7 +20,7 @@ from common.test.acceptance.fixtures.discussion import (
|
||||
Thread,
|
||||
UserProfileViewFixture
|
||||
)
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.discussion import (
|
||||
DiscussionSortPreferencePage,
|
||||
|
||||
@@ -32,10 +32,10 @@ from selenium.webdriver.support.ui import WebDriverWait
|
||||
from capa.tests.response_xml_factory import MultipleChoiceResponseXMLFactory
|
||||
from common.test.acceptance.fixtures.course import XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common import BASE_URL
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from openedx.core.lib.partitions.partitions import UserPartition
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from openedx.core.lib.tests.assertions.events import EventMatchTolerates, assert_event_matches, is_matching_event
|
||||
from openedx.core.release import RELEASE_LINE, doc_version
|
||||
from xmodule.partitions.partitions import UserPartition
|
||||
|
||||
MAX_EVENTS_IN_FAILURE_OUTPUT = 20
|
||||
|
||||
|
||||
@@ -9,8 +9,8 @@ from bok_choy.page_object import XSS_INJECTION
|
||||
from nose.plugins.attrib import attr
|
||||
from pytz import timezone, utc
|
||||
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.account_settings import AccountSettingsPage
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.dashboard import DashboardPage
|
||||
from common.test.acceptance.tests.helpers import AcceptanceTest, EventsTestMixin
|
||||
|
||||
|
||||
@@ -9,12 +9,11 @@ from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common import BASE_URL
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage as LmsAutoAuthPage
|
||||
from common.test.acceptance.pages.lms.bookmarks import BookmarksPage
|
||||
from common.test.acceptance.pages.lms.course_home import CourseHomePage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage as StudioAutoAuthPage
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage as StudioCourseOutlinePage
|
||||
from common.test.acceptance.tests.helpers import EventsTestMixin, UniqueCourseTest, is_404_page
|
||||
|
||||
@@ -56,7 +55,7 @@ class BookmarksTestMixin(EventsTestMixin, UniqueCourseTest):
|
||||
self.create_course_fixture(num_chapters)
|
||||
|
||||
# Auto-auth register for the course.
|
||||
LmsAutoAuthPage(self.browser, username=self.USERNAME, email=self.EMAIL, course_id=self.course_id).visit()
|
||||
AutoAuthPage(self.browser, username=self.USERNAME, email=self.EMAIL, course_id=self.course_id).visit()
|
||||
|
||||
self.courseware_page.visit()
|
||||
|
||||
@@ -159,7 +158,7 @@ class BookmarksTest(BookmarksTestMixin):
|
||||
|
||||
# Logout and login as staff
|
||||
LogoutPage(self.browser).visit()
|
||||
StudioAutoAuthPage(
|
||||
AutoAuthPage(
|
||||
self.browser, username=self.USERNAME, email=self.EMAIL, course_id=self.course_id, staff=True
|
||||
).visit()
|
||||
|
||||
@@ -171,7 +170,7 @@ class BookmarksTest(BookmarksTestMixin):
|
||||
|
||||
# Logout and login as a student.
|
||||
LogoutPage(self.browser).visit()
|
||||
LmsAutoAuthPage(self.browser, username=self.USERNAME, email=self.EMAIL, course_id=self.course_id).visit()
|
||||
AutoAuthPage(self.browser, username=self.USERNAME, email=self.EMAIL, course_id=self.course_id).visit()
|
||||
|
||||
# Visit courseware as a student.
|
||||
self.courseware_page.visit()
|
||||
@@ -349,7 +348,7 @@ class BookmarksTest(BookmarksTestMixin):
|
||||
self._verify_breadcrumbs(num_units=1)
|
||||
|
||||
LogoutPage(self.browser).visit()
|
||||
LmsAutoAuthPage(
|
||||
AutoAuthPage(
|
||||
self.browser,
|
||||
username=self.USERNAME,
|
||||
email=self.EMAIL,
|
||||
@@ -361,7 +360,7 @@ class BookmarksTest(BookmarksTestMixin):
|
||||
self.update_and_publish_block_display_name(modified_name)
|
||||
|
||||
LogoutPage(self.browser).visit()
|
||||
LmsAutoAuthPage(self.browser, username=self.USERNAME, email=self.EMAIL, course_id=self.course_id).visit()
|
||||
AutoAuthPage(self.browser, username=self.USERNAME, email=self.EMAIL, course_id=self.course_id).visit()
|
||||
|
||||
self.bookmarks_page.visit()
|
||||
self._verify_breadcrumbs(num_units=1, modified_name=modified_name)
|
||||
|
||||
@@ -5,7 +5,7 @@ End-to-end tests for the CCX dashboard.
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.ccx_dashboard_page import CoachDashboardPage
|
||||
from common.test.acceptance.tests.helpers import EventsTestMixin, UniqueCourseTest
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.certificates import CertificateConfigFixture
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, CourseUpdateDesc, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.certificate_page import CertificatePage
|
||||
from common.test.acceptance.pages.lms.course_home import CourseHomePage
|
||||
from common.test.acceptance.pages.lms.course_info import CourseInfoPage
|
||||
|
||||
@@ -4,10 +4,10 @@ Bok choy acceptance tests for conditionals in the LMS
|
||||
|
||||
from capa.tests.response_xml_factory import StringResponseXMLFactory
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.conditional import POLL_ANSWER, ConditionalPage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.problem import ProblemPage
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest
|
||||
|
||||
|
||||
|
||||
@@ -7,9 +7,9 @@ from datetime import datetime
|
||||
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.lms.account_settings import AccountSettingsPage
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.dashboard import DashboardPage
|
||||
from common.test.acceptance.pages.lms.learner_profile import LearnerProfilePage
|
||||
from common.test.acceptance.tests.helpers import AcceptanceTest, EventsTestMixin
|
||||
|
||||
@@ -9,11 +9,11 @@ from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.fixtures.library import LibraryFixture
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.lms.course_home import CourseHomePage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.library import LibraryContentXBlockWrapper
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.studio.library import StudioLibraryContainerXBlockWrapper, StudioLibraryContentEditor
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage as StudioCourseOutlinePage
|
||||
from common.test.acceptance.tests.helpers import TestWithSearchIndexMixin, UniqueCourseTest
|
||||
|
||||
@@ -13,11 +13,11 @@ from flaky import flaky
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, CourseUpdateDesc, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.common.utils import enroll_user_track
|
||||
from common.test.acceptance.pages.lms import BASE_URL
|
||||
from common.test.acceptance.pages.lms.account_settings import AccountSettingsPage
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.course_home import CourseHomePage
|
||||
from common.test.acceptance.pages.lms.course_info import CourseInfoPage
|
||||
from common.test.acceptance.pages.lms.course_wiki import (
|
||||
|
||||
@@ -6,7 +6,7 @@ End-to-end tests for the LMS.
|
||||
from unittest import expectedFailure
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.xblock.acid import AcidView
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest
|
||||
|
||||
@@ -9,11 +9,11 @@ from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures import LMS_BASE_URL
|
||||
from common.test.acceptance.fixtures.course import XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.lms.courseware_search import CoursewareSearchPage
|
||||
from common.test.acceptance.pages.lms.instructor_dashboard import InstructorDashboardPage
|
||||
from common.test.acceptance.pages.lms.staff_view import StaffCoursewarePage
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage as StudioAutoAuthPage
|
||||
from common.test.acceptance.pages.studio.component_editor import ComponentVisibilityEditorView
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage as StudioCourseOutlinePage
|
||||
from common.test.acceptance.pages.studio.settings_group_configurations import GroupConfigurationsPage
|
||||
@@ -54,21 +54,21 @@ class CoursewareSearchCohortTest(ContainerBase):
|
||||
# Create a student who will be in "Cohort A"
|
||||
self.cohort_a_student_username = "cohort_a_" + str(uuid.uuid4().hex)[:12]
|
||||
self.cohort_a_student_email = self.cohort_a_student_username + "@example.com"
|
||||
StudioAutoAuthPage(
|
||||
AutoAuthPage(
|
||||
self.browser, username=self.cohort_a_student_username, email=self.cohort_a_student_email, no_login=True
|
||||
).visit()
|
||||
|
||||
# Create a student who will be in "Cohort B"
|
||||
self.cohort_b_student_username = "cohort_b_" + str(uuid.uuid4().hex)[:12]
|
||||
self.cohort_b_student_email = self.cohort_b_student_username + "@example.com"
|
||||
StudioAutoAuthPage(
|
||||
AutoAuthPage(
|
||||
self.browser, username=self.cohort_b_student_username, email=self.cohort_b_student_email, no_login=True
|
||||
).visit()
|
||||
|
||||
# Create a student who will end up in the default cohort group
|
||||
self.cohort_default_student_username = "cohort_default_student"
|
||||
self.cohort_default_student_email = "cohort_default_student@example.com"
|
||||
StudioAutoAuthPage(
|
||||
AutoAuthPage(
|
||||
self.browser, username=self.cohort_default_student_username,
|
||||
email=self.cohort_default_student_email, no_login=True
|
||||
).visit()
|
||||
@@ -89,8 +89,8 @@ class CoursewareSearchCohortTest(ContainerBase):
|
||||
Logout and login with given credentials.
|
||||
"""
|
||||
LogoutPage(self.browser).visit()
|
||||
StudioAutoAuthPage(self.browser, username=username, email=email,
|
||||
course_id=self.course_id, staff=staff).visit()
|
||||
AutoAuthPage(self.browser, username=username, email=email,
|
||||
course_id=self.course_id, staff=staff).visit()
|
||||
|
||||
def _studio_reindex(self):
|
||||
"""
|
||||
|
||||
@@ -6,9 +6,9 @@ import json
|
||||
import uuid
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.lms.discovery import CourseDiscoveryPage
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.tests.helpers import AcceptanceTest, remove_file
|
||||
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
"""
|
||||
End-to-end tests for the LMS that utilize the course home page and course outline.
|
||||
"""
|
||||
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from ...fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
|
||||
@@ -11,6 +11,7 @@ from flaky import flaky
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from ...fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from ...pages.common.auto_auth import AutoAuthPage
|
||||
from ...pages.common.logout import LogoutPage
|
||||
from ...pages.lms.course_home import CourseHomePage
|
||||
from ...pages.lms.courseware import CoursewarePage, CoursewareSequentialTabPage
|
||||
@@ -21,7 +22,6 @@ from ...pages.lms.problem import ProblemPage
|
||||
from ...pages.lms.progress import ProgressPage
|
||||
from ...pages.lms.staff_view import StaffCoursewarePage
|
||||
from ...pages.lms.track_selection import TrackSelectionPage
|
||||
from ...pages.studio.auto_auth import AutoAuthPage
|
||||
from ...pages.studio.overview import CourseOutlinePage as StudioCourseOutlinePage
|
||||
from ..helpers import EventsTestMixin, UniqueCourseTest, auto_auth, create_multiple_choice_problem
|
||||
|
||||
|
||||
@@ -7,10 +7,10 @@ from flaky import flaky
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.common.utils import click_css
|
||||
from common.test.acceptance.pages.lms.courseware_search import CoursewareSearchPage
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.studio.container import ContainerPage
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage as StudioCourseOutlinePage
|
||||
from common.test.acceptance.pages.studio.utils import add_html_component, type_in_codemirror
|
||||
|
||||
@@ -7,7 +7,7 @@ import datetime
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.dashboard import DashboardPage
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest, generate_course_key
|
||||
|
||||
|
||||
@@ -5,10 +5,10 @@ import json
|
||||
import os
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.common.utils import click_css
|
||||
from common.test.acceptance.pages.lms.dashboard_search import DashboardSearchPage
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.studio.container import ContainerPage
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage as StudioCourseOutlinePage
|
||||
from common.test.acceptance.pages.studio.utils import add_html_component, type_in_codemirror
|
||||
|
||||
@@ -11,7 +11,7 @@ from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.fixtures.edxnotes import EdxNotesFixture, Note, Range
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.course_home import CourseHomePage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.edxnotes import EdxNotesPage, EdxNotesPageNoContent, EdxNotesUnitPage
|
||||
|
||||
@@ -5,10 +5,10 @@ Bok choy acceptance tests for Entrance exams in the LMS
|
||||
from textwrap import dedent
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.course_home import CourseHomePage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.problem import ProblemPage
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest
|
||||
|
||||
|
||||
|
||||
@@ -5,11 +5,11 @@ End-to-end tests for the gating feature.
|
||||
from textwrap import dedent
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.lms.course_home import CourseHomePage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.problem import ProblemPage
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage as StudioCourseOutlinePage
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest
|
||||
|
||||
|
||||
@@ -9,9 +9,9 @@ from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.certificates import CertificateConfigFixture
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.common.utils import enroll_user_track
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.create_mode import ModeCreationPage
|
||||
from common.test.acceptance.pages.lms.dashboard import DashboardPage
|
||||
@@ -36,13 +36,24 @@ class BaseInstructorDashboardTest(EventsTestMixin, UniqueCourseTest):
|
||||
"""
|
||||
Mixin class for testing the instructor dashboard.
|
||||
"""
|
||||
def log_in_as_instructor(self):
|
||||
def log_in_as_instructor(self, course_access_roles=None):
|
||||
"""
|
||||
Logs in as an instructor and returns the id.
|
||||
Login with an instructor account.
|
||||
|
||||
Args:
|
||||
course_access_roles (str[]): List of course access roles that should be assigned to the user.
|
||||
|
||||
Returns
|
||||
username (str)
|
||||
user_id (int)
|
||||
"""
|
||||
username = "test_instructor_{uuid}".format(uuid=self.unique_id[0:6])
|
||||
auto_auth_page = AutoAuthPage(self.browser, username=username, course_id=self.course_id, staff=True)
|
||||
return username, auto_auth_page.visit().get_user_id()
|
||||
course_access_roles = course_access_roles or []
|
||||
auto_auth_page = AutoAuthPage(
|
||||
self.browser, course_id=self.course_id, staff=True, course_access_roles=course_access_roles
|
||||
)
|
||||
auto_auth_page.visit()
|
||||
user_info = auto_auth_page.user_info
|
||||
return user_info['username'], user_info['user_id']
|
||||
|
||||
def visit_instructor_dashboard(self):
|
||||
"""
|
||||
@@ -1257,23 +1268,11 @@ class EcommerceTest(BaseInstructorDashboardTest):
|
||||
)
|
||||
course_fixture.install()
|
||||
|
||||
def log_in_as_unique_user(self):
|
||||
"""
|
||||
Log in as a valid lms user.
|
||||
"""
|
||||
AutoAuthPage(
|
||||
self.browser,
|
||||
username="test_instructor",
|
||||
email="test_instructor@example.com",
|
||||
password="password",
|
||||
course_id=self.course_id
|
||||
).visit()
|
||||
|
||||
def visit_ecommerce_section(self):
|
||||
"""
|
||||
Log in to visit Instructor dashboard and click E-commerce tab
|
||||
"""
|
||||
self.log_in_as_unique_user()
|
||||
self.log_in_as_instructor(course_access_roles=['finance_admin'])
|
||||
instructor_dashboard_page = self.visit_instructor_dashboard()
|
||||
return instructor_dashboard_page.select_ecommerce_tab()
|
||||
|
||||
|
||||
@@ -9,10 +9,10 @@ from textwrap import dedent
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.login_and_register import CombinedLoginAndRegisterPage
|
||||
from common.test.acceptance.pages.lms.problem import ProblemPage
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.tests.helpers import EventsTestMixin, UniqueCourseTest
|
||||
|
||||
|
||||
|
||||
@@ -7,13 +7,13 @@ import json
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.course import XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.logout import LogoutPage
|
||||
from common.test.acceptance.pages.lms.courseware_search import CoursewareSearchPage
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage as StudioAutoAuthPage
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage as StudioCourseOutlinePage
|
||||
from common.test.acceptance.tests.helpers import create_user_partition_json, remove_file
|
||||
from common.test.acceptance.tests.studio.base_studio_test import ContainerBase
|
||||
from openedx.core.lib.partitions.partitions import Group
|
||||
from xmodule.partitions.partitions import Group
|
||||
|
||||
|
||||
@attr(shard=1)
|
||||
@@ -54,8 +54,7 @@ class SplitTestCoursewareSearchTest(ContainerBase):
|
||||
Logout and login with given credentials.
|
||||
"""
|
||||
LogoutPage(self.browser).visit()
|
||||
StudioAutoAuthPage(self.browser, username=username, email=email,
|
||||
course_id=self.course_id, staff=staff).visit()
|
||||
AutoAuthPage(self.browser, username=username, email=email, course_id=self.course_id, staff=staff).visit()
|
||||
|
||||
def _studio_reindex(self):
|
||||
"""
|
||||
|
||||
@@ -9,12 +9,12 @@ from textwrap import dedent
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.instructor_dashboard import InstructorDashboardPage
|
||||
from common.test.acceptance.pages.lms.staff_view import StaffCoursewarePage
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest, create_user_partition_json
|
||||
from openedx.core.lib.partitions.partitions import ENROLLMENT_TRACK_PARTITION_ID, MINIMUM_STATIC_PARTITION_ID, Group
|
||||
from xmodule.partitions.partitions import ENROLLMENT_TRACK_PARTITION_ID, MINIMUM_STATIC_PARTITION_ID, Group
|
||||
|
||||
|
||||
@attr(shard=10)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
from urlparse import parse_qsl, urlparse
|
||||
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.oauth2_confirmation import OAuth2Confirmation
|
||||
from common.test.acceptance.tests.helpers import AcceptanceTest
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ from nose.plugins.attrib import attr
|
||||
from common.test.acceptance.fixtures.catalog import CatalogFixture, CatalogIntegrationMixin
|
||||
from common.test.acceptance.fixtures.course import CourseFixture
|
||||
from common.test.acceptance.fixtures.programs import ProgramsConfigMixin
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.catalog import CacheProgramsPage
|
||||
from common.test.acceptance.pages.lms.programs import ProgramDetailsPage, ProgramListingPage
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest
|
||||
|
||||
@@ -14,8 +14,8 @@ from selenium.common.exceptions import TimeoutException
|
||||
from common.test.acceptance.fixtures import LMS_BASE_URL
|
||||
from common.test.acceptance.fixtures.course import CourseFixture
|
||||
from common.test.acceptance.fixtures.discussion import ForumsConfigMixin, MultipleThreadFixture, Thread
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.utils import confirm_prompt
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.course_info import CourseInfoPage
|
||||
from common.test.acceptance.pages.lms.learner_profile import LearnerProfilePage
|
||||
from common.test.acceptance.pages.lms.tab_nav import TabNavPage
|
||||
|
||||
@@ -5,7 +5,7 @@ from bok_choy.page_object import XSS_INJECTION
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture
|
||||
from common.test.acceptance.fixtures.library import LibraryFixture
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage
|
||||
from common.test.acceptance.pages.studio.utils import verify_ordering
|
||||
from common.test.acceptance.tests.helpers import AcceptanceTest, UniqueCourseTest
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Acceptance tests for Studio related to the acid xblock.
|
||||
"""
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage
|
||||
from common.test.acceptance.pages.xblock.acid import AcidView
|
||||
from common.test.acceptance.tests.helpers import AcceptanceTest
|
||||
|
||||
@@ -20,7 +20,7 @@ from common.test.acceptance.pages.studio.html_component_editor import HtmlCompon
|
||||
from common.test.acceptance.pages.studio.move_xblock import MoveModalView
|
||||
from common.test.acceptance.pages.studio.utils import add_discussion, drag
|
||||
from common.test.acceptance.tests.helpers import create_user_partition_json
|
||||
from openedx.core.lib.partitions.partitions import ENROLLMENT_TRACK_PARTITION_ID, MINIMUM_STATIC_PARTITION_ID, Group
|
||||
from xmodule.partitions.partitions import ENROLLMENT_TRACK_PARTITION_ID, MINIMUM_STATIC_PARTITION_ID, Group
|
||||
|
||||
|
||||
class NestedVerticalTest(ContainerBase):
|
||||
@@ -319,10 +319,10 @@ class BaseGroupConfigurationsTest(ContainerBase):
|
||||
CHOOSE_ONE = "Select a group type"
|
||||
CONTENT_GROUP_PARTITION = ComponentVisibilityEditorView.CONTENT_GROUP_PARTITION
|
||||
ENROLLMENT_TRACK_PARTITION = ComponentVisibilityEditorView.ENROLLMENT_TRACK_PARTITION
|
||||
MISSING_GROUP_LABEL = 'Deleted Group\nThis group no longer exists. Choose another group or make this component visible to All Learners and Staff.'
|
||||
MISSING_GROUP_LABEL = 'Deleted Group\nThis group no longer exists. Choose another group or do not restrict access to this component.'
|
||||
VALIDATION_ERROR_LABEL = 'This component has validation issues.'
|
||||
VALIDATION_ERROR_MESSAGE = "Error:\nThis component's visibility settings refer to deleted or invalid groups."
|
||||
GROUP_VISIBILITY_MESSAGE = 'Some content in this unit is visible only to specific groups of learners.'
|
||||
VALIDATION_ERROR_MESSAGE = "Error:\nThis component's access settings refer to deleted or invalid groups."
|
||||
GROUP_VISIBILITY_MESSAGE = 'Access to some content in this unit is restricted to specific groups of learners.'
|
||||
|
||||
def setUp(self):
|
||||
super(BaseGroupConfigurationsTest, self).setUp()
|
||||
@@ -374,10 +374,13 @@ class BaseGroupConfigurationsTest(ContainerBase):
|
||||
"""
|
||||
Check that the current visibility is displayed at the top of the dialog.
|
||||
"""
|
||||
self.assertEqual(
|
||||
"Currently visible to: {groups}".format(groups=expected_current_groups),
|
||||
visibility_editor.current_groups_message
|
||||
)
|
||||
if expected_current_groups == self.ALL_LEARNERS_AND_STAFF:
|
||||
self.assertEqual("Access is not restricted", visibility_editor.current_groups_message)
|
||||
else:
|
||||
self.assertEqual(
|
||||
"Access is restricted to: {groups}".format(groups=expected_current_groups),
|
||||
visibility_editor.current_groups_message
|
||||
)
|
||||
|
||||
def verify_selected_partition_scheme(self, visibility_editor, expected_scheme):
|
||||
"""
|
||||
@@ -648,7 +651,7 @@ class EnrollmentTrackVisibilityModalTest(BaseGroupConfigurationsTest):
|
||||
if not expected_groups:
|
||||
self.assertIsNone(component.get_partition_group_message)
|
||||
else:
|
||||
self.assertEqual("Visible to: " + expected_groups, component.get_partition_group_message)
|
||||
self.assertEqual("Access restricted to: " + expected_groups, component.get_partition_group_message)
|
||||
|
||||
def test_setting_enrollment_tracks(self):
|
||||
"""
|
||||
|
||||
@@ -5,7 +5,7 @@ import uuid
|
||||
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
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.overview import CourseOutlinePage
|
||||
from common.test.acceptance.tests.helpers import AcceptanceTest
|
||||
|
||||
@@ -4,7 +4,7 @@ Acceptance Tests for Course Information
|
||||
from common.test.acceptance.pages.studio.course_info import CourseUpdatesPage
|
||||
from common.test.acceptance.tests.studio.base_studio_test import StudioCourseTest
|
||||
|
||||
from ...pages.studio.auto_auth import AutoAuthPage
|
||||
from ...pages.common.auto_auth import AutoAuthPage
|
||||
from ...pages.studio.index import DashboardPage
|
||||
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ Acceptance tests for course in studio
|
||||
"""
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
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
|
||||
|
||||
@@ -5,8 +5,8 @@ import uuid
|
||||
|
||||
from base_studio_test import StudioCourseTest
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.studio.asset_index import AssetIndexPage
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.studio.course_info import CourseUpdatesPage
|
||||
from common.test.acceptance.pages.studio.edit_tabs import PagesPage
|
||||
from common.test.acceptance.pages.studio.import_export import ExportCoursePage, ImportCoursePage
|
||||
|
||||
@@ -7,8 +7,8 @@ from unittest import skip
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.course import XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.studio.asset_index import AssetIndexPage
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.studio.course_info import CourseUpdatesPage
|
||||
from common.test.acceptance.pages.studio.edit_tabs import PagesPage
|
||||
from common.test.acceptance.pages.studio.import_export import (
|
||||
|
||||
@@ -6,8 +6,8 @@ from uuid import uuid4
|
||||
from flaky import flaky
|
||||
from opaque_keys.edx.locator import LibraryLocator
|
||||
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.account_settings import AccountSettingsPage
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.studio.index import DashboardPage
|
||||
from common.test.acceptance.pages.studio.library import LibraryEditPage
|
||||
from common.test.acceptance.tests.helpers import AcceptanceTest, get_selected_option_text, select_option_by_text
|
||||
|
||||
@@ -5,7 +5,7 @@ from ddt import data, ddt
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.course import XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.studio.library import LibraryEditPage
|
||||
from common.test.acceptance.pages.studio.users import LibraryUsersPage
|
||||
from common.test.acceptance.pages.studio.utils import add_component
|
||||
|
||||
@@ -21,7 +21,7 @@ from common.test.acceptance.pages.studio.settings_advanced import AdvancedSettin
|
||||
from common.test.acceptance.pages.studio.settings_group_configurations import GroupConfigurationsPage
|
||||
from common.test.acceptance.pages.studio.utils import get_input_value
|
||||
from common.test.acceptance.tests.helpers import create_user_partition_json, element_has_text
|
||||
from openedx.core.lib.partitions.partitions import Group
|
||||
from xmodule.partitions.partitions import Group
|
||||
|
||||
|
||||
@attr(shard=8)
|
||||
|
||||
@@ -19,8 +19,8 @@ from common.test.acceptance.pages.studio.settings_group_configurations import Gr
|
||||
from common.test.acceptance.pages.studio.utils import add_advanced_component
|
||||
from common.test.acceptance.pages.xblock.utils import wait_for_xblock_initialization
|
||||
from common.test.acceptance.tests.helpers import create_user_partition_json
|
||||
from openedx.core.lib.partitions.partitions import Group
|
||||
from test_studio_container import ContainerBase
|
||||
from xmodule.partitions.partitions import Group
|
||||
|
||||
|
||||
class SplitTestMixin(object):
|
||||
|
||||
@@ -6,9 +6,9 @@ E2E tests for the LMS.
|
||||
from textwrap import dedent
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.annotation_component import AnnotationComponentPage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest, disable_animations
|
||||
|
||||
|
||||
|
||||
@@ -9,11 +9,10 @@ from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures import LMS_BASE_URL
|
||||
from common.test.acceptance.fixtures.course import XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.utils import add_enrollment_course_modes, enroll_user_track
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage as LmsAutoAuthPage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.instructor_dashboard import InstructorDashboardPage
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage as StudioAutoAuthPage
|
||||
from common.test.acceptance.pages.studio.component_editor import ComponentVisibilityEditorView
|
||||
from common.test.acceptance.pages.studio.settings_group_configurations import GroupConfigurationsPage
|
||||
from common.test.acceptance.tests.lms.test_lms_user_preview import verify_expected_problem_visibility
|
||||
@@ -43,21 +42,21 @@ class EndToEndCohortedCoursewareTest(ContainerBase):
|
||||
# Create a student who will be in "Cohort A"
|
||||
self.cohort_a_student_username = "cohort_a_student"
|
||||
self.cohort_a_student_email = "cohort_a_student@example.com"
|
||||
StudioAutoAuthPage(
|
||||
AutoAuthPage(
|
||||
self.browser, username=self.cohort_a_student_username, email=self.cohort_a_student_email, no_login=True
|
||||
).visit()
|
||||
|
||||
# Create a student who will be in "Cohort B"
|
||||
self.cohort_b_student_username = "cohort_b_student"
|
||||
self.cohort_b_student_email = "cohort_b_student@example.com"
|
||||
StudioAutoAuthPage(
|
||||
AutoAuthPage(
|
||||
self.browser, username=self.cohort_b_student_username, email=self.cohort_b_student_email, no_login=True
|
||||
).visit()
|
||||
|
||||
# Create a Verified Student
|
||||
self.cohort_verified_student_username = "cohort_verified_student"
|
||||
self.cohort_verified_student_email = "cohort_verified_student@example.com"
|
||||
StudioAutoAuthPage(
|
||||
AutoAuthPage(
|
||||
self.browser,
|
||||
username=self.cohort_verified_student_username,
|
||||
email=self.cohort_verified_student_email,
|
||||
@@ -67,7 +66,7 @@ class EndToEndCohortedCoursewareTest(ContainerBase):
|
||||
# Create audit student
|
||||
self.cohort_audit_student_username = "cohort_audit_student"
|
||||
self.cohort_audit_student_email = "cohort_audit_student@example.com"
|
||||
StudioAutoAuthPage(
|
||||
AutoAuthPage(
|
||||
self.browser,
|
||||
username=self.cohort_audit_student_username,
|
||||
email=self.cohort_audit_student_email,
|
||||
@@ -77,13 +76,13 @@ class EndToEndCohortedCoursewareTest(ContainerBase):
|
||||
# Create a student who will end up in the default cohort group
|
||||
self.cohort_default_student_username = "cohort_default_student"
|
||||
self.cohort_default_student_email = "cohort_default_student@example.com"
|
||||
StudioAutoAuthPage(
|
||||
AutoAuthPage(
|
||||
self.browser, username=self.cohort_default_student_username,
|
||||
email=self.cohort_default_student_email, no_login=True
|
||||
).visit()
|
||||
|
||||
# Start logged in as the staff user.
|
||||
StudioAutoAuthPage(
|
||||
AutoAuthPage(
|
||||
self.browser, username=self.staff_user["username"], email=self.staff_user["email"]
|
||||
).visit()
|
||||
|
||||
@@ -194,7 +193,7 @@ class EndToEndCohortedCoursewareTest(ContainerBase):
|
||||
courseware_page = CoursewarePage(self.browser, self.course_id)
|
||||
|
||||
def login_and_verify_visible_problems(username, email, expected_problems, track=None):
|
||||
LmsAutoAuthPage(
|
||||
AutoAuthPage(
|
||||
self.browser, username=username, email=email, course_id=self.course_id
|
||||
).visit()
|
||||
if track is not None:
|
||||
|
||||
@@ -10,7 +10,7 @@ from mock import patch
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.studio.overview import CourseOutlinePage
|
||||
from common.test.acceptance.pages.studio.video.video import VideoComponentPage
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest, YouTubeStubConfig, is_youtube_available
|
||||
|
||||
@@ -14,7 +14,7 @@ from selenium.webdriver.common.action_chains import ActionChains
|
||||
from selenium.webdriver.common.by import By
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.lms.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.course_info import CourseInfoPage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.lms.tab_nav import TabNavPage
|
||||
|
||||
@@ -4,8 +4,8 @@ Javascript tests for the crowdsourcehinter xblock
|
||||
from textwrap import dedent
|
||||
|
||||
from common.test.acceptance.fixtures.course import CourseFixture, XBlockFixtureDesc
|
||||
from common.test.acceptance.pages.common.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.lms.courseware import CoursewarePage
|
||||
from common.test.acceptance.pages.studio.auto_auth import AutoAuthPage
|
||||
from common.test.acceptance.pages.xblock.crowdsourcehinter_problem import CrowdsourcehinterProblemPage
|
||||
from common.test.acceptance.tests.helpers import UniqueCourseTest
|
||||
|
||||
|
||||
@@ -1,74 +0,0 @@
|
||||
[
|
||||
{
|
||||
"pk": 1,
|
||||
"model": "auth.user",
|
||||
"fields": {
|
||||
"username": "test_instructor",
|
||||
"email":"test_instructor@example.com",
|
||||
"password": "password",
|
||||
"is_staff": true,
|
||||
"is_active": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"pk": 1,
|
||||
"model": "student.userprofile",
|
||||
"fields": {
|
||||
"user": 1,
|
||||
"name": "test instructor",
|
||||
"courseware": "course.xml"
|
||||
}
|
||||
},
|
||||
{
|
||||
"pk": 1,
|
||||
"model": "student.registration",
|
||||
"fields": {
|
||||
"user": 1,
|
||||
"activation_key": "52bfac10384d49219385dcd4cc17177q"
|
||||
}
|
||||
},
|
||||
{
|
||||
"pk": 1,
|
||||
"model": "student.courseaccessrole",
|
||||
"fields": {
|
||||
"id": "1",
|
||||
"org": "test_org",
|
||||
"course_id": "course-v1:test_org+34039497242734583224814321005482849780+test_run",
|
||||
"role": "finance_admin",
|
||||
"user_id": "1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"pk": 2,
|
||||
"model": "student.courseaccessrole",
|
||||
"fields": {
|
||||
"id": "2",
|
||||
"org": "test_org",
|
||||
"course_id": "course-v1:test_org+34039497242734583224814321005482849781+test_run",
|
||||
"role": "finance_admin",
|
||||
"user_id": "1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"pk": 3,
|
||||
"model": "student.courseaccessrole",
|
||||
"fields": {
|
||||
"id": "3",
|
||||
"org": "test_org",
|
||||
"course_id": "course-v1:test_org+34039497242734583224814321005482849782+test_run",
|
||||
"role": "finance_admin",
|
||||
"user_id": "1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"pk": 4,
|
||||
"model": "student.courseaccessrole",
|
||||
"fields": {
|
||||
"id": "4",
|
||||
"org": "test_org",
|
||||
"course_id": "course-v1:test_org+34039497242734583224814321005482849783+test_run",
|
||||
"role": "finance_admin",
|
||||
"user_id": "1"
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -3,10 +3,11 @@ General testing utilities.
|
||||
"""
|
||||
import sys
|
||||
from contextlib import contextmanager
|
||||
|
||||
import moto
|
||||
from django.dispatch import Signal
|
||||
from markupsafe import escape
|
||||
from mock import Mock, patch
|
||||
import moto
|
||||
|
||||
|
||||
@contextmanager
|
||||
|
||||
Reference in New Issue
Block a user