Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
d77025c8
Commit
d77025c8
authored
May 26, 2016
by
Calen Pennington
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use a contextmanager to cleanup after manipulating the current request in third_party_auth tests
parent
86902e87
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
33 additions
and
24 deletions
+33
-24
common/djangoapps/third_party_auth/tests/specs/base.py
+33
-24
No files found.
common/djangoapps/third_party_auth/tests/specs/base.py
View file @
d77025c8
...
@@ -5,6 +5,7 @@ import unittest
...
@@ -5,6 +5,7 @@ import unittest
import
json
import
json
import
mock
import
mock
from
contextlib
import
contextmanager
from
django
import
test
from
django
import
test
from
django.contrib
import
auth
from
django.contrib
import
auth
from
django.contrib.auth
import
models
as
auth_models
from
django.contrib.auth
import
models
as
auth_models
...
@@ -17,7 +18,6 @@ from social import actions, exceptions
...
@@ -17,7 +18,6 @@ from social import actions, exceptions
from
social.apps.django_app
import
utils
as
social_utils
from
social.apps.django_app
import
utils
as
social_utils
from
social.apps.django_app
import
views
as
social_views
from
social.apps.django_app
import
views
as
social_views
from
edxmako.tests
import
mako_middleware_process_request
from
lms.djangoapps.commerce.tests
import
TEST_API_URL
,
TEST_API_SIGNING_KEY
from
lms.djangoapps.commerce.tests
import
TEST_API_URL
,
TEST_API_SIGNING_KEY
from
student
import
models
as
student_models
from
student
import
models
as
student_models
from
student
import
views
as
student_views
from
student
import
views
as
student_views
...
@@ -526,6 +526,13 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
...
@@ -526,6 +526,13 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
return
request
,
strategy
return
request
,
strategy
@contextmanager
def
_patch_edxmako_current_request
(
self
,
request
):
"""Make ``request`` be the current request for edxmako template rendering."""
with
mock
.
patch
(
'edxmako.request_context.get_current_request'
,
return_value
=
request
):
yield
def
get_user_by_email
(
self
,
strategy
,
email
):
def
get_user_by_email
(
self
,
strategy
,
email
):
"""Gets a user by email, using the given strategy."""
"""Gets a user by email, using the given strategy."""
return
strategy
.
storage
.
user
.
user_model
()
.
objects
.
get
(
email
=
email
)
return
strategy
.
storage
.
user
.
user_model
()
.
objects
.
get
(
email
=
email
)
...
@@ -579,7 +586,6 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
...
@@ -579,7 +586,6 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
pipeline
.
get_login_url
(
self
.
provider
.
provider_id
,
pipeline
.
AUTH_ENTRY_LOGIN
))
pipeline
.
get_login_url
(
self
.
provider
.
provider_id
,
pipeline
.
AUTH_ENTRY_LOGIN
))
actions
.
do_complete
(
request
.
backend
,
social_views
.
_do_login
)
# pylint: disable=protected-access
actions
.
do_complete
(
request
.
backend
,
social_views
.
_do_login
)
# pylint: disable=protected-access
mako_middleware_process_request
(
strategy
.
request
)
student_views
.
signin_user
(
strategy
.
request
)
student_views
.
signin_user
(
strategy
.
request
)
student_views
.
login_user
(
strategy
.
request
)
student_views
.
login_user
(
strategy
.
request
)
actions
.
do_complete
(
request
.
backend
,
social_views
.
_do_login
)
# pylint: disable=protected-access
actions
.
do_complete
(
request
.
backend
,
social_views
.
_do_login
)
# pylint: disable=protected-access
...
@@ -627,10 +633,10 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
...
@@ -627,10 +633,10 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
pipeline
.
get_login_url
(
self
.
provider
.
provider_id
,
pipeline
.
AUTH_ENTRY_LOGIN
))
pipeline
.
get_login_url
(
self
.
provider
.
provider_id
,
pipeline
.
AUTH_ENTRY_LOGIN
))
actions
.
do_complete
(
request
.
backend
,
social_views
.
_do_login
)
# pylint: disable=protected-access
actions
.
do_complete
(
request
.
backend
,
social_views
.
_do_login
)
# pylint: disable=protected-access
mako_middleware_process_request
(
strategy
.
request
)
with
self
.
_patch_edxmako_current_request
(
strategy
.
request
):
student_views
.
signin_user
(
strategy
.
request
)
student_views
.
signin_user
(
strategy
.
request
)
student_views
.
login_user
(
strategy
.
request
)
student_views
.
login_user
(
strategy
.
request
)
actions
.
do_complete
(
request
.
backend
,
social_views
.
_do_login
,
user
=
user
)
# pylint: disable=protected-access
actions
.
do_complete
(
request
.
backend
,
social_views
.
_do_login
,
user
=
user
)
# pylint: disable=protected-access
# First we expect that we're in the linked state, with a backend entry.
# First we expect that we're in the linked state, with a backend entry.
self
.
assert_account_settings_context_looks_correct
(
account_settings_context
(
request
),
user
,
linked
=
True
)
self
.
assert_account_settings_context_looks_correct
(
account_settings_context
(
request
),
user
,
linked
=
True
)
...
@@ -686,10 +692,10 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
...
@@ -686,10 +692,10 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
self
.
client
.
get
(
pipeline
.
get_login_url
(
self
.
provider
.
provider_id
,
pipeline
.
AUTH_ENTRY_LOGIN
))
self
.
client
.
get
(
pipeline
.
get_login_url
(
self
.
provider
.
provider_id
,
pipeline
.
AUTH_ENTRY_LOGIN
))
actions
.
do_complete
(
request
.
backend
,
social_views
.
_do_login
)
# pylint: disable=protected-access
actions
.
do_complete
(
request
.
backend
,
social_views
.
_do_login
)
# pylint: disable=protected-access
mako_middleware_process_request
(
strategy
.
request
)
with
self
.
_patch_edxmako_current_request
(
strategy
.
request
):
student_views
.
signin_user
(
strategy
.
request
)
student_views
.
signin_user
(
strategy
.
request
)
student_views
.
login_user
(
strategy
.
request
)
student_views
.
login_user
(
strategy
.
request
)
actions
.
do_complete
(
request
.
backend
,
social_views
.
_do_login
,
user
=
user
)
# pylint: disable=protected-access
actions
.
do_complete
(
request
.
backend
,
social_views
.
_do_login
,
user
=
user
)
# pylint: disable=protected-access
# Monkey-patch storage for messaging; pylint: disable=protected-access
# Monkey-patch storage for messaging; pylint: disable=protected-access
request
.
_messages
=
fallback
.
FallbackStorage
(
request
)
request
.
_messages
=
fallback
.
FallbackStorage
(
request
)
...
@@ -727,10 +733,10 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
...
@@ -727,10 +733,10 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
# pylint: disable=protected-access
# pylint: disable=protected-access
self
.
assert_redirect_to_login_looks_correct
(
actions
.
do_complete
(
request
.
backend
,
social_views
.
_do_login
))
self
.
assert_redirect_to_login_looks_correct
(
actions
.
do_complete
(
request
.
backend
,
social_views
.
_do_login
))
mako_middleware_process_request
(
strategy
.
request
)
# At this point we know the pipeline has resumed correctly. Next we
# At this point we know the pipeline has resumed correctly. Next we
# fire off the view that displays the login form and posts it via JS.
# fire off the view that displays the login form and posts it via JS.
self
.
assert_login_response_in_pipeline_looks_correct
(
student_views
.
signin_user
(
strategy
.
request
))
with
self
.
_patch_edxmako_current_request
(
strategy
.
request
):
self
.
assert_login_response_in_pipeline_looks_correct
(
student_views
.
signin_user
(
strategy
.
request
))
# Next, we invoke the view that handles the POST, and expect it
# Next, we invoke the view that handles the POST, and expect it
# redirects to /auth/complete. In the browser ajax handlers will
# redirects to /auth/complete. In the browser ajax handlers will
...
@@ -760,8 +766,8 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
...
@@ -760,8 +766,8 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
user
.
is_active
=
False
user
.
is_active
=
False
user
.
save
()
user
.
save
()
mako_middleware_process_request
(
strategy
.
request
)
with
self
.
_patch_edxmako_current_request
(
strategy
.
request
):
self
.
assert_json_failure_response_is_inactive_account
(
student_views
.
login_user
(
strategy
.
request
))
self
.
assert_json_failure_response_is_inactive_account
(
student_views
.
login_user
(
strategy
.
request
))
def
test_signin_fails_if_no_account_associated
(
self
):
def
test_signin_fails_if_no_account_associated
(
self
):
_
,
strategy
=
self
.
get_request_and_strategy
(
_
,
strategy
=
self
.
get_request_and_strategy
(
...
@@ -806,11 +812,11 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
...
@@ -806,11 +812,11 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
# pylint: disable=protected-access
# pylint: disable=protected-access
self
.
assert_redirect_to_register_looks_correct
(
actions
.
do_complete
(
request
.
backend
,
social_views
.
_do_login
))
self
.
assert_redirect_to_register_looks_correct
(
actions
.
do_complete
(
request
.
backend
,
social_views
.
_do_login
))
mako_middleware_process_request
(
strategy
.
request
)
# At this point we know the pipeline has resumed correctly. Next we
# At this point we know the pipeline has resumed correctly. Next we
# fire off the view that displays the registration form.
# fire off the view that displays the registration form.
self
.
assert_register_response_in_pipeline_looks_correct
(
with
self
.
_patch_edxmako_current_request
(
request
):
student_views
.
register_user
(
strategy
.
request
),
pipeline
.
get
(
request
)[
'kwargs'
])
self
.
assert_register_response_in_pipeline_looks_correct
(
student_views
.
register_user
(
strategy
.
request
),
pipeline
.
get
(
request
)[
'kwargs'
])
# Next, we invoke the view that handles the POST. Not all providers
# Next, we invoke the view that handles the POST. Not all providers
# supply email. Manually add it as the user would have to; this
# supply email. Manually add it as the user would have to; this
...
@@ -828,7 +834,8 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
...
@@ -828,7 +834,8 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
# ...but when we invoke create_account the existing edX view will make
# ...but when we invoke create_account the existing edX view will make
# it, but not social auths. The pipeline creates those later.
# it, but not social auths. The pipeline creates those later.
self
.
assert_json_success_response_looks_correct
(
student_views
.
create_account
(
strategy
.
request
))
with
self
.
_patch_edxmako_current_request
(
strategy
.
request
):
self
.
assert_json_success_response_looks_correct
(
student_views
.
create_account
(
strategy
.
request
))
# We've overridden the user's password, so authenticate() with the old
# We've overridden the user's password, so authenticate() with the old
# value won't work:
# value won't work:
created_user
=
self
.
get_user_by_email
(
strategy
,
email
)
created_user
=
self
.
get_user_by_email
(
strategy
,
email
)
...
@@ -876,12 +883,14 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
...
@@ -876,12 +883,14 @@ class IntegrationTest(testutil.TestCase, test.TestCase):
# pylint: disable=protected-access
# pylint: disable=protected-access
self
.
assert_redirect_to_register_looks_correct
(
actions
.
do_complete
(
backend
,
social_views
.
_do_login
))
self
.
assert_redirect_to_register_looks_correct
(
actions
.
do_complete
(
backend
,
social_views
.
_do_login
))
mako_middleware_process_request
(
strategy
.
request
)
with
self
.
_patch_edxmako_current_request
(
request
):
self
.
assert_register_response_in_pipeline_looks_correct
(
self
.
assert_register_response_in_pipeline_looks_correct
(
student_views
.
register_user
(
strategy
.
request
),
pipeline
.
get
(
request
)[
'kwargs'
])
student_views
.
register_user
(
strategy
.
request
),
pipeline
.
get
(
request
)[
'kwargs'
])
strategy
.
request
.
POST
=
self
.
get_registration_post_vars
()
# Create twice: once successfully, and once causing a collision.
with
self
.
_patch_edxmako_current_request
(
strategy
.
request
):
student_views
.
create_account
(
strategy
.
request
)
strategy
.
request
.
POST
=
self
.
get_registration_post_vars
()
# Create twice: once successfully, and once causing a collision.
student_views
.
create_account
(
strategy
.
request
)
self
.
assert_json_failure_response_is_username_collision
(
student_views
.
create_account
(
strategy
.
request
))
self
.
assert_json_failure_response_is_username_collision
(
student_views
.
create_account
(
strategy
.
request
))
def
test_pipeline_raises_auth_entry_error_if_auth_entry_invalid
(
self
):
def
test_pipeline_raises_auth_entry_error_if_auth_entry_invalid
(
self
):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment