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
d453f47b
Commit
d453f47b
authored
Jul 29, 2013
by
David Ormsbee
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #501 from edx/gprice/user-api-tweaks
User API Tweaks
parents
a9609986
dc90736b
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
40 additions
and
5 deletions
+40
-5
lms/djangoapps/user_api/tests/test_views.py
+30
-0
lms/djangoapps/user_api/views.py
+9
-4
lms/envs/dev.py
+1
-1
No files found.
lms/djangoapps/user_api/tests/test_views.py
View file @
d453f47b
...
...
@@ -122,6 +122,11 @@ class UserViewSetTest(UserApiTestCase):
def
test_list_unauthorized
(
self
):
self
.
assertHttpForbidden
(
self
.
client
.
get
(
self
.
LIST_URI
))
@override_settings
(
DEBUG
=
True
)
@override_settings
(
EDX_API_KEY
=
None
)
def
test_debug_auth
(
self
):
self
.
assertHttpOK
(
self
.
client
.
get
(
self
.
LIST_URI
))
def
test_get_list_empty
(
self
):
User
.
objects
.
all
()
.
delete
()
result
=
self
.
get_json
(
self
.
LIST_URI
)
...
...
@@ -220,6 +225,11 @@ class UserPreferenceViewSetTest(UserApiTestCase):
def
test_list_unauthorized
(
self
):
self
.
assertHttpForbidden
(
self
.
client
.
get
(
self
.
LIST_URI
))
@override_settings
(
DEBUG
=
True
)
@override_settings
(
EDX_API_KEY
=
None
)
def
test_debug_auth
(
self
):
self
.
assertHttpOK
(
self
.
client
.
get
(
self
.
LIST_URI
))
def
test_get_list_empty
(
self
):
UserPreference
.
objects
.
all
()
.
delete
()
result
=
self
.
get_json
(
self
.
LIST_URI
)
...
...
@@ -252,6 +262,26 @@ class UserPreferenceViewSetTest(UserApiTestCase):
self
.
assertPrefIsValid
(
pref
)
self
.
assertEqual
(
pref
[
"key"
],
"key0"
)
def
test_get_list_filter_user_empty
(
self
):
def
test_id
(
user_id
):
result
=
self
.
get_json
(
self
.
LIST_URI
,
data
=
{
"user"
:
user_id
})
self
.
assertEqual
(
result
[
"count"
],
0
)
self
.
assertEqual
(
result
[
"results"
],
[])
test_id
(
self
.
users
[
2
]
.
id
)
# TODO: If the given id does not match a user, then the filter is a no-op
# test_id(42)
# test_id("asdf")
def
test_get_list_filter_user_nonempty
(
self
):
user_id
=
self
.
users
[
0
]
.
id
result
=
self
.
get_json
(
self
.
LIST_URI
,
data
=
{
"user"
:
user_id
})
self
.
assertEqual
(
result
[
"count"
],
2
)
prefs
=
result
[
"results"
]
self
.
assertEqual
(
len
(
prefs
),
2
)
for
pref
in
prefs
:
self
.
assertPrefIsValid
(
pref
)
self
.
assertEqual
(
pref
[
"user"
][
"id"
],
user_id
)
def
test_get_list_pagination
(
self
):
first_page
=
self
.
get_json
(
self
.
LIST_URI
,
data
=
{
"page_size"
:
2
})
self
.
assertEqual
(
first_page
[
"count"
],
3
)
...
...
lms/djangoapps/user_api/views.py
View file @
d453f47b
...
...
@@ -12,11 +12,16 @@ class ApiKeyHeaderPermission(permissions.BasePermission):
"""
Check for permissions by matching the configured API key and header
settings.EDX_API_KEY must be set, and the X-Edx-Api-Key HTTP header must
be present in the request and match the setting.
If settings.DEBUG is True and settings.EDX_API_KEY is not set or None,
then allow the request. Otherwise, allow the request if and only if
settings.EDX_API_KEY is set and the X-Edx-Api-Key HTTP header is
present in the request and matches the setting.
"""
api_key
=
getattr
(
settings
,
"EDX_API_KEY"
,
None
)
return
api_key
is
not
None
and
request
.
META
.
get
(
"HTTP_X_EDX_API_KEY"
)
==
api_key
return
(
(
settings
.
DEBUG
and
api_key
is
None
)
or
(
api_key
is
not
None
and
request
.
META
.
get
(
"HTTP_X_EDX_API_KEY"
)
==
api_key
)
)
class
UserViewSet
(
viewsets
.
ReadOnlyModelViewSet
):
...
...
@@ -31,7 +36,7 @@ class UserPreferenceViewSet(viewsets.ReadOnlyModelViewSet):
permission_classes
=
(
ApiKeyHeaderPermission
,)
queryset
=
UserPreference
.
objects
.
all
()
filter_backends
=
(
filters
.
DjangoFilterBackend
,)
filter_fields
=
(
"key"
,)
filter_fields
=
(
"key"
,
"user"
)
serializer_class
=
UserPreferenceSerializer
paginate_by
=
10
paginate_by_param
=
"page_size"
lms/envs/dev.py
View file @
d453f47b
...
...
@@ -257,7 +257,7 @@ if SEGMENT_IO_LMS_KEY:
########################## USER API ########################
EDX_API_KEY
=
''
EDX_API_KEY
=
None
#####################################################################
# Lastly, see if the developer has any local overrides.
...
...
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