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
bed65b2a
Commit
bed65b2a
authored
Apr 18, 2017
by
Brandon DeRosier
Committed by
GitHub
Apr 18, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #14904 from open-craft/bdero/ent-320
ENT-320: Fix OAuth2ProviderConfig to be keyed by `provider_slug`
parents
447f5c2b
d8e1b917
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
28 additions
and
7 deletions
+28
-7
common/djangoapps/third_party_auth/admin.py
+1
-1
common/djangoapps/third_party_auth/provider.py
+9
-6
common/djangoapps/third_party_auth/tests/test_provider.py
+18
-0
No files found.
common/djangoapps/third_party_auth/admin.py
View file @
bed65b2a
...
...
@@ -33,7 +33,7 @@ class OAuth2ProviderConfigAdmin(KeyedConfigurationModelAdmin):
def
get_list_display
(
self
,
request
):
""" Don't show every single field in the admin change list """
return
(
'name'
,
'enabled'
,
'site'
,
'backend_name'
,
'secondary'
,
'skip_registration_form'
,
'name'
,
'enabled'
,
'
provider_slug'
,
'
site'
,
'backend_name'
,
'secondary'
,
'skip_registration_form'
,
'skip_email_verification'
,
'change_date'
,
'changed_by'
,
'edit_link'
,
)
...
...
common/djangoapps/third_party_auth/provider.py
View file @
bed65b2a
...
...
@@ -22,9 +22,10 @@ class Registry(object):
Helper method that returns a generator used to iterate over all providers
of the current site.
"""
for
backend_name
in
_PSA_OAUTH2_BACKENDS
:
provider
=
OAuth2ProviderConfig
.
current
(
backend_name
)
if
provider
.
enabled_for_current_site
:
oauth2_slugs
=
OAuth2ProviderConfig
.
key_values
(
'provider_slug'
,
flat
=
True
)
for
oauth2_slug
in
oauth2_slugs
:
provider
=
OAuth2ProviderConfig
.
current
(
oauth2_slug
)
if
provider
.
enabled_for_current_site
and
provider
.
backend_name
in
_PSA_OAUTH2_BACKENDS
:
yield
provider
if
SAMLConfiguration
.
is_enabled
(
Site
.
objects
.
get_current
(
get_current_request
())):
idp_slugs
=
SAMLProviderConfig
.
key_values
(
'idp_slug'
,
flat
=
True
)
...
...
@@ -103,9 +104,11 @@ class Registry(object):
Instances of ProviderConfig.
"""
if
backend_name
in
_PSA_OAUTH2_BACKENDS
:
provider
=
OAuth2ProviderConfig
.
current
(
backend_name
)
if
provider
.
enabled_for_current_site
:
yield
provider
oauth2_slugs
=
OAuth2ProviderConfig
.
key_values
(
'provider_slug'
,
flat
=
True
)
for
oauth2_slug
in
oauth2_slugs
:
provider
=
OAuth2ProviderConfig
.
current
(
oauth2_slug
)
if
provider
.
backend_name
==
backend_name
and
provider
.
enabled_for_current_site
:
yield
provider
elif
backend_name
in
_PSA_SAML_BACKENDS
and
SAMLConfiguration
.
is_enabled
(
Site
.
objects
.
get_current
(
get_current_request
())):
idp_names
=
SAMLProviderConfig
.
key_values
(
'idp_slug'
,
flat
=
True
)
...
...
common/djangoapps/third_party_auth/tests/test_provider.py
View file @
bed65b2a
...
...
@@ -148,6 +148,24 @@ class RegistryTest(testutil.TestCase):
google_provider
=
self
.
configure_google_provider
(
enabled
=
True
)
self
.
assertEqual
(
google_provider
.
id
,
provider
.
Registry
.
get
(
google_provider
.
provider_id
)
.
id
)
def
test_oauth2_provider_keyed_by_provider_slug
(
self
):
"""
Regression test to ensure that the Registry properly fetches OAuth2ProviderConfigs that have a provider_slug
which doesn't match any of the possible backend_names.
"""
google_provider
=
self
.
configure_google_provider
(
enabled
=
True
,
provider_slug
=
'custom_slug'
)
self
.
assertIn
(
google_provider
,
provider
.
Registry
.
_enabled_providers
())
self
.
assertIn
(
google_provider
,
provider
.
Registry
.
get_enabled_by_backend_name
(
'google-oauth2'
))
def
test_oauth2_enabled_only_for_supplied_backend
(
self
):
"""
Test to ensure that Registry.get_enabled_by_backend_name doesn't return OAuth2 providers with incorrect
backend_names.
"""
facebook_provider
=
self
.
configure_facebook_provider
(
enabled
=
True
)
self
.
configure_google_provider
(
enabled
=
True
)
self
.
assertNotIn
(
facebook_provider
,
provider
.
Registry
.
get_enabled_by_backend_name
(
'google-oauth2'
))
def
test_get_returns_none_if_provider_not_enabled
(
self
):
linkedin_provider_id
=
"oa2-linkedin-oauth2"
# At this point there should be no configuration entries at all so no providers should be enabled
...
...
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