New Hinted Login View - PR 8591
This commit is contained in:
@@ -211,6 +211,15 @@ class FieldsMixin(object):
|
||||
query = self.q(css='.u-field-link-title-{}'.format(field_id))
|
||||
return query.text[0] if query.present else None
|
||||
|
||||
def wait_for_link_title_for_link_field(self, field_id, expected_title):
|
||||
"""
|
||||
Wait until the title of the specified link field equals expected_title.
|
||||
"""
|
||||
return EmptyPromise(
|
||||
lambda: self.link_title_for_link_field(field_id) == expected_title,
|
||||
"Link field with link title \"{0}\" is visible.".format(expected_title)
|
||||
).fulfill()
|
||||
|
||||
def click_on_link_in_link_field(self, field_id):
|
||||
"""
|
||||
Click the link in a link field.
|
||||
|
||||
@@ -281,6 +281,8 @@ class CombinedLoginAndRegisterPage(PageObject):
|
||||
return "login"
|
||||
elif self.q(css=".js-reset").visible:
|
||||
return "password-reset"
|
||||
elif self.q(css=".proceed-button").visible:
|
||||
return "hinted-login"
|
||||
|
||||
@property
|
||||
def email_value(self):
|
||||
@@ -335,3 +337,9 @@ class CombinedLoginAndRegisterPage(PageObject):
|
||||
return (True, msg_element.text[0])
|
||||
return (False, None)
|
||||
return Promise(_check_func, "Result of third party auth is visible").fulfill()
|
||||
|
||||
@property
|
||||
def hinted_login_prompt(self):
|
||||
"""Get the message displayed to the user on the hinted-login form"""
|
||||
if self.q(css=".wrapper-other-login .instructions").visible:
|
||||
return self.q(css=".wrapper-other-login .instructions").text[0]
|
||||
|
||||
@@ -164,7 +164,41 @@ class LoginFromCombinedPageTest(UniqueCourseTest):
|
||||
|
||||
self.dashboard_page.wait_for_page()
|
||||
|
||||
# Now unlink the account (To test the account settings view and also to prevent cross-test side effects)
|
||||
self._unlink_dummy_account()
|
||||
|
||||
def test_hinted_login(self):
|
||||
""" Test the login page when coming from course URL that specified which third party provider to use """
|
||||
# Create a user account and link it to third party auth with the dummy provider:
|
||||
AutoAuthPage(self.browser, course_id=self.course_id).visit()
|
||||
self._link_dummy_account()
|
||||
LogoutPage(self.browser).visit()
|
||||
|
||||
# When not logged in, try to load a course URL that includes the provider hint ?tpa_hint=...
|
||||
course_page = CoursewarePage(self.browser, self.course_id)
|
||||
self.browser.get(course_page.url + '?tpa_hint=oa2-dummy')
|
||||
|
||||
# We should now be redirected to the login page
|
||||
self.login_page.wait_for_page()
|
||||
self.assertIn("Would you like to sign in using your Dummy credentials?", self.login_page.hinted_login_prompt)
|
||||
self.login_page.click_third_party_dummy_provider()
|
||||
|
||||
# We should now be redirected to the course page
|
||||
course_page.wait_for_page()
|
||||
|
||||
self._unlink_dummy_account()
|
||||
|
||||
def _link_dummy_account(self):
|
||||
""" Go to Account Settings page and link the user's account to the Dummy provider """
|
||||
account_settings = AccountSettingsPage(self.browser).visit()
|
||||
field_id = "auth-oa2-dummy"
|
||||
account_settings.wait_for_field(field_id)
|
||||
self.assertEqual("Link", account_settings.link_title_for_link_field(field_id))
|
||||
account_settings.click_on_link_in_link_field(field_id)
|
||||
account_settings.wait_for_link_title_for_link_field(field_id, "Unlink")
|
||||
|
||||
def _unlink_dummy_account(self):
|
||||
""" Verify that the 'Dummy' third party auth provider is linked, then unlink it """
|
||||
# This must be done after linking the account, or we'll get cross-test side effects
|
||||
account_settings = AccountSettingsPage(self.browser).visit()
|
||||
field_id = "auth-oa2-dummy"
|
||||
account_settings.wait_for_field(field_id)
|
||||
|
||||
Reference in New Issue
Block a user