Commit 47d316d1 by Christine Lytwynec

Add AutoAuthPage to lms pages for bok-choy tests

parent bf56d303
...@@ -2,3 +2,6 @@ import os ...@@ -2,3 +2,6 @@ import os
# Get the URL of the instance under test # Get the URL of the instance under test
BASE_URL = os.environ.get('test_url', 'http://localhost:8003') 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')
"""
Auto-auth page (used to automatically log in during testing).
"""
import re
import urllib
from bok_choy.page_object import PageObject
from . import AUTH_BASE_URL
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.
"""
def __init__(self, browser, username=None, email=None, password=None, staff=None, course_id=None, roles=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.
`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.
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
@property
def url(self):
"""
Construct the URL.
"""
url = AUTH_BASE_URL + "/auto_auth"
query_str = urllib.urlencode(self._params)
if query_str:
url += "?" + query_str
return url
def is_browser_on_page(self):
return True
def get_user_id(self):
"""
Finds and returns the user_id
"""
message = self.q(css='BODY').text[0].strip()
match = re.search(r' user_id ([^$]+)$', message)
return match.groups()[0] if match else None
...@@ -5,7 +5,7 @@ Tests for discussion pages ...@@ -5,7 +5,7 @@ Tests for discussion pages
from uuid import uuid4 from uuid import uuid4
from .helpers import UniqueCourseTest from .helpers import UniqueCourseTest
from ..pages.studio.auto_auth import AutoAuthPage from ..pages.lms.auto_auth import AutoAuthPage
from ..pages.lms.courseware import CoursewarePage from ..pages.lms.courseware import CoursewarePage
from ..pages.lms.discussion import ( from ..pages.lms.discussion import (
DiscussionTabSingleThreadPage, DiscussionTabSingleThreadPage,
......
...@@ -6,7 +6,7 @@ E2E tests for the LMS. ...@@ -6,7 +6,7 @@ E2E tests for the LMS.
from unittest import skip from unittest import skip
from .helpers import UniqueCourseTest, load_data_str from .helpers import UniqueCourseTest, load_data_str
from ..pages.studio.auto_auth import AutoAuthPage from ..pages.lms.auto_auth import AutoAuthPage
from ..pages.lms.find_courses import FindCoursesPage from ..pages.lms.find_courses import FindCoursesPage
from ..pages.lms.course_about import CourseAboutPage from ..pages.lms.course_about import CourseAboutPage
from ..pages.lms.course_info import CourseInfoPage from ..pages.lms.course_info import CourseInfoPage
......
...@@ -7,7 +7,7 @@ from unittest import skip ...@@ -7,7 +7,7 @@ from unittest import skip
from bok_choy.promise import Promise, BrokenPromise from bok_choy.promise import Promise, BrokenPromise
from ..pages.lms.peer_confirm import PeerConfirmPage from ..pages.lms.peer_confirm import PeerConfirmPage
from ..pages.studio.auto_auth import AutoAuthPage from ..pages.lms.auto_auth import AutoAuthPage
from ..pages.lms.course_info import CourseInfoPage from ..pages.lms.course_info import CourseInfoPage
from ..pages.lms.tab_nav import TabNavPage from ..pages.lms.tab_nav import TabNavPage
from ..pages.lms.course_nav import CourseNavPage from ..pages.lms.course_nav import CourseNavPage
......
...@@ -8,7 +8,7 @@ from .helpers import UniqueCourseTest ...@@ -8,7 +8,7 @@ from .helpers import UniqueCourseTest
from ..pages.lms.video import VideoPage from ..pages.lms.video import VideoPage
from ..pages.lms.tab_nav import TabNavPage from ..pages.lms.tab_nav import TabNavPage
from ..pages.lms.course_nav import CourseNavPage from ..pages.lms.course_nav import CourseNavPage
from ..pages.studio.auto_auth import AutoAuthPage from ..pages.lms.auto_auth import AutoAuthPage
from ..pages.lms.course_info import CourseInfoPage from ..pages.lms.course_info import CourseInfoPage
from ..fixtures.course import CourseFixture, XBlockFixtureDesc from ..fixtures.course import CourseFixture, XBlockFixtureDesc
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment