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
0225e33a
Commit
0225e33a
authored
Aug 06, 2014
by
Matt Drayer
Committed by
Jonathan Piacenti
Aug 20, 2015
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mattdrayer/api-middleware-regex: Support for opaque keys, server API namespace
parent
e093fc25
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
388 additions
and
287 deletions
+388
-287
common/djangoapps/track/contexts.py
+1
-3
common/djangoapps/util/request.py
+0
-3
lms/djangoapps/api_manager/courses/tests.py
+40
-36
lms/djangoapps/api_manager/courses/views.py
+2
-2
lms/djangoapps/api_manager/groups/tests.py
+8
-6
lms/djangoapps/api_manager/management/commands/migrate_courseids.py
+0
-32
lms/djangoapps/api_manager/management/commands/tests/test_migrate_courseids.py
+0
-31
lms/djangoapps/api_manager/organizations/tests.py
+21
-21
lms/djangoapps/api_manager/sessions/test_login_ratelimit.py
+1
-1
lms/djangoapps/api_manager/sessions/test_security.py
+2
-2
lms/djangoapps/api_manager/sessions/tests.py
+2
-2
lms/djangoapps/api_manager/system/tests.py
+1
-1
lms/djangoapps/api_manager/test_permissions.py
+1
-1
lms/djangoapps/api_manager/urls.py
+11
-11
lms/djangoapps/api_manager/users/test_user_password_reset.py
+2
-2
lms/djangoapps/api_manager/users/tests.py
+105
-103
lms/djangoapps/projects/management/commands/migrate_courseids.py
+51
-0
lms/djangoapps/projects/management/commands/tests/test_migrate_courseids.py
+106
-0
lms/djangoapps/projects/tests/test_peer_reviews.py
+5
-5
lms/djangoapps/projects/tests/test_projects.py
+3
-3
lms/djangoapps/projects/tests/test_submission_reviews.py
+5
-5
lms/djangoapps/projects/tests/test_workgroup_reviews.py
+5
-5
lms/djangoapps/projects/tests/test_workgroup_submissions.py
+5
-5
lms/djangoapps/projects/tests/test_workgroups.py
+10
-6
lms/urls.py
+1
-1
No files found.
common/djangoapps/track/contexts.py
View file @
0225e33a
...
@@ -4,7 +4,7 @@ import logging
...
@@ -4,7 +4,7 @@ import logging
from
opaque_keys.edx.locations
import
SlashSeparatedCourseKey
from
opaque_keys.edx.locations
import
SlashSeparatedCourseKey
from
opaque_keys.edx.keys
import
CourseKey
from
opaque_keys.edx.keys
import
CourseKey
from
opaque_keys
import
InvalidKeyError
from
opaque_keys
import
InvalidKeyError
from
util.request
import
COURSE_REGEX
from
util.request
import
course_id_from_url
,
COURSE_REGEX
log
=
logging
.
getLogger
(
__name__
)
log
=
logging
.
getLogger
(
__name__
)
...
@@ -15,7 +15,6 @@ def course_context_from_url(url):
...
@@ -15,7 +15,6 @@ def course_context_from_url(url):
`course_context_from_course_id()`.
`course_context_from_course_id()`.
"""
"""
url
=
url
or
''
url
=
url
or
''
match
=
COURSE_REGEX
.
match
(
url
)
match
=
COURSE_REGEX
.
match
(
url
)
course_id
=
None
course_id
=
None
if
match
:
if
match
:
...
@@ -29,7 +28,6 @@ def course_context_from_url(url):
...
@@ -29,7 +28,6 @@ def course_context_from_url(url):
),
),
exc_info
=
True
exc_info
=
True
)
)
return
course_context_from_course_id
(
course_id
)
return
course_context_from_course_id
(
course_id
)
...
...
common/djangoapps/util/request.py
View file @
0225e33a
...
@@ -50,12 +50,9 @@ def course_id_from_url(url):
...
@@ -50,12 +50,9 @@ def course_id_from_url(url):
key_generator
=
CourseKey
.
from_string
key_generator
=
CourseKey
.
from_string
match
=
COURSE_REGEX
.
match
(
url
)
match
=
COURSE_REGEX
.
match
(
url
)
if
match
is
None
:
if
match
is
None
:
return
None
return
None
course_id
=
match
.
group
(
'course_id'
)
course_id
=
match
.
group
(
'course_id'
)
if
course_id
is
None
:
if
course_id
is
None
:
return
None
return
None
...
...
lms/djangoapps/api_manager/courses/tests.py
View file @
0225e33a
...
@@ -53,9 +53,12 @@ class CoursesApiTests(TestCase):
...
@@ -53,9 +53,12 @@ class CoursesApiTests(TestCase):
def
setUp
(
self
):
def
setUp
(
self
):
self
.
test_server_prefix
=
'https://testserver'
self
.
test_server_prefix
=
'https://testserver'
self
.
base_courses_uri
=
'/api/courses'
self
.
base_courses_uri
=
'/api/server/courses'
self
.
base_groups_uri
=
'/api/groups'
self
.
base_groups_uri
=
'/api/server/groups'
self
.
base_users_uri
=
'/api/users'
self
.
base_users_uri
=
'/api/server/users'
self
.
base_organizations_uri
=
'/api/server/organizations/'
self
.
base_projects_uri
=
'/api/server/projects/'
self
.
base_workgroups_uri
=
'/api/server/workgroups/'
self
.
test_group_name
=
'Alpha Group'
self
.
test_group_name
=
'Alpha Group'
self
.
attempts
=
3
self
.
attempts
=
3
...
@@ -203,7 +206,7 @@ class CoursesApiTests(TestCase):
...
@@ -203,7 +206,7 @@ class CoursesApiTests(TestCase):
self
.
test_course_content_id
=
unicode
(
self
.
course_content
.
scope_ids
.
usage_id
)
self
.
test_course_content_id
=
unicode
(
self
.
course_content
.
scope_ids
.
usage_id
)
self
.
test_bogus_content_id
=
"j5y://foo/bar/baz"
self
.
test_bogus_content_id
=
"j5y://foo/bar/baz"
self
.
test_content_child_id
=
unicode
(
self
.
content_child
.
scope_ids
.
usage_id
)
self
.
test_content_child_id
=
unicode
(
self
.
content_child
.
scope_ids
.
usage_id
)
self
.
base_course_content_uri
=
'
/api/courses/'
+
self
.
test_course_id
+
'/content'
self
.
base_course_content_uri
=
'
{}/{}/content'
.
format
(
self
.
base_courses_uri
,
self
.
test_course_id
)
self
.
base_chapters_uri
=
self
.
base_course_content_uri
+
'?type=chapter'
self
.
base_chapters_uri
=
self
.
base_course_content_uri
+
'?type=chapter'
self
.
client
=
SecureClient
()
self
.
client
=
SecureClient
()
...
@@ -846,7 +849,7 @@ class CoursesApiTests(TestCase):
...
@@ -846,7 +849,7 @@ class CoursesApiTests(TestCase):
def
test_courses_users_list_post_existing_user
(
self
):
def
test_courses_users_list_post_existing_user
(
self
):
# create a new user (note, this calls into the /users/ subsystem)
# create a new user (note, this calls into the /users/ subsystem)
test_uri
=
self
.
base_courses_uri
+
'/'
+
self
.
test_course_id
+
'/users'
test_uri
=
self
.
base_courses_uri
+
'/'
+
self
.
test_course_id
+
'/users'
test_user_uri
=
'/api/users'
test_user_uri
=
self
.
base_users_uri
local_username
=
"some_test_user"
+
str
(
randint
(
11
,
99
))
local_username
=
"some_test_user"
+
str
(
randint
(
11
,
99
))
local_email
=
"test+notpending@tester.com"
local_email
=
"test+notpending@tester.com"
data
=
{
data
=
{
...
@@ -892,7 +895,7 @@ class CoursesApiTests(TestCase):
...
@@ -892,7 +895,7 @@ class CoursesApiTests(TestCase):
def
test_courses_users_list_get
(
self
):
def
test_courses_users_list_get
(
self
):
# create a new user (note, this calls into the /users/ subsystem)
# create a new user (note, this calls into the /users/ subsystem)
test_uri
=
self
.
base_courses_uri
+
'/'
+
self
.
test_course_id
+
'/users'
test_uri
=
self
.
base_courses_uri
+
'/'
+
self
.
test_course_id
+
'/users'
test_user_uri
=
'/api/users'
test_user_uri
=
self
.
base_users_uri
local_username
=
"some_test_user"
+
str
(
randint
(
11
,
99
))
local_username
=
"some_test_user"
+
str
(
randint
(
11
,
99
))
local_email
=
"test+notpending@tester.com"
local_email
=
"test+notpending@tester.com"
data
=
{
data
=
{
...
@@ -924,7 +927,7 @@ class CoursesApiTests(TestCase):
...
@@ -924,7 +927,7 @@ class CoursesApiTests(TestCase):
'first_name'
:
'John{}'
.
format
(
i
),
'first_name'
:
'John{}'
.
format
(
i
),
'last_name'
:
'Doe{}'
.
format
(
i
)
'last_name'
:
'Doe{}'
.
format
(
i
)
}
}
response
=
self
.
do_post
(
'/api/users'
,
data
)
response
=
self
.
do_post
(
self
.
base_users_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
users
.
append
(
response
.
data
[
'id'
])
users
.
append
(
response
.
data
[
'id'
])
...
@@ -936,7 +939,7 @@ class CoursesApiTests(TestCase):
...
@@ -936,7 +939,7 @@ class CoursesApiTests(TestCase):
'display_name'
:
'{} {}'
.
format
(
'Test Org Display Name'
,
i
),
'display_name'
:
'{} {}'
.
format
(
'Test Org Display Name'
,
i
),
'users'
:
[
users
[
i
]]
'users'
:
[
users
[
i
]]
}
}
response
=
self
.
do_post
(
'/api/organizations/'
,
data
)
response
=
self
.
do_post
(
self
.
base_organizations_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertGreater
(
response
.
data
[
'id'
],
0
)
self
.
assertGreater
(
response
.
data
[
'id'
],
0
)
org_ids
.
append
(
response
.
data
[
'id'
])
org_ids
.
append
(
response
.
data
[
'id'
])
...
@@ -982,7 +985,7 @@ class CoursesApiTests(TestCase):
...
@@ -982,7 +985,7 @@ class CoursesApiTests(TestCase):
'first_name'
:
'John{}'
.
format
(
i
),
'first_name'
:
'John{}'
.
format
(
i
),
'last_name'
:
'Doe{}'
.
format
(
i
)
'last_name'
:
'Doe{}'
.
format
(
i
)
}
}
response
=
self
.
do_post
(
'/api/users'
,
data
)
response
=
self
.
do_post
(
self
.
base_users_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
users
.
append
(
response
.
data
[
'id'
])
users
.
append
(
response
.
data
[
'id'
])
if
i
<
2
:
if
i
<
2
:
...
@@ -1014,7 +1017,7 @@ class CoursesApiTests(TestCase):
...
@@ -1014,7 +1017,7 @@ class CoursesApiTests(TestCase):
def
test_courses_users_detail_get
(
self
):
def
test_courses_users_detail_get
(
self
):
test_uri
=
self
.
base_courses_uri
+
'/'
+
self
.
test_course_id
+
'/users'
test_uri
=
self
.
base_courses_uri
+
'/'
+
self
.
test_course_id
+
'/users'
test_user_uri
=
'/api/users'
test_user_uri
=
self
.
base_users_uri
local_username
=
"some_test_user"
+
str
(
randint
(
11
,
99
))
local_username
=
"some_test_user"
+
str
(
randint
(
11
,
99
))
local_email
=
"test+notpending@tester.com"
local_email
=
"test+notpending@tester.com"
data
=
{
data
=
{
...
@@ -1058,7 +1061,7 @@ class CoursesApiTests(TestCase):
...
@@ -1058,7 +1061,7 @@ class CoursesApiTests(TestCase):
def
test_courses_users_detail_delete
(
self
):
def
test_courses_users_detail_delete
(
self
):
test_uri
=
self
.
base_courses_uri
+
'/'
+
self
.
test_course_id
+
'/users'
test_uri
=
self
.
base_courses_uri
+
'/'
+
self
.
test_course_id
+
'/users'
test_user_uri
=
'/api/users'
test_user_uri
=
self
.
base_users_uri
local_username
=
"some_test_user"
+
str
(
randint
(
11
,
99
))
local_username
=
"some_test_user"
+
str
(
randint
(
11
,
99
))
local_email
=
"test+notpending@tester.com"
local_email
=
"test+notpending@tester.com"
data
=
{
data
=
{
...
@@ -1711,7 +1714,7 @@ class CoursesApiTests(TestCase):
...
@@ -1711,7 +1714,7 @@ class CoursesApiTests(TestCase):
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_course_project_list
(
self
):
def
test_course_project_list
(
self
):
projects_uri
=
'/api/projects/'
projects_uri
=
self
.
base_projects_uri
for
i
in
xrange
(
0
,
25
):
for
i
in
xrange
(
0
,
25
):
local_content_name
=
'Video_Sequence{}'
.
format
(
i
)
local_content_name
=
'Video_Sequence{}'
.
format
(
i
)
...
@@ -1736,7 +1739,7 @@ class CoursesApiTests(TestCase):
...
@@ -1736,7 +1739,7 @@ class CoursesApiTests(TestCase):
def
test_courses_data_metrics
(
self
):
def
test_courses_data_metrics
(
self
):
test_uri
=
self
.
base_courses_uri
+
'/'
+
self
.
test_course_id
+
'/users'
test_uri
=
self
.
base_courses_uri
+
'/'
+
self
.
test_course_id
+
'/users'
test_user_uri
=
'/api/users'
test_user_uri
=
self
.
base_users_uri
users_to_add
=
5
users_to_add
=
5
for
i
in
xrange
(
0
,
users_to_add
):
for
i
in
xrange
(
0
,
users_to_add
):
data
=
{
data
=
{
...
@@ -1754,17 +1757,18 @@ class CoursesApiTests(TestCase):
...
@@ -1754,17 +1757,18 @@ class CoursesApiTests(TestCase):
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
# get course metrics
# get course metrics
course_metrics_uri
=
'
/api/courses/{}/metrics/'
course_metrics_uri
=
'
{}/{}/metrics/'
.
format
(
self
.
base_courses_uri
,
self
.
test_course_id
)
response
=
self
.
do_get
(
course_metrics_uri
.
format
(
self
.
test_course_id
)
)
response
=
self
.
do_get
(
course_metrics_uri
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
data
[
'users_enrolled'
],
users_to_add
+
USER_COUNT
)
self
.
assertEqual
(
response
.
data
[
'users_enrolled'
],
users_to_add
+
USER_COUNT
)
# test with bogus course
# test with bogus course
response
=
self
.
do_get
(
course_metrics_uri
.
format
(
self
.
test_bogus_course_id
))
course_metrics_uri
=
'{}/{}/metrics/'
.
format
(
self
.
base_courses_uri
,
self
.
test_bogus_course_id
)
response
=
self
.
do_get
(
course_metrics_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_course_workgroups_list
(
self
):
def
test_course_workgroups_list
(
self
):
projects_uri
=
'/api/projects/'
projects_uri
=
self
.
base_projects_uri
data
=
{
data
=
{
'course_id'
:
self
.
test_course_id
,
'course_id'
:
self
.
test_course_id
,
'content_id'
:
'self.test_course_content_id'
'content_id'
:
'self.test_course_content_id'
...
@@ -1773,7 +1777,7 @@ class CoursesApiTests(TestCase):
...
@@ -1773,7 +1777,7 @@ class CoursesApiTests(TestCase):
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
project_id
=
response
.
data
[
'id'
]
project_id
=
response
.
data
[
'id'
]
test_workgroups_uri
=
'/api/workgroups/'
test_workgroups_uri
=
self
.
base_workgroups_uri
for
i
in
xrange
(
1
,
12
):
for
i
in
xrange
(
1
,
12
):
data
=
{
data
=
{
'name'
:
'{} {}'
.
format
(
'Workgroup'
,
i
),
'name'
:
'{} {}'
.
format
(
'Workgroup'
,
i
),
...
@@ -1783,19 +1787,19 @@ class CoursesApiTests(TestCase):
...
@@ -1783,19 +1787,19 @@ class CoursesApiTests(TestCase):
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
# get workgroups associated to course
# get workgroups associated to course
test_uri
=
'
/api/courses/{}/workgroups/?page_size=10'
.
format
(
self
.
test_course_id
)
test_uri
=
'
{}/{}/workgroups/?page_size=10'
.
format
(
self
.
base_courses_uri
,
self
.
test_course_id
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
data
[
'count'
],
11
)
self
.
assertEqual
(
response
.
data
[
'count'
],
11
)
self
.
assertEqual
(
len
(
response
.
data
[
'results'
]),
10
)
self
.
assertEqual
(
len
(
response
.
data
[
'results'
]),
10
)
self
.
assertEqual
(
response
.
data
[
'num_pages'
],
2
)
self
.
assertEqual
(
response
.
data
[
'num_pages'
],
2
)
# test with bogus course
# test with bogus course
test_uri
=
'
/api/courses/{}/workgroups/'
.
format
(
self
.
test_bogus_course_id
)
test_uri
=
'
{}/{}/workgroups/'
.
format
(
self
.
base_courses_uri
,
self
.
test_bogus_course_id
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_course_users_count_by_city
(
self
):
def
test_course_users_count_by_city
(
self
):
test_uri
=
'/api/users'
test_uri
=
self
.
base_users_uri
# create a 25 new users
# create a 25 new users
for
i
in
xrange
(
1
,
26
):
for
i
in
xrange
(
1
,
26
):
...
@@ -1834,15 +1838,15 @@ class CoursesApiTests(TestCase):
...
@@ -1834,15 +1838,15 @@ class CoursesApiTests(TestCase):
for
user
in
self
.
users
:
for
user
in
self
.
users
:
allow_access
(
self
.
course
,
user
,
'observer'
)
allow_access
(
self
.
course
,
user
,
'observer'
)
response
=
self
.
do_get
(
'{}
{}{}'
.
format
(
'/api/courses/'
,
self
.
test_course_id
,
'/metrics/cities/'
))
response
=
self
.
do_get
(
'{}
/{}/metrics/cities/'
.
format
(
self
.
base_courses_uri
,
self
.
test_course_id
))
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
len
(
response
.
data
[
'results'
]),
4
)
self
.
assertEqual
(
len
(
response
.
data
[
'results'
]),
4
)
self
.
assertEqual
(
response
.
data
[
'results'
][
0
][
'city'
],
'San Francisco'
)
self
.
assertEqual
(
response
.
data
[
'results'
][
0
][
'city'
],
'San Francisco'
)
self
.
assertEqual
(
response
.
data
[
'results'
][
0
][
'count'
],
9
)
self
.
assertEqual
(
response
.
data
[
'results'
][
0
][
'count'
],
9
)
# filter counts by city
# filter counts by city
response
=
self
.
do_get
(
'{}{}{}'
.
format
(
'/api/courses/'
,
self
.
test_course_id
,
sf_uri
=
'{}/{}/metrics/cities/?city=new york city, San Francisco'
.
format
(
self
.
base_courses_uri
,
self
.
test_course_id
)
'/metrics/cities/?city=new york city, San Francisco'
)
)
response
=
self
.
do_get
(
sf_uri
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
len
(
response
.
data
[
'results'
]),
2
)
self
.
assertEqual
(
len
(
response
.
data
[
'results'
]),
2
)
self
.
assertEqual
(
response
.
data
[
'results'
][
0
][
'city'
],
'San Francisco'
)
self
.
assertEqual
(
response
.
data
[
'results'
][
0
][
'city'
],
'San Francisco'
)
...
@@ -1851,8 +1855,8 @@ class CoursesApiTests(TestCase):
...
@@ -1851,8 +1855,8 @@ class CoursesApiTests(TestCase):
self
.
assertEqual
(
response
.
data
[
'results'
][
1
][
'count'
],
6
)
self
.
assertEqual
(
response
.
data
[
'results'
][
1
][
'count'
],
6
)
# filter counts by city
# filter counts by city
response
=
self
.
do_get
(
'{}{}{}'
.
format
(
'/api/courses/'
,
self
.
test_course_id
,
dnv_uri
=
'{}/{}/metrics/cities/?city=Denver'
.
format
(
self
.
base_courses_uri
,
self
.
test_course_id
)
'/metrics/cities/?city=Denver'
)
)
response
=
self
.
do_get
(
dnv_uri
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
len
(
response
.
data
[
'results'
]),
1
)
self
.
assertEqual
(
len
(
response
.
data
[
'results'
]),
1
)
self
.
assertEqual
(
response
.
data
[
'results'
][
0
][
'city'
],
'Denver'
)
self
.
assertEqual
(
response
.
data
[
'results'
][
0
][
'city'
],
'Denver'
)
...
@@ -1862,7 +1866,7 @@ class CoursesApiTests(TestCase):
...
@@ -1862,7 +1866,7 @@ class CoursesApiTests(TestCase):
allow_access
(
self
.
course
,
self
.
users
[
0
],
'staff'
)
allow_access
(
self
.
course
,
self
.
users
[
0
],
'staff'
)
allow_access
(
self
.
course
,
self
.
users
[
1
],
'instructor'
)
allow_access
(
self
.
course
,
self
.
users
[
1
],
'instructor'
)
allow_access
(
self
.
course
,
self
.
users
[
2
],
'observer'
)
allow_access
(
self
.
course
,
self
.
users
[
2
],
'observer'
)
test_uri
=
'
/api/courses/{}/roles/'
.
format
(
unicode
(
self
.
course
.
id
))
test_uri
=
'
{}/{}/roles/'
.
format
(
self
.
base_courses_uri
,
unicode
(
self
.
course
.
id
))
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
len
(
response
.
data
),
3
)
self
.
assertEqual
(
len
(
response
.
data
),
3
)
...
@@ -1887,12 +1891,12 @@ class CoursesApiTests(TestCase):
...
@@ -1887,12 +1891,12 @@ class CoursesApiTests(TestCase):
self
.
assertEqual
(
len
(
response
.
data
),
0
)
self
.
assertEqual
(
len
(
response
.
data
),
0
)
def
test_courses_roles_list_get_invalid_course
(
self
):
def
test_courses_roles_list_get_invalid_course
(
self
):
test_uri
=
'
/api/courses/{}/roles/'
.
format
(
self
.
test_bogus_course_id
)
test_uri
=
'
{}/{}/roles/'
.
format
(
self
.
base_courses_uri
,
self
.
test_bogus_course_id
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_courses_roles_list_post
(
self
):
def
test_courses_roles_list_post
(
self
):
test_uri
=
'
/api/courses/{}/roles/'
.
format
(
unicode
(
self
.
course
.
id
))
test_uri
=
'
{}/{}/roles/'
.
format
(
self
.
base_courses_uri
,
unicode
(
self
.
course
.
id
))
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
len
(
response
.
data
),
0
)
self
.
assertEqual
(
len
(
response
.
data
),
0
)
...
@@ -1910,25 +1914,25 @@ class CoursesApiTests(TestCase):
...
@@ -1910,25 +1914,25 @@ class CoursesApiTests(TestCase):
self
.
assertTrue
(
has_role
)
self
.
assertTrue
(
has_role
)
def
test_courses_roles_list_post_invalid_course
(
self
):
def
test_courses_roles_list_post_invalid_course
(
self
):
test_uri
=
'
/api/courses/{}/roles/'
.
format
(
self
.
test_bogus_course_id
)
test_uri
=
'
{}/{}/roles/'
.
format
(
self
.
base_courses_uri
,
self
.
test_bogus_course_id
)
data
=
{
'user_id'
:
self
.
users
[
0
]
.
id
,
'role'
:
'instructor'
}
data
=
{
'user_id'
:
self
.
users
[
0
]
.
id
,
'role'
:
'instructor'
}
response
=
self
.
do_post
(
test_uri
,
data
)
response
=
self
.
do_post
(
test_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_courses_roles_list_post_invalid_user
(
self
):
def
test_courses_roles_list_post_invalid_user
(
self
):
test_uri
=
'
/api/courses/{}/roles/'
.
format
(
unicode
(
self
.
course
.
id
))
test_uri
=
'
{}/{}/roles/'
.
format
(
self
.
base_courses_uri
,
unicode
(
self
.
course
.
id
))
data
=
{
'user_id'
:
23423
,
'role'
:
'instructor'
}
data
=
{
'user_id'
:
23423
,
'role'
:
'instructor'
}
response
=
self
.
do_post
(
test_uri
,
data
)
response
=
self
.
do_post
(
test_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
400
)
self
.
assertEqual
(
response
.
status_code
,
400
)
def
test_courses_roles_list_post_invalid_role
(
self
):
def
test_courses_roles_list_post_invalid_role
(
self
):
test_uri
=
'
/api/courses/{}/roles/'
.
format
(
unicode
(
self
.
course
.
id
))
test_uri
=
'
{}/{}/roles/'
.
format
(
self
.
base_courses_uri
,
unicode
(
self
.
course
.
id
))
data
=
{
'user_id'
:
self
.
users
[
0
]
.
id
,
'role'
:
'invalid_role'
}
data
=
{
'user_id'
:
self
.
users
[
0
]
.
id
,
'role'
:
'invalid_role'
}
response
=
self
.
do_post
(
test_uri
,
data
)
response
=
self
.
do_post
(
test_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
400
)
self
.
assertEqual
(
response
.
status_code
,
400
)
def
test_courses_roles_users_detail_delete
(
self
):
def
test_courses_roles_users_detail_delete
(
self
):
test_uri
=
'
/api/courses/{}/roles/'
.
format
(
unicode
(
self
.
course
.
id
))
test_uri
=
'
{}/{}/roles/'
.
format
(
self
.
base_courses_uri
,
unicode
(
self
.
course
.
id
))
data
=
{
'user_id'
:
self
.
users
[
0
]
.
id
,
'role'
:
'instructor'
}
data
=
{
'user_id'
:
self
.
users
[
0
]
.
id
,
'role'
:
'instructor'
}
response
=
self
.
do_post
(
test_uri
,
data
)
response
=
self
.
do_post
(
test_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
...
@@ -1952,19 +1956,19 @@ class CoursesApiTests(TestCase):
...
@@ -1952,19 +1956,19 @@ class CoursesApiTests(TestCase):
pass
pass
def
test_courses_roles_users_detail_delete_invalid_course
(
self
):
def
test_courses_roles_users_detail_delete_invalid_course
(
self
):
test_uri
=
'
/api/courses/{}/roles/'
.
format
(
self
.
test_bogus_course_id
)
test_uri
=
'
{}/{}/roles/'
.
format
(
self
.
base_courses_uri
,
self
.
test_bogus_course_id
)
delete_uri
=
'{}instructor/users/{}'
.
format
(
test_uri
,
self
.
users
[
0
]
.
id
)
delete_uri
=
'{}instructor/users/{}'
.
format
(
test_uri
,
self
.
users
[
0
]
.
id
)
response
=
self
.
do_delete
(
delete_uri
)
response
=
self
.
do_delete
(
delete_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_courses_roles_users_detail_delete_invalid_user
(
self
):
def
test_courses_roles_users_detail_delete_invalid_user
(
self
):
test_uri
=
'
/api/courses/{}/roles/'
.
format
(
unicode
(
self
.
course
.
id
))
test_uri
=
'
{}/{}/roles/'
.
format
(
self
.
base_courses_uri
,
unicode
(
self
.
course
.
id
))
delete_uri
=
'{}instructor/users/291231'
.
format
(
test_uri
)
delete_uri
=
'{}instructor/users/291231'
.
format
(
test_uri
)
response
=
self
.
do_delete
(
delete_uri
)
response
=
self
.
do_delete
(
delete_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_courses_roles_users_detail_delete_invalid_role
(
self
):
def
test_courses_roles_users_detail_delete_invalid_role
(
self
):
test_uri
=
'
/api/courses/{}/roles/'
.
format
(
unicode
(
self
.
course
.
id
))
test_uri
=
'
{}/{}/roles/'
.
format
(
self
.
base_courses_uri
,
unicode
(
self
.
course
.
id
))
delete_uri
=
'{}invalid_role/users/{}'
.
format
(
test_uri
,
self
.
users
[
0
]
.
id
)
delete_uri
=
'{}invalid_role/users/{}'
.
format
(
test_uri
,
self
.
users
[
0
]
.
id
)
response
=
self
.
do_delete
(
delete_uri
)
response
=
self
.
do_delete
(
delete_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
lms/djangoapps/api_manager/courses/views.py
View file @
0225e33a
...
@@ -83,7 +83,7 @@ def _serialize_content(request, content_key, content_descriptor):
...
@@ -83,7 +83,7 @@ def _serialize_content(request, content_key, content_descriptor):
protocol
=
'http'
protocol
=
'http'
if
request
.
is_secure
():
if
request
.
is_secure
():
protocol
=
protocol
+
's'
protocol
=
protocol
+
's'
content_uri
=
'{}://{}/api/courses/{}'
.
format
(
content_uri
=
'{}://{}/api/
server/
courses/{}'
.
format
(
protocol
,
protocol
,
request
.
get_host
(),
request
.
get_host
(),
unicode
(
content_key
)
unicode
(
content_key
)
...
@@ -466,7 +466,7 @@ class CourseContentDetail(SecureAPIView):
...
@@ -466,7 +466,7 @@ class CourseContentDetail(SecureAPIView):
protocol
=
'http'
protocol
=
'http'
if
request
.
is_secure
():
if
request
.
is_secure
():
protocol
=
protocol
+
's'
protocol
=
protocol
+
's'
response_data
[
'uri'
]
=
'{}://{}/api/courses/{}'
.
format
(
response_data
[
'uri'
]
=
'{}://{}/api/
server/
courses/{}'
.
format
(
protocol
,
protocol
,
request
.
get_host
(),
request
.
get_host
(),
unicode
(
course_key
)
unicode
(
course_key
)
...
...
lms/djangoapps/api_manager/groups/tests.py
View file @
0225e33a
...
@@ -42,8 +42,9 @@ class GroupsApiTests(ModuleStoreTestCase):
...
@@ -42,8 +42,9 @@ class GroupsApiTests(ModuleStoreTestCase):
self
.
test_group_name
=
str
(
uuid
.
uuid4
())
self
.
test_group_name
=
str
(
uuid
.
uuid4
())
self
.
test_first_name
=
str
(
uuid
.
uuid4
())
self
.
test_first_name
=
str
(
uuid
.
uuid4
())
self
.
test_last_name
=
str
(
uuid
.
uuid4
())
self
.
test_last_name
=
str
(
uuid
.
uuid4
())
self
.
base_users_uri
=
'/api/users'
self
.
base_users_uri
=
'/api/server/users'
self
.
base_groups_uri
=
'/api/groups'
self
.
base_groups_uri
=
'/api/server/groups'
self
.
base_workgroups_uri
=
'/api/server/workgroups/'
self
.
test_course_data
=
'<html>{}</html>'
.
format
(
str
(
uuid
.
uuid4
()))
self
.
test_course_data
=
'<html>{}</html>'
.
format
(
str
(
uuid
.
uuid4
()))
self
.
course
=
CourseFactory
.
create
()
self
.
course
=
CourseFactory
.
create
()
...
@@ -965,7 +966,7 @@ class GroupsApiTests(ModuleStoreTestCase):
...
@@ -965,7 +966,7 @@ class GroupsApiTests(ModuleStoreTestCase):
response
=
self
.
do_post
(
self
.
base_groups_uri
,
data
)
response
=
self
.
do_post
(
self
.
base_groups_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
group_id
=
response
.
data
[
'id'
]
group_id
=
response
.
data
[
'id'
]
test_workgroups_uri
=
'/api/workgroups/'
test_workgroups_uri
=
self
.
base_workgroups_uri
for
i
in
xrange
(
1
,
12
):
for
i
in
xrange
(
1
,
12
):
project_id
=
self
.
test_project
.
id
project_id
=
self
.
test_project
.
id
data
=
{
data
=
{
...
@@ -981,7 +982,7 @@ class GroupsApiTests(ModuleStoreTestCase):
...
@@ -981,7 +982,7 @@ class GroupsApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
# test to get list of workgroups
# test to get list of workgroups
test_uri
=
'
/api/groups/{}/workgroups/?page_size=10'
.
format
(
group_id
)
test_uri
=
'
{}/{}/workgroups/?page_size=10'
.
format
(
self
.
base_groups_uri
,
group_id
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
data
[
'count'
],
11
)
self
.
assertEqual
(
response
.
data
[
'count'
],
11
)
self
.
assertEqual
(
len
(
response
.
data
[
'results'
]),
10
)
self
.
assertEqual
(
len
(
response
.
data
[
'results'
]),
10
)
...
@@ -989,12 +990,13 @@ class GroupsApiTests(ModuleStoreTestCase):
...
@@ -989,12 +990,13 @@ class GroupsApiTests(ModuleStoreTestCase):
# test with course_id filter
# test with course_id filter
course_id
=
{
'course_id'
:
unicode
(
self
.
course
.
id
)}
course_id
=
{
'course_id'
:
unicode
(
self
.
course
.
id
)}
response
=
self
.
do_get
(
'/api/groups/{}/workgroups/?{}'
.
format
(
group_id
,
urlencode
(
course_id
)))
groups_uri
=
'{}/{}/workgroups/?{}'
.
format
(
self
.
base_groups_uri
,
group_id
,
urlencode
(
course_id
))
response
=
self
.
do_get
(
groups_uri
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
data
[
'count'
],
11
)
self
.
assertEqual
(
response
.
data
[
'count'
],
11
)
self
.
assertIsNotNone
(
response
.
data
[
'results'
][
0
][
'name'
])
self
.
assertIsNotNone
(
response
.
data
[
'results'
][
0
][
'name'
])
self
.
assertIsNotNone
(
response
.
data
[
'results'
][
0
][
'project'
])
self
.
assertIsNotNone
(
response
.
data
[
'results'
][
0
][
'project'
])
# test with invalid group id
# test with invalid group id
response
=
self
.
do_get
(
'
/api/groups/4356340/workgroups/'
)
response
=
self
.
do_get
(
'
{}/4356340/workgroups/'
.
format
(
self
.
base_groups_uri
)
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
lms/djangoapps/api_manager/management/commands/migrate_courseids.py
View file @
0225e33a
...
@@ -8,7 +8,6 @@ from django.test import RequestFactory
...
@@ -8,7 +8,6 @@ from django.test import RequestFactory
from
api_manager
import
models
as
api_models
from
api_manager
import
models
as
api_models
from
api_manager.courseware_access
import
get_course
,
get_course_child
from
api_manager.courseware_access
import
get_course
,
get_course_child
from
opaque_keys
import
InvalidKeyError
from
opaque_keys
import
InvalidKeyError
from
projects
import
models
as
project_models
class
Command
(
BaseCommand
):
class
Command
(
BaseCommand
):
...
@@ -21,37 +20,6 @@ class Command(BaseCommand):
...
@@ -21,37 +20,6 @@ class Command(BaseCommand):
request
=
request_factory
.
get
(
'/'
)
request
=
request_factory
.
get
(
'/'
)
request
.
user
=
User
(
email
=
'migration@edx.org'
,
username
=
'migration'
,
password
=
'migration'
,
is_active
=
True
)
request
.
user
=
User
(
email
=
'migration@edx.org'
,
username
=
'migration'
,
password
=
'migration'
,
is_active
=
True
)
projects
=
project_models
.
Project
.
objects
.
all
()
for
project
in
projects
:
course_descriptor
,
course_key
,
course_content
=
get_course
(
request
,
request
.
user
,
project
.
course_id
)
project
.
course_id
=
unicode
(
course_key
)
try
:
project
.
content_id
=
course_key
.
make_usage_key_from_deprecated_string
(
project
.
content_id
)
except
InvalidKeyError
:
pass
# If the key conversion fails it was either a new-style key or junk data
project
.
save
()
workgroup_reviews
=
project_models
.
WorkgroupReview
.
objects
.
all
()
for
wr
in
workgroup_reviews
:
course_id
=
wr
.
workgroup
.
project
.
course_id
course_descriptor
,
course_key
,
course_content
=
get_course
(
request
,
request
.
user
,
course_id
)
try
:
wr
.
content_id
=
course_key
.
make_usage_key_from_deprecated_string
(
wr
.
content_id
)
except
InvalidKeyError
:
pass
# If the key conversion fails it was either a new-style key or junk data
wr
.
save
()
workgroup_submission_reviews
=
project_models
.
WorkgroupSubmissionReview
.
objects
.
all
()
for
wsr
in
workgroup_submission_reviews
:
course_id
=
wsr
.
submission
.
workgroup
.
project
.
course_id
course_descriptor
,
course_key
,
course_content
=
get_course
(
request
,
request
.
user
,
course_id
)
try
:
wsr
.
content_id
=
course_key
.
make_usage_key_from_deprecated_string
(
wsr
.
content_id
)
except
InvalidKeyError
:
pass
# If the key conversion fails it was either a new-style key or junk data
wsr
.
save
()
course_groups
=
api_models
.
CourseGroupRelationship
.
objects
.
all
()
course_groups
=
api_models
.
CourseGroupRelationship
.
objects
.
all
()
for
cg
in
course_groups
:
for
cg
in
course_groups
:
course_id
=
cg
.
course_id
course_id
=
cg
.
course_id
...
...
lms/djangoapps/api_manager/management/commands/tests/test_migrate_courseids.py
View file @
0225e33a
...
@@ -9,7 +9,6 @@ from django.contrib.auth.models import Group, User
...
@@ -9,7 +9,6 @@ from django.contrib.auth.models import Group, User
from
api_manager
import
models
as
api_models
from
api_manager
import
models
as
api_models
from
api_manager.management.commands
import
migrate_courseids
from
api_manager.management.commands
import
migrate_courseids
from
projects
import
models
as
project_models
from
xmodule.modulestore.tests.django_utils
import
ModuleStoreTestCase
from
xmodule.modulestore.tests.django_utils
import
ModuleStoreTestCase
from
xmodule.modulestore.tests.factories
import
CourseFactory
,
ItemFactory
from
xmodule.modulestore.tests.factories
import
CourseFactory
,
ItemFactory
...
@@ -63,11 +62,6 @@ class MigrateCourseIdsTests(ModuleStoreTestCase):
...
@@ -63,11 +62,6 @@ class MigrateCourseIdsTests(ModuleStoreTestCase):
"""
"""
# Set up the data to be migrated
# Set up the data to be migrated
user
=
User
.
objects
.
create
(
email
=
'testuser@edx.org'
,
username
=
'testuser'
,
password
=
'testpassword'
,
is_active
=
True
)
user
=
User
.
objects
.
create
(
email
=
'testuser@edx.org'
,
username
=
'testuser'
,
password
=
'testpassword'
,
is_active
=
True
)
project
=
project_models
.
Project
.
objects
.
create
(
course_id
=
self
.
old_style_course_id
,
content_id
=
self
.
old_style_content_id
)
workgroup
=
project_models
.
Workgroup
.
objects
.
create
(
name
=
'Test Workgroup'
,
project
=
project
)
workgroup_review
=
project_models
.
WorkgroupReview
.
objects
.
create
(
workgroup
=
workgroup
,
content_id
=
self
.
old_style_content_id
)
workgroup_submission
=
project_models
.
WorkgroupSubmission
.
objects
.
create
(
workgroup
=
workgroup
,
user
=
user
)
workgroup_submission_review
=
project_models
.
WorkgroupSubmissionReview
.
objects
.
create
(
submission
=
workgroup_submission
,
content_id
=
self
.
old_style_content_id
)
group
=
Group
.
objects
.
create
(
name
=
'Test Group'
)
group
=
Group
.
objects
.
create
(
name
=
'Test Group'
)
group_profile
=
api_models
.
GroupProfile
.
objects
.
create
(
group
=
group
)
group_profile
=
api_models
.
GroupProfile
.
objects
.
create
(
group
=
group
)
course_group
=
api_models
.
CourseGroupRelationship
.
objects
.
create
(
course_id
=
self
.
old_style_course_id
,
group
=
group
)
course_group
=
api_models
.
CourseGroupRelationship
.
objects
.
create
(
course_id
=
self
.
old_style_course_id
,
group
=
group
)
...
@@ -75,11 +69,6 @@ class MigrateCourseIdsTests(ModuleStoreTestCase):
...
@@ -75,11 +69,6 @@ class MigrateCourseIdsTests(ModuleStoreTestCase):
course_module_completion
=
api_models
.
CourseModuleCompletion
.
objects
.
create
(
user
=
user
,
course_id
=
self
.
old_style_course_id
,
content_id
=
self
.
old_style_content_id
)
course_module_completion
=
api_models
.
CourseModuleCompletion
.
objects
.
create
(
user
=
user
,
course_id
=
self
.
old_style_course_id
,
content_id
=
self
.
old_style_content_id
)
user2
=
User
.
objects
.
create
(
email
=
'testuser2@edx.org'
,
username
=
'testuser2'
,
password
=
'testpassword2'
,
is_active
=
True
)
user2
=
User
.
objects
.
create
(
email
=
'testuser2@edx.org'
,
username
=
'testuser2'
,
password
=
'testpassword2'
,
is_active
=
True
)
project2
=
project_models
.
Project
.
objects
.
create
(
course_id
=
self
.
new_style_course_id2
,
content_id
=
self
.
new_style_content_id2
)
workgroup2
=
project_models
.
Workgroup
.
objects
.
create
(
name
=
'Test Workgroup2'
,
project
=
project2
)
workgroup_review2
=
project_models
.
WorkgroupReview
.
objects
.
create
(
workgroup
=
workgroup2
,
content_id
=
self
.
new_style_content_id2
)
workgroup_submission2
=
project_models
.
WorkgroupSubmission
.
objects
.
create
(
workgroup
=
workgroup2
,
user
=
user2
)
workgroup_submission_review2
=
project_models
.
WorkgroupSubmissionReview
.
objects
.
create
(
submission
=
workgroup_submission2
,
content_id
=
self
.
new_style_content_id2
)
group2
=
Group
.
objects
.
create
(
name
=
'Test Group2'
)
group2
=
Group
.
objects
.
create
(
name
=
'Test Group2'
)
group_profile2
=
api_models
.
GroupProfile
.
objects
.
create
(
group
=
group2
)
group_profile2
=
api_models
.
GroupProfile
.
objects
.
create
(
group
=
group2
)
course_group2
=
api_models
.
CourseGroupRelationship
.
objects
.
create
(
course_id
=
self
.
new_style_course_id2
,
group
=
group2
)
course_group2
=
api_models
.
CourseGroupRelationship
.
objects
.
create
(
course_id
=
self
.
new_style_course_id2
,
group
=
group2
)
...
@@ -92,26 +81,6 @@ class MigrateCourseIdsTests(ModuleStoreTestCase):
...
@@ -92,26 +81,6 @@ class MigrateCourseIdsTests(ModuleStoreTestCase):
# Confirm that the data has been properly migrated
# Confirm that the data has been properly migrated
updated_project
=
project_models
.
Project
.
objects
.
get
(
id
=
project
.
id
)
self
.
assertEqual
(
updated_project
.
course_id
,
self
.
new_style_course_id
)
self
.
assertEqual
(
updated_project
.
content_id
,
self
.
new_style_content_id
)
updated_project
=
project_models
.
Project
.
objects
.
get
(
id
=
project2
.
id
)
self
.
assertEqual
(
updated_project
.
course_id
,
self
.
new_style_course_id2
)
self
.
assertEqual
(
updated_project
.
content_id
,
self
.
new_style_content_id2
)
print
"Project Data Migration Passed"
updated_workgroup_review
=
project_models
.
WorkgroupReview
.
objects
.
get
(
id
=
workgroup_review
.
id
)
self
.
assertEqual
(
updated_workgroup_review
.
content_id
,
self
.
new_style_content_id
)
updated_workgroup_review
=
project_models
.
WorkgroupReview
.
objects
.
get
(
id
=
workgroup_review2
.
id
)
self
.
assertEqual
(
updated_workgroup_review
.
content_id
,
self
.
new_style_content_id2
)
print
"Workgroup Review Data Migration Passed"
updated_workgroup_submission_review
=
project_models
.
WorkgroupSubmissionReview
.
objects
.
get
(
id
=
workgroup_submission_review
.
id
)
self
.
assertEqual
(
updated_workgroup_submission_review
.
content_id
,
self
.
new_style_content_id
)
updated_workgroup_submission_review
=
project_models
.
WorkgroupSubmissionReview
.
objects
.
get
(
id
=
workgroup_submission_review2
.
id
)
self
.
assertEqual
(
updated_workgroup_submission_review
.
content_id
,
self
.
new_style_content_id2
)
print
"Workgroup Submission Review Data Migration Passed"
updated_course_group
=
api_models
.
CourseGroupRelationship
.
objects
.
get
(
id
=
course_group
.
id
)
updated_course_group
=
api_models
.
CourseGroupRelationship
.
objects
.
get
(
id
=
course_group
.
id
)
self
.
assertEqual
(
updated_course_group
.
course_id
,
self
.
new_style_course_id
)
self
.
assertEqual
(
updated_course_group
.
course_id
,
self
.
new_style_course_id
)
updated_course_group
=
api_models
.
CourseGroupRelationship
.
objects
.
get
(
id
=
course_group2
.
id
)
updated_course_group
=
api_models
.
CourseGroupRelationship
.
objects
.
get
(
id
=
course_group2
.
id
)
...
...
lms/djangoapps/api_manager/organizations/tests.py
View file @
0225e33a
...
@@ -35,9 +35,9 @@ class OrganizationsApiTests(ModuleStoreTestCase):
...
@@ -35,9 +35,9 @@ class OrganizationsApiTests(ModuleStoreTestCase):
def
setUp
(
self
):
def
setUp
(
self
):
self
.
test_server_prefix
=
'https://testserver'
self
.
test_server_prefix
=
'https://testserver'
self
.
test_organizations_uri
=
'/api
/organizations/'
self
.
base_organizations_uri
=
'/api/server
/organizations/'
self
.
test_users_uri
=
'/api
/users'
self
.
base_users_uri
=
'/api/server
/users'
self
.
base_groups_uri
=
'/api/groups'
self
.
base_groups_uri
=
'/api/
server/
groups'
self
.
test_organization_name
=
str
(
uuid
.
uuid4
())
self
.
test_organization_name
=
str
(
uuid
.
uuid4
())
self
.
test_organization_display_name
=
'Test Org'
self
.
test_organization_display_name
=
'Test Org'
self
.
test_organization_contact_name
=
'John Org'
self
.
test_organization_contact_name
=
'John Org'
...
@@ -97,7 +97,7 @@ class OrganizationsApiTests(ModuleStoreTestCase):
...
@@ -97,7 +97,7 @@ class OrganizationsApiTests(ModuleStoreTestCase):
'first_name'
:
'John{}'
.
format
(
i
),
'first_name'
:
'John{}'
.
format
(
i
),
'last_name'
:
'Doe{}'
.
format
(
i
)
'last_name'
:
'Doe{}'
.
format
(
i
)
}
}
response
=
self
.
do_post
(
self
.
test
_users_uri
,
data
)
response
=
self
.
do_post
(
self
.
base
_users_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
users
.
append
(
response
.
data
[
'id'
])
users
.
append
(
response
.
data
[
'id'
])
...
@@ -109,12 +109,12 @@ class OrganizationsApiTests(ModuleStoreTestCase):
...
@@ -109,12 +109,12 @@ class OrganizationsApiTests(ModuleStoreTestCase):
'contact_phone'
:
self
.
test_organization_contact_phone
,
'contact_phone'
:
self
.
test_organization_contact_phone
,
'users'
:
users
'users'
:
users
}
}
response
=
self
.
do_post
(
self
.
test
_organizations_uri
,
data
)
response
=
self
.
do_post
(
self
.
base
_organizations_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertGreater
(
response
.
data
[
'id'
],
0
)
self
.
assertGreater
(
response
.
data
[
'id'
],
0
)
confirm_uri
=
'{}{}{}/'
.
format
(
confirm_uri
=
'{}{}{}/'
.
format
(
self
.
test_server_prefix
,
self
.
test_server_prefix
,
self
.
test
_organizations_uri
,
self
.
base
_organizations_uri
,
str
(
response
.
data
[
'id'
])
str
(
response
.
data
[
'id'
])
)
)
self
.
assertEqual
(
response
.
data
[
'url'
],
confirm_uri
)
self
.
assertEqual
(
response
.
data
[
'url'
],
confirm_uri
)
...
@@ -137,9 +137,9 @@ class OrganizationsApiTests(ModuleStoreTestCase):
...
@@ -137,9 +137,9 @@ class OrganizationsApiTests(ModuleStoreTestCase):
'contact_email'
:
self
.
test_organization_contact_email
,
'contact_email'
:
self
.
test_organization_contact_email
,
'contact_phone'
:
self
.
test_organization_contact_phone
'contact_phone'
:
self
.
test_organization_contact_phone
}
}
response
=
self
.
do_post
(
self
.
test
_organizations_uri
,
data
)
response
=
self
.
do_post
(
self
.
base
_organizations_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
test_uri
=
'{}{}/'
.
format
(
self
.
test
_organizations_uri
,
str
(
response
.
data
[
'id'
]))
test_uri
=
'{}{}/'
.
format
(
self
.
base
_organizations_uri
,
str
(
response
.
data
[
'id'
]))
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
confirm_uri
=
self
.
test_server_prefix
+
test_uri
confirm_uri
=
self
.
test_server_prefix
+
test_uri
...
@@ -156,15 +156,15 @@ class OrganizationsApiTests(ModuleStoreTestCase):
...
@@ -156,15 +156,15 @@ class OrganizationsApiTests(ModuleStoreTestCase):
self
.
assertIsNotNone
(
response
.
data
[
'modified'
])
self
.
assertIsNotNone
(
response
.
data
[
'modified'
])
def
test_organizations_detail_get_undefined
(
self
):
def
test_organizations_detail_get_undefined
(
self
):
test_uri
=
'
/api/organizations/123456789/'
test_uri
=
'
{}/123456789/'
.
format
(
self
.
base_organizations_uri
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_organizations_detail_delete
(
self
):
def
test_organizations_detail_delete
(
self
):
data
=
{
'name'
:
self
.
test_organization_name
}
data
=
{
'name'
:
self
.
test_organization_name
}
response
=
self
.
do_post
(
self
.
test
_organizations_uri
,
data
)
response
=
self
.
do_post
(
self
.
base
_organizations_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
test_uri
=
'{}{}/'
.
format
(
self
.
test
_organizations_uri
,
str
(
response
.
data
[
'id'
]))
test_uri
=
'{}{}/'
.
format
(
self
.
base
_organizations_uri
,
str
(
response
.
data
[
'id'
]))
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
response
=
self
.
do_delete
(
test_uri
)
response
=
self
.
do_delete
(
test_uri
)
...
@@ -180,7 +180,7 @@ class OrganizationsApiTests(ModuleStoreTestCase):
...
@@ -180,7 +180,7 @@ class OrganizationsApiTests(ModuleStoreTestCase):
'contact_email'
:
'testatme.com'
,
'contact_email'
:
'testatme.com'
,
'contact_phone'
:
self
.
test_organization_contact_phone
'contact_phone'
:
self
.
test_organization_contact_phone
}
}
response
=
self
.
do_post
(
self
.
test
_organizations_uri
,
data
)
response
=
self
.
do_post
(
self
.
base
_organizations_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
400
)
self
.
assertEqual
(
response
.
status_code
,
400
)
def
test_organizations_list_post_with_groups
(
self
):
def
test_organizations_list_post_with_groups
(
self
):
...
@@ -200,7 +200,7 @@ class OrganizationsApiTests(ModuleStoreTestCase):
...
@@ -200,7 +200,7 @@ class OrganizationsApiTests(ModuleStoreTestCase):
'display_name'
:
self
.
test_organization_display_name
,
'display_name'
:
self
.
test_organization_display_name
,
'groups'
:
groups
'groups'
:
groups
}
}
response
=
self
.
do_post
(
self
.
test
_organizations_uri
,
data
)
response
=
self
.
do_post
(
self
.
base
_organizations_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
len
(
response
.
data
[
'groups'
]),
len
(
groups
))
self
.
assertEqual
(
len
(
response
.
data
[
'groups'
]),
len
(
groups
))
...
@@ -212,9 +212,9 @@ class OrganizationsApiTests(ModuleStoreTestCase):
...
@@ -212,9 +212,9 @@ class OrganizationsApiTests(ModuleStoreTestCase):
'contact_email'
:
self
.
test_organization_contact_email
,
'contact_email'
:
self
.
test_organization_contact_email
,
'contact_phone'
:
self
.
test_organization_contact_phone
'contact_phone'
:
self
.
test_organization_contact_phone
}
}
response
=
self
.
do_post
(
self
.
test
_organizations_uri
,
data
)
response
=
self
.
do_post
(
self
.
base
_organizations_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
test_uri
=
'{}{}/'
.
format
(
self
.
test
_organizations_uri
,
str
(
response
.
data
[
'id'
]))
test_uri
=
'{}{}/'
.
format
(
self
.
base
_organizations_uri
,
str
(
response
.
data
[
'id'
]))
users_uri
=
'{}users/'
.
format
(
test_uri
)
users_uri
=
'{}users/'
.
format
(
test_uri
)
data
=
{
"id"
:
self
.
test_user
.
id
}
data
=
{
"id"
:
self
.
test_user
.
id
}
response
=
self
.
do_post
(
users_uri
,
data
)
response
=
self
.
do_post
(
users_uri
,
data
)
...
@@ -231,9 +231,9 @@ class OrganizationsApiTests(ModuleStoreTestCase):
...
@@ -231,9 +231,9 @@ class OrganizationsApiTests(ModuleStoreTestCase):
'contact_email'
:
self
.
test_organization_contact_email
,
'contact_email'
:
self
.
test_organization_contact_email
,
'contact_phone'
:
self
.
test_organization_contact_phone
'contact_phone'
:
self
.
test_organization_contact_phone
}
}
response
=
self
.
do_post
(
self
.
test
_organizations_uri
,
data
)
response
=
self
.
do_post
(
self
.
base
_organizations_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
test_uri
=
'{}{}/'
.
format
(
self
.
test
_organizations_uri
,
str
(
response
.
data
[
'id'
]))
test_uri
=
'{}{}/'
.
format
(
self
.
base
_organizations_uri
,
str
(
response
.
data
[
'id'
]))
users_uri
=
'{}users/'
.
format
(
test_uri
)
users_uri
=
'{}users/'
.
format
(
test_uri
)
data
=
{
"id"
:
123456
}
data
=
{
"id"
:
123456
}
response
=
self
.
do_post
(
users_uri
,
data
)
response
=
self
.
do_post
(
users_uri
,
data
)
...
@@ -247,9 +247,9 @@ class OrganizationsApiTests(ModuleStoreTestCase):
...
@@ -247,9 +247,9 @@ class OrganizationsApiTests(ModuleStoreTestCase):
'contact_email'
:
self
.
test_organization_contact_email
,
'contact_email'
:
self
.
test_organization_contact_email
,
'contact_phone'
:
self
.
test_organization_contact_phone
'contact_phone'
:
self
.
test_organization_contact_phone
}
}
response
=
self
.
do_post
(
self
.
test
_organizations_uri
,
data
)
response
=
self
.
do_post
(
self
.
base
_organizations_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
test_uri
=
'{}{}/'
.
format
(
self
.
test
_organizations_uri
,
str
(
response
.
data
[
'id'
]))
test_uri
=
'{}{}/'
.
format
(
self
.
base
_organizations_uri
,
str
(
response
.
data
[
'id'
]))
users_uri
=
'{}users/'
.
format
(
test_uri
)
users_uri
=
'{}users/'
.
format
(
test_uri
)
data
=
{
"id"
:
self
.
test_user
.
id
}
data
=
{
"id"
:
self
.
test_user
.
id
}
response
=
self
.
do_post
(
users_uri
,
data
)
response
=
self
.
do_post
(
users_uri
,
data
)
...
@@ -271,9 +271,9 @@ class OrganizationsApiTests(ModuleStoreTestCase):
...
@@ -271,9 +271,9 @@ class OrganizationsApiTests(ModuleStoreTestCase):
'contact_email'
:
self
.
test_organization_contact_email
,
'contact_email'
:
self
.
test_organization_contact_email
,
'contact_phone'
:
self
.
test_organization_contact_phone
'contact_phone'
:
self
.
test_organization_contact_phone
}
}
response
=
self
.
do_post
(
self
.
test
_organizations_uri
,
data
)
response
=
self
.
do_post
(
self
.
base
_organizations_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
test_uri
=
'{}{}/'
.
format
(
self
.
test
_organizations_uri
,
str
(
response
.
data
[
'id'
]))
test_uri
=
'{}{}/'
.
format
(
self
.
base
_organizations_uri
,
str
(
response
.
data
[
'id'
]))
users_uri
=
'{}users/'
.
format
(
test_uri
)
users_uri
=
'{}users/'
.
format
(
test_uri
)
data
=
{
"id"
:
self
.
test_user
.
id
}
data
=
{
"id"
:
self
.
test_user
.
id
}
response
=
self
.
do_post
(
users_uri
,
data
)
response
=
self
.
do_post
(
users_uri
,
data
)
...
...
lms/djangoapps/api_manager/sessions/test_login_ratelimit.py
View file @
0225e33a
...
@@ -37,7 +37,7 @@ class SessionApiRateLimitingProtectionTest(TestCase):
...
@@ -37,7 +37,7 @@ class SessionApiRateLimitingProtectionTest(TestCase):
# Create the test client
# Create the test client
self
.
client
=
Client
()
self
.
client
=
Client
()
cache
.
clear
()
cache
.
clear
()
self
.
session_url
=
'/api/sessions'
self
.
session_url
=
'/api/se
rver/se
ssions'
def
test_login_ratelimiting_protection
(
self
):
def
test_login_ratelimiting_protection
(
self
):
""" Try (and fail) login user 30 times on invalid password """
""" Try (and fail) login user 30 times on invalid password """
...
...
lms/djangoapps/api_manager/sessions/test_security.py
View file @
0225e33a
...
@@ -38,8 +38,8 @@ class SessionApiSecurityTest(TestCase):
...
@@ -38,8 +38,8 @@ class SessionApiSecurityTest(TestCase):
# Create the test client
# Create the test client
self
.
client
=
Client
()
self
.
client
=
Client
()
cache
.
clear
()
cache
.
clear
()
self
.
session_url
=
'/api/sessions'
self
.
session_url
=
'/api/se
rver/se
ssions'
self
.
user_url
=
'/api/users'
self
.
user_url
=
'/api/
server/
users'
@override_settings
(
MAX_FAILED_LOGIN_ATTEMPTS_ALLOWED
=
10
)
@override_settings
(
MAX_FAILED_LOGIN_ATTEMPTS_ALLOWED
=
10
)
def
test_login_ratelimited_success
(
self
):
def
test_login_ratelimited_success
(
self
):
...
...
lms/djangoapps/api_manager/sessions/tests.py
View file @
0225e33a
...
@@ -33,8 +33,8 @@ class SessionsApiTests(TestCase):
...
@@ -33,8 +33,8 @@ class SessionsApiTests(TestCase):
self
.
test_username
=
str
(
uuid
.
uuid4
())
self
.
test_username
=
str
(
uuid
.
uuid4
())
self
.
test_password
=
str
(
uuid
.
uuid4
())
self
.
test_password
=
str
(
uuid
.
uuid4
())
self
.
test_email
=
str
(
uuid
.
uuid4
())
+
'@test.org'
self
.
test_email
=
str
(
uuid
.
uuid4
())
+
'@test.org'
self
.
base_users_uri
=
'/api/users'
self
.
base_users_uri
=
'/api/
server/
users'
self
.
base_sessions_uri
=
'/api/sessions'
self
.
base_sessions_uri
=
'/api/se
rver/se
ssions'
self
.
client
=
SecureClient
()
self
.
client
=
SecureClient
()
cache
.
clear
()
cache
.
clear
()
...
...
lms/djangoapps/api_manager/system/tests.py
View file @
0225e33a
...
@@ -26,7 +26,7 @@ class SystemApiTests(TestCase):
...
@@ -26,7 +26,7 @@ class SystemApiTests(TestCase):
""" Test suite for base API views """
""" Test suite for base API views """
def
setUp
(
self
):
def
setUp
(
self
):
self
.
test_server_prefix
=
"https://testserver/api/"
self
.
test_server_prefix
=
"https://testserver/api/
server/
"
self
.
test_username
=
str
(
uuid
.
uuid4
())
self
.
test_username
=
str
(
uuid
.
uuid4
())
self
.
test_password
=
str
(
uuid
.
uuid4
())
self
.
test_password
=
str
(
uuid
.
uuid4
())
self
.
test_email
=
str
(
uuid
.
uuid4
())
+
'@test.org'
self
.
test_email
=
str
(
uuid
.
uuid4
())
+
'@test.org'
...
...
lms/djangoapps/api_manager/test_permissions.py
View file @
0225e33a
...
@@ -20,7 +20,7 @@ class PermissionsTests(TestCase):
...
@@ -20,7 +20,7 @@ class PermissionsTests(TestCase):
self
.
username
=
self
.
username
[
3
:
-
1
]
# username is a 32-character field
self
.
username
=
self
.
username
[
3
:
-
1
]
# username is a 32-character field
self
.
test_password
=
str
(
uuid
.
uuid4
())
self
.
test_password
=
str
(
uuid
.
uuid4
())
self
.
test_email
=
str
(
uuid
.
uuid4
())
+
'@test.org'
self
.
test_email
=
str
(
uuid
.
uuid4
())
+
'@test.org'
self
.
test_uri
=
'/api/users'
self
.
test_uri
=
'/api/
server/
users'
self
.
data
=
{
'email'
:
self
.
test_email
,
'username'
:
self
.
test_username
,
'password'
:
self
.
test_password
}
self
.
data
=
{
'email'
:
self
.
test_email
,
'username'
:
self
.
test_username
,
'password'
:
self
.
test_password
}
self
.
headers
=
{
self
.
headers
=
{
'Content-Type'
:
'application/json'
,
'Content-Type'
:
'application/json'
,
...
...
lms/djangoapps/api_manager/urls.py
View file @
0225e33a
...
@@ -27,16 +27,16 @@ urlpatterns = patterns(
...
@@ -27,16 +27,16 @@ urlpatterns = patterns(
url
(
r'^courses/*'
,
include
(
'api_manager.courses.urls'
)),
url
(
r'^courses/*'
,
include
(
'api_manager.courses.urls'
)),
)
)
router
=
SimpleRouter
()
server_api_
router
=
SimpleRouter
()
router
.
register
(
r'organizations'
,
OrganizationsViewSet
)
server_api_
router
.
register
(
r'organizations'
,
OrganizationsViewSet
)
# Project-related ViewSets
# Project-related ViewSets
router
.
register
(
r'projects'
,
project_views
.
ProjectsViewSet
)
server_api_
router
.
register
(
r'projects'
,
project_views
.
ProjectsViewSet
)
router
.
register
(
r'workgroups'
,
project_views
.
WorkgroupsViewSet
)
server_api_
router
.
register
(
r'workgroups'
,
project_views
.
WorkgroupsViewSet
)
router
.
register
(
r'submissions'
,
project_views
.
WorkgroupSubmissionsViewSet
)
server_api_
router
.
register
(
r'submissions'
,
project_views
.
WorkgroupSubmissionsViewSet
)
router
.
register
(
r'workgroup_reviews'
,
project_views
.
WorkgroupReviewsViewSet
)
server_api_
router
.
register
(
r'workgroup_reviews'
,
project_views
.
WorkgroupReviewsViewSet
)
router
.
register
(
r'submission_reviews'
,
project_views
.
WorkgroupSubmissionReviewsViewSet
)
server_api_
router
.
register
(
r'submission_reviews'
,
project_views
.
WorkgroupSubmissionReviewsViewSet
)
router
.
register
(
r'peer_reviews'
,
project_views
.
WorkgroupPeerReviewsViewSet
)
server_api_
router
.
register
(
r'peer_reviews'
,
project_views
.
WorkgroupPeerReviewsViewSet
)
router
.
register
(
r'groups'
,
project_views
.
GroupViewSet
)
server_api_
router
.
register
(
r'groups'
,
project_views
.
GroupViewSet
)
router
.
register
(
r'users'
,
project_views
.
UserViewSet
)
server_api_
router
.
register
(
r'users'
,
project_views
.
UserViewSet
)
urlpatterns
+=
router
.
urls
urlpatterns
+=
server_api_
router
.
urls
lms/djangoapps/api_manager/users/test_user_password_reset.py
View file @
0225e33a
...
@@ -30,8 +30,8 @@ class UserPasswordResetTest(TestCase):
...
@@ -30,8 +30,8 @@ class UserPasswordResetTest(TestCase):
"""
"""
setup the api urls
setup the api urls
"""
"""
self
.
session_url
=
'/api/sessions'
self
.
session_url
=
'/api/se
rver/se
ssions'
self
.
user_url
=
'/api/users'
self
.
user_url
=
'/api/
server/
users'
cache
.
clear
()
cache
.
clear
()
@override_settings
(
ADVANCED_SECURITY_CONFIG
=
{
'MIN_DAYS_FOR_STUDENT_ACCOUNTS_PASSWORD_RESETS'
:
5
})
@override_settings
(
ADVANCED_SECURITY_CONFIG
=
{
'MIN_DAYS_FOR_STUDENT_ACCOUNTS_PASSWORD_RESETS'
:
5
})
...
...
lms/djangoapps/api_manager/users/tests.py
View file @
0225e33a
...
@@ -57,7 +57,12 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -57,7 +57,12 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
test_first_name
=
str
(
uuid
.
uuid4
())
self
.
test_first_name
=
str
(
uuid
.
uuid4
())
self
.
test_last_name
=
str
(
uuid
.
uuid4
())
self
.
test_last_name
=
str
(
uuid
.
uuid4
())
self
.
test_city
=
str
(
uuid
.
uuid4
())
self
.
test_city
=
str
(
uuid
.
uuid4
())
self
.
org_base_uri
=
'/api/organizations/'
self
.
courses_base_uri
=
'/api/server/courses'
self
.
groups_base_uri
=
'/api/server/groups'
self
.
org_base_uri
=
'/api/server/organizations/'
self
.
workgroups_base_uri
=
'/api/server/workgroups/'
self
.
users_base_uri
=
'/api/server/users'
self
.
sessions_base_uri
=
'/api/server/sessions'
self
.
test_bogus_course_id
=
'foo/bar/baz'
self
.
test_bogus_course_id
=
'foo/bar/baz'
self
.
test_bogus_content_id
=
'i4x://foo/bar/baz/Chapter1'
self
.
test_bogus_content_id
=
'i4x://foo/bar/baz/Chapter1'
...
@@ -142,7 +147,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -142,7 +147,7 @@ class UsersApiTests(ModuleStoreTestCase):
def
_create_test_user
(
self
):
def
_create_test_user
(
self
):
"""Helper method to create a new test user"""
"""Helper method to create a new test user"""
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
...
@@ -151,7 +156,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -151,7 +156,7 @@ class UsersApiTests(ModuleStoreTestCase):
return
user_id
return
user_id
def
test_user_list_get
(
self
):
def
test_user_list_get
(
self
):
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
users
=
[]
users
=
[]
# create a 25 new users
# create a 25 new users
for
i
in
xrange
(
1
,
26
):
for
i
in
xrange
(
1
,
26
):
...
@@ -216,7 +221,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -216,7 +221,7 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
len
(
response
.
data
[
'results'
]),
0
)
self
.
assertEqual
(
len
(
response
.
data
[
'results'
]),
0
)
def
test_user_list_get_with_org_filter
(
self
):
def
test_user_list_get_with_org_filter
(
self
):
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
users
=
[]
users
=
[]
# create a 7 new users
# create a 7 new users
for
i
in
xrange
(
1
,
8
):
for
i
in
xrange
(
1
,
8
):
...
@@ -254,7 +259,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -254,7 +259,7 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertGreaterEqual
(
len
(
response
.
data
[
'results'
]),
4
)
self
.
assertGreaterEqual
(
len
(
response
.
data
[
'results'
]),
4
)
def
test_user_list_post
(
self
):
def
test_user_list_post
(
self
):
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
...
@@ -271,7 +276,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -271,7 +276,7 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertIsNotNone
(
response
.
data
[
'created'
])
self
.
assertIsNotNone
(
response
.
data
[
'created'
])
def
test_user_list_post_inactive
(
self
):
def
test_user_list_post_inactive
(
self
):
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
data
=
{
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
...
@@ -281,7 +286,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -281,7 +286,7 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
data
[
'is_active'
],
False
)
self
.
assertEqual
(
response
.
data
[
'is_active'
],
False
)
def
test_user_list_post_duplicate
(
self
):
def
test_user_list_post_duplicate
(
self
):
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
...
@@ -292,7 +297,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -292,7 +297,7 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
data
[
'field_conflict'
],
'username or email'
)
self
.
assertEqual
(
response
.
data
[
'field_conflict'
],
'username or email'
)
def
test_user_detail_get
(
self
):
def
test_user_detail_get
(
self
):
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
...
@@ -311,12 +316,12 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -311,12 +316,12 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
len
(
response
.
data
[
'resources'
]),
2
)
self
.
assertEqual
(
len
(
response
.
data
[
'resources'
]),
2
)
def
test_user_detail_get_undefined
(
self
):
def
test_user_detail_get_undefined
(
self
):
test_uri
=
'
/api/users/123456789'
test_uri
=
'
{}/123456789'
.
format
(
self
.
users_base_uri
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_user_detail_post
(
self
):
def
test_user_detail_post
(
self
):
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
data
=
{
'email'
:
self
.
test_email
,
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
...
@@ -325,7 +330,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -325,7 +330,7 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
test_uri
=
test_uri
+
'/'
+
str
(
response
.
data
[
'id'
])
test_uri
=
test_uri
+
'/'
+
str
(
response
.
data
[
'id'
])
auth_data
=
{
'username'
:
local_username
,
'password'
:
self
.
test_password
}
auth_data
=
{
'username'
:
local_username
,
'password'
:
self
.
test_password
}
self
.
do_post
(
'/api/sessions'
,
auth_data
)
self
.
do_post
(
self
.
sessions_base_uri
,
auth_data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
data
=
{
'is_active'
:
False
,
'is_staff'
:
True
}
data
=
{
'is_active'
:
False
,
'is_staff'
:
True
}
response
=
self
.
do_post
(
test_uri
,
data
)
response
=
self
.
do_post
(
test_uri
,
data
)
...
@@ -348,7 +353,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -348,7 +353,7 @@ class UsersApiTests(ModuleStoreTestCase):
Must return bad request against username, Already exist!
Must return bad request against username, Already exist!
"""
"""
lst_username
=
[]
lst_username
=
[]
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
for
i
in
xrange
(
2
):
for
i
in
xrange
(
2
):
local_username
=
self
.
test_username
+
str
(
i
)
local_username
=
self
.
test_username
+
str
(
i
)
lst_username
.
append
(
local_username
)
lst_username
.
append
(
local_username
)
...
@@ -375,7 +380,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -375,7 +380,7 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
data
[
'message'
],
message
)
self
.
assertEqual
(
response
.
data
[
'message'
],
message
)
def
test_user_detail_post_invalid_password
(
self
):
def
test_user_detail_post_invalid_password
(
self
):
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
data
=
{
'email'
:
self
.
test_email
,
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
...
@@ -392,7 +397,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -392,7 +397,7 @@ class UsersApiTests(ModuleStoreTestCase):
Create a user, then add the user profile
Create a user, then add the user profile
Must be added
Must be added
"""
"""
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
data
=
{
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
...
@@ -420,7 +425,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -420,7 +425,7 @@ class UsersApiTests(ModuleStoreTestCase):
Profile Must be added with year_of_birth will be none
Profile Must be added with year_of_birth will be none
and avatar_url None
and avatar_url None
"""
"""
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
data
=
{
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
...
@@ -434,17 +439,17 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -434,17 +439,17 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
is_user_profile_created_updated
(
response
,
data
)
self
.
is_user_profile_created_updated
(
response
,
data
)
def
test_user_detail_post_invalid_user
(
self
):
def
test_user_detail_post_invalid_user
(
self
):
test_uri
=
'
/api/users/123124124'
test_uri
=
'
{}/123124124'
.
format
(
self
.
users_base_uri
)
data
=
{
'is_active'
:
False
}
data
=
{
'is_active'
:
False
}
response
=
self
.
do_post
(
test_uri
,
data
)
response
=
self
.
do_post
(
test_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_user_groups_list_post
(
self
):
def
test_user_groups_list_post
(
self
):
test_uri
=
'/api/groups'
test_uri
=
self
.
groups_base_uri
data
=
{
'name'
:
'Alpha Group'
,
'type'
:
'test'
}
data
=
{
'name'
:
'Alpha Group'
,
'type'
:
'test'
}
response
=
self
.
do_post
(
test_uri
,
data
)
response
=
self
.
do_post
(
test_uri
,
data
)
group_id
=
response
.
data
[
'id'
]
group_id
=
response
.
data
[
'id'
]
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
...
@@ -463,11 +468,11 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -463,11 +468,11 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
data
[
'user_id'
],
str
(
user_id
))
self
.
assertEqual
(
response
.
data
[
'user_id'
],
str
(
user_id
))
def
test_user_groups_list_post_duplicate
(
self
):
def
test_user_groups_list_post_duplicate
(
self
):
test_uri
=
'/api/groups'
test_uri
=
self
.
groups_base_uri
data
=
{
'name'
:
'Alpha Group'
,
'type'
:
'test'
}
data
=
{
'name'
:
'Alpha Group'
,
'type'
:
'test'
}
response
=
self
.
do_post
(
test_uri
,
data
)
response
=
self
.
do_post
(
test_uri
,
data
)
group_id
=
response
.
data
[
'id'
]
group_id
=
response
.
data
[
'id'
]
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
...
@@ -482,22 +487,22 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -482,22 +487,22 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
status_code
,
409
)
self
.
assertEqual
(
response
.
status_code
,
409
)
def
test_user_groups_list_post_invalid_user
(
self
):
def
test_user_groups_list_post_invalid_user
(
self
):
test_uri
=
'/api/groups'
test_uri
=
self
.
groups_base_uri
data
=
{
'name'
:
'Alpha Group'
,
'type'
:
'test'
}
data
=
{
'name'
:
'Alpha Group'
,
'type'
:
'test'
}
response
=
self
.
do_post
(
test_uri
,
data
)
response
=
self
.
do_post
(
test_uri
,
data
)
group_id
=
response
.
data
[
'id'
]
group_id
=
response
.
data
[
'id'
]
test_uri
=
'
/api/users/897698769/groups'
test_uri
=
'
{}/897698769/groups'
.
format
(
self
.
users_base_uri
)
data
=
{
'group_id'
:
group_id
}
data
=
{
'group_id'
:
group_id
}
response
=
self
.
do_post
(
test_uri
,
data
)
response
=
self
.
do_post
(
test_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_user_groups_list_get
(
self
):
def
test_user_groups_list_get
(
self
):
test_uri
=
'/api/groups'
test_uri
=
self
.
groups_base_uri
group_name
=
'Alpha Group'
group_name
=
'Alpha Group'
data
=
{
'name'
:
group_name
,
'type'
:
'test'
}
data
=
{
'name'
:
group_name
,
'type'
:
'test'
}
response
=
self
.
do_post
(
test_uri
,
data
)
response
=
self
.
do_post
(
test_uri
,
data
)
group_id
=
response
.
data
[
'id'
]
group_id
=
response
.
data
[
'id'
]
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
...
@@ -515,7 +520,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -515,7 +520,7 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
data
[
'groups'
][
0
][
'name'
],
str
(
group_name
))
self
.
assertEqual
(
response
.
data
[
'groups'
][
0
][
'name'
],
str
(
group_name
))
def
test_user_groups_list_get_with_query_params
(
self
):
def
test_user_groups_list_get_with_query_params
(
self
):
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
data
=
{
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
...
@@ -526,7 +531,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -526,7 +531,7 @@ class UsersApiTests(ModuleStoreTestCase):
test_uri
=
'{}/{}'
.
format
(
test_uri
,
str
(
user_id
))
test_uri
=
'{}/{}'
.
format
(
test_uri
,
str
(
user_id
))
fail_user_id_group_uri
=
'{}/{}/groups'
.
format
(
test_uri
,
'22'
)
fail_user_id_group_uri
=
'{}/{}/groups'
.
format
(
test_uri
,
'22'
)
group_url
=
'/api/groups'
group_url
=
self
.
groups_base_uri
group_name
=
'Alpha Group'
group_name
=
'Alpha Group'
data
=
{
'name'
:
group_name
,
'type'
:
'Engineer'
}
data
=
{
'name'
:
group_name
,
'type'
:
'Engineer'
}
response
=
self
.
do_post
(
group_url
,
data
)
response
=
self
.
do_post
(
group_url
,
data
)
...
@@ -562,16 +567,16 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -562,16 +567,16 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
len
(
response
.
data
[
'groups'
]),
0
)
self
.
assertEqual
(
len
(
response
.
data
[
'groups'
]),
0
)
def
test_user_groups_list_get_invalid_user
(
self
):
def
test_user_groups_list_get_invalid_user
(
self
):
test_uri
=
'
/api/users/123124/groups'
test_uri
=
'
{}/123124/groups'
.
format
(
self
.
users_base_uri
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_user_groups_detail_get
(
self
):
def
test_user_groups_detail_get
(
self
):
test_uri
=
'/api/groups'
test_uri
=
self
.
groups_base_uri
data
=
{
'name'
:
'Alpha Group'
,
'type'
:
'test'
}
data
=
{
'name'
:
'Alpha Group'
,
'type'
:
'test'
}
response
=
self
.
do_post
(
test_uri
,
data
)
response
=
self
.
do_post
(
test_uri
,
data
)
group_id
=
response
.
data
[
'id'
]
group_id
=
response
.
data
[
'id'
]
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
...
@@ -590,11 +595,11 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -590,11 +595,11 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
data
[
'user_id'
],
user_id
)
self
.
assertEqual
(
response
.
data
[
'user_id'
],
user_id
)
def
test_user_groups_detail_delete
(
self
):
def
test_user_groups_detail_delete
(
self
):
test_uri
=
'/api/groups'
test_uri
=
self
.
groups_base_uri
data
=
{
'name'
:
'Alpha Group'
,
'type'
:
'test'
}
data
=
{
'name'
:
'Alpha Group'
,
'type'
:
'test'
}
response
=
self
.
do_post
(
test_uri
,
data
)
response
=
self
.
do_post
(
test_uri
,
data
)
group_id
=
response
.
data
[
'id'
]
group_id
=
response
.
data
[
'id'
]
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
...
@@ -614,27 +619,27 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -614,27 +619,27 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_user_groups_detail_get_invalid_user
(
self
):
def
test_user_groups_detail_get_invalid_user
(
self
):
test_uri
=
'
/api/users/123124/groups/12321'
test_uri
=
'
{}/123124/groups/12321'
.
format
(
self
.
users_base_uri
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_user_groups_detail_get_undefined
(
self
):
def
test_user_groups_detail_get_undefined
(
self
):
test_uri
=
'/api/groups'
test_uri
=
self
.
groups_base_uri
data
=
{
'name'
:
'Alpha Group'
,
'type'
:
'test'
}
data
=
{
'name'
:
'Alpha Group'
,
'type'
:
'test'
}
response
=
self
.
do_post
(
test_uri
,
data
)
response
=
self
.
do_post
(
test_uri
,
data
)
group_id
=
response
.
data
[
'id'
]
group_id
=
response
.
data
[
'id'
]
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
response
=
self
.
do_post
(
test_uri
,
data
)
response
=
self
.
do_post
(
test_uri
,
data
)
user_id
=
response
.
data
[
'id'
]
user_id
=
response
.
data
[
'id'
]
test_uri
=
'
/api/users/'
+
str
(
user_id
)
+
'/groups/'
+
str
(
group_id
)
test_uri
=
'
{}/{}/groups/{}'
.
format
(
self
.
users_base_uri
,
user_id
,
group_id
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_user_courses_list_post
(
self
):
def
test_user_courses_list_post
(
self
):
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
...
@@ -651,7 +656,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -651,7 +656,7 @@ class UsersApiTests(ModuleStoreTestCase):
def
test_user_courses_list_post_undefined_user
(
self
):
def
test_user_courses_list_post_undefined_user
(
self
):
course
=
CourseFactory
.
create
()
course
=
CourseFactory
.
create
()
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
user_id
=
'234234'
user_id
=
'234234'
test_uri
=
'{}/{}/courses'
.
format
(
test_uri
,
str
(
user_id
))
test_uri
=
'{}/{}/courses'
.
format
(
test_uri
,
str
(
user_id
))
data
=
{
'course_id'
:
unicode
(
course
.
id
)}
data
=
{
'course_id'
:
unicode
(
course
.
id
)}
...
@@ -659,7 +664,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -659,7 +664,7 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_user_courses_list_post_undefined_course
(
self
):
def
test_user_courses_list_post_undefined_course
(
self
):
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
...
@@ -674,7 +679,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -674,7 +679,7 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_user_courses_list_get
(
self
):
def
test_user_courses_list_get
(
self
):
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
...
@@ -705,7 +710,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -705,7 +710,7 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
datetime
.
strftime
(
response
.
data
[
1
][
'end'
],
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
),
datetime
.
strftime
(
self
.
course
.
end
,
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
))
self
.
assertEqual
(
datetime
.
strftime
(
response
.
data
[
1
][
'end'
],
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
),
datetime
.
strftime
(
self
.
course
.
end
,
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
))
def
test_user_courses_list_get_undefined_user
(
self
):
def
test_user_courses_list_get_undefined_user
(
self
):
test_uri
=
'
/api/users/2134234/courses'
test_uri
=
'
{}/2134234/courses'
.
format
(
self
.
users_base_uri
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
...
@@ -761,7 +766,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -761,7 +766,7 @@ class UsersApiTests(ModuleStoreTestCase):
display_name
=
"Vertical 3"
display_name
=
"Vertical 3"
)
)
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
...
@@ -806,7 +811,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -806,7 +811,7 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
data
[
'position_tree'
][
'vertical'
][
'id'
],
unicode
(
vertical3
.
scope_ids
.
usage_id
))
self
.
assertEqual
(
response
.
data
[
'position_tree'
][
'vertical'
][
'id'
],
unicode
(
vertical3
.
scope_ids
.
usage_id
))
def
test_user_courses_detail_post_invalid_course
(
self
):
def
test_user_courses_detail_post_invalid_course
(
self
):
test_uri
=
'
/api/users/{}/courses/{}'
.
format
(
self
.
user
.
id
,
self
.
test_bogus_course_id
)
test_uri
=
'
{}/{}/courses/{}'
.
format
(
self
.
users_base_uri
,
self
.
user
.
id
,
self
.
test_bogus_course_id
)
response
=
self
.
do_post
(
test_uri
,
data
=
{})
response
=
self
.
do_post
(
test_uri
,
data
=
{})
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
...
@@ -821,7 +826,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -821,7 +826,7 @@ class UsersApiTests(ModuleStoreTestCase):
)
)
user_id
=
2342334
user_id
=
2342334
course_id
=
'asd/fa/9sd8fasdf'
course_id
=
'asd/fa/9sd8fasdf'
test_uri
=
'
/api/users/{}/courses/{}'
.
format
(
str
(
user_id
)
,
course_id
)
test_uri
=
'
{}/{}/courses/{}'
.
format
(
self
.
users_base_uri
,
user_id
,
course_id
)
position_data
=
{
position_data
=
{
'position'
:
{
'position'
:
{
'parent_content_id'
:
course_id
,
'parent_content_id'
:
course_id
,
...
@@ -841,7 +846,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -841,7 +846,7 @@ class UsersApiTests(ModuleStoreTestCase):
data
=
test_data
,
data
=
test_data
,
display_name
=
"Chapter 1"
display_name
=
"Chapter 1"
)
)
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
...
@@ -863,7 +868,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -863,7 +868,7 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
data
[
'position'
],
unicode
(
chapter1
.
scope_ids
.
usage_id
))
self
.
assertEqual
(
response
.
data
[
'position'
],
unicode
(
chapter1
.
scope_ids
.
usage_id
))
def
test_user_courses_detail_post_position_invalid_course
(
self
):
def
test_user_courses_detail_post_position_invalid_course
(
self
):
test_uri
=
'
/api/users/{}/courses'
.
format
(
self
.
user
.
id
)
test_uri
=
'
{}/{}/courses'
.
format
(
self
.
users_base_uri
,
self
.
user
.
id
)
data
=
{
'course_id'
:
unicode
(
self
.
course
.
id
)}
data
=
{
'course_id'
:
unicode
(
self
.
course
.
id
)}
response
=
self
.
do_post
(
test_uri
,
data
)
response
=
self
.
do_post
(
test_uri
,
data
)
test_uri
=
test_uri
+
'/'
+
unicode
(
self
.
course
.
id
)
test_uri
=
test_uri
+
'/'
+
unicode
(
self
.
course
.
id
)
...
@@ -886,7 +891,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -886,7 +891,7 @@ class UsersApiTests(ModuleStoreTestCase):
data
=
test_data
,
data
=
test_data
,
display_name
=
"Overview"
display_name
=
"Overview"
)
)
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
...
@@ -917,30 +922,30 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -917,30 +922,30 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
data
[
'position_tree'
][
'chapter'
][
'id'
],
unicode
(
chapter1
.
scope_ids
.
usage_id
))
self
.
assertEqual
(
response
.
data
[
'position_tree'
][
'chapter'
][
'id'
],
unicode
(
chapter1
.
scope_ids
.
usage_id
))
def
test_user_courses_detail_get_invalid_course
(
self
):
def
test_user_courses_detail_get_invalid_course
(
self
):
test_uri
=
'
/api/users/{}/courses/{}'
.
format
(
self
.
user
.
id
,
self
.
test_bogus_course_id
)
test_uri
=
'
{}/{}/courses/{}'
.
format
(
self
.
users_base_uri
,
self
.
user
.
id
,
self
.
test_bogus_course_id
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_user_courses_detail_get_undefined_user
(
self
):
def
test_user_courses_detail_get_undefined_user
(
self
):
test_uri
=
'
/api/users/2134234/courses/a8df7/asv/d98'
test_uri
=
'
{}/2134234/courses/a8df7/asv/d98'
.
format
(
self
.
users_base_uri
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_user_courses_detail_get_undefined_enrollment
(
self
):
def
test_user_courses_detail_get_undefined_enrollment
(
self
):
course
=
CourseFactory
.
create
()
course
=
CourseFactory
.
create
()
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
response
=
self
.
do_post
(
test_uri
,
data
)
response
=
self
.
do_post
(
test_uri
,
data
)
user_id
=
response
.
data
[
'id'
]
user_id
=
response
.
data
[
'id'
]
test_uri
=
'
/api/users/'
+
str
(
user_id
)
+
'/courses/'
+
str
(
course
.
id
)
test_uri
=
'
{}/{}/courses/{}'
.
format
(
self
.
users_base_uri
,
user_id
,
course
.
id
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_user_courses_detail_delete
(
self
):
def
test_user_courses_detail_delete
(
self
):
course
=
CourseFactory
.
create
()
course
=
CourseFactory
.
create
()
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
local_username
=
self
.
test_username
+
str
(
randint
(
11
,
99
))
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
data
=
{
'email'
:
self
.
test_email
,
'username'
:
local_username
,
'password'
:
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
self
.
test_password
,
'first_name'
:
self
.
test_first_name
,
'last_name'
:
self
.
test_last_name
}
...
@@ -970,31 +975,28 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -970,31 +975,28 @@ class UsersApiTests(ModuleStoreTestCase):
def
test_user_courses_detail_delete_undefined_user
(
self
):
def
test_user_courses_detail_delete_undefined_user
(
self
):
course
=
CourseFactory
.
create
()
course
=
CourseFactory
.
create
()
user_id
=
'2134234'
user_id
=
'2134234'
test_uri
=
'/api/users/{}/courses/{}'
.
format
(
test_uri
=
'{}/{}/courses/{}'
.
format
(
self
.
users_base_uri
,
user_id
,
course
.
id
)
str
(
user_id
),
str
(
course
.
id
))
response
=
self
.
do_delete
(
test_uri
)
response
=
self
.
do_delete
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
204
)
self
.
assertEqual
(
response
.
status_code
,
204
)
def
test_user_courses_detail_delete_undefined_course
(
self
):
def
test_user_courses_detail_delete_undefined_course
(
self
):
test_uri
=
'
/api/users/{}/courses/{}'
.
format
(
str
(
self
.
user
.
id
)
,
self
.
test_bogus_course_id
)
test_uri
=
'
{}/{}/courses/{}'
.
format
(
self
.
users_base_uri
,
self
.
user
.
id
,
self
.
test_bogus_course_id
)
response
=
self
.
do_delete
(
test_uri
)
response
=
self
.
do_delete
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
204
)
self
.
assertEqual
(
response
.
status_code
,
204
)
def
test_user_course_grades_course_not_found
(
self
):
def
test_user_course_grades_course_not_found
(
self
):
test_uri
=
'/api/users/{}/courses/{}/grades'
.
format
(
test_uri
=
'{}/{}/courses/slashes:some+unknown+course/grades'
.
format
(
self
.
users_base_uri
,
self
.
user
.
id
)
self
.
user
.
id
,
'slashes:some+unknown+course'
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_user_course_grades_user_not_found
(
self
):
def
test_user_course_grades_user_not_found
(
self
):
course
=
CourseFactory
.
create
()
course
=
CourseFactory
.
create
()
test_uri
=
'/api/users/{}/courses/{}/grades'
.
format
(
test_uri
=
'{}/99999999/courses/{}/grades'
.
format
(
self
.
users_base_uri
,
course
.
id
)
'9999999'
,
course
.
id
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_user_preferences_user_list_get_not_found
(
self
):
def
test_user_preferences_user_list_get_not_found
(
self
):
test_uri
=
'
/api/users/{}/preferences'
.
format
(
'999999'
)
test_uri
=
'
{}/{}/preferences'
.
format
(
self
.
users_base_uri
,
'999999'
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
...
@@ -1002,20 +1004,20 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -1002,20 +1004,20 @@ class UsersApiTests(ModuleStoreTestCase):
# By default newly created users will have one initial preference settings:
# By default newly created users will have one initial preference settings:
# 'pref-lang' = 'en'
# 'pref-lang' = 'en'
user_id
=
self
.
_create_test_user
()
user_id
=
self
.
_create_test_user
()
test_uri
=
'
/api/users/{}/preferences'
.
format
(
user_id
)
test_uri
=
'
{}/{}/preferences'
.
format
(
self
.
users_base_uri
,
user_id
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
len
(
response
.
data
),
1
)
self
.
assertEqual
(
len
(
response
.
data
),
1
)
self
.
assertEqual
(
response
.
data
[
'pref-lang'
],
'en'
)
self
.
assertEqual
(
response
.
data
[
'pref-lang'
],
'en'
)
def
test_user_preferences_list_post_user_not_found
(
self
):
def
test_user_preferences_list_post_user_not_found
(
self
):
test_uri
=
'
/api/users/{}/preferences'
.
format
(
'999999'
)
test_uri
=
'
{}/{}/preferences'
.
format
(
self
.
users_base_uri
,
'999999'
)
response
=
self
.
do_post
(
test_uri
,
{
"foo"
:
"bar"
})
response
=
self
.
do_post
(
test_uri
,
{
"foo"
:
"bar"
})
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_user_preferences_list_post_bad_request
(
self
):
def
test_user_preferences_list_post_bad_request
(
self
):
user_id
=
self
.
_create_test_user
()
user_id
=
self
.
_create_test_user
()
test_uri
=
'
/api/users/{}/preferences'
.
format
(
user_id
)
test_uri
=
'
{}/{}/preferences'
.
format
(
self
.
users_base_uri
,
user_id
)
response
=
self
.
do_post
(
test_uri
,
{})
response
=
self
.
do_post
(
test_uri
,
{})
self
.
assertEqual
(
response
.
status_code
,
400
)
self
.
assertEqual
(
response
.
status_code
,
400
)
# also test with a non-simple key/value set of strings
# also test with a non-simple key/value set of strings
...
@@ -1030,7 +1032,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -1030,7 +1032,7 @@ class UsersApiTests(ModuleStoreTestCase):
def
test_user_preferences_list_post
(
self
):
def
test_user_preferences_list_post
(
self
):
user_id
=
self
.
_create_test_user
()
user_id
=
self
.
_create_test_user
()
test_uri
=
'
/api/users/{}/preferences'
.
format
(
user_id
)
test_uri
=
'
{}/{}/preferences'
.
format
(
self
.
users_base_uri
,
user_id
)
response
=
self
.
do_post
(
test_uri
,
{
"foo"
:
"bar"
})
response
=
self
.
do_post
(
test_uri
,
{
"foo"
:
"bar"
})
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
...
@@ -1041,7 +1043,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -1041,7 +1043,7 @@ class UsersApiTests(ModuleStoreTestCase):
def
test_user_preferences_list_update
(
self
):
def
test_user_preferences_list_update
(
self
):
user_id
=
self
.
_create_test_user
()
user_id
=
self
.
_create_test_user
()
test_uri
=
'
/api/users/{}/preferences'
.
format
(
user_id
)
test_uri
=
'
{}/{}/preferences'
.
format
(
self
.
users_base_uri
,
user_id
)
response
=
self
.
do_post
(
test_uri
,
{
"foo"
:
"bar"
})
response
=
self
.
do_post
(
test_uri
,
{
"foo"
:
"bar"
})
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
response
=
self
.
do_post
(
test_uri
,
{
"foo"
:
"updated"
})
response
=
self
.
do_post
(
test_uri
,
{
"foo"
:
"updated"
})
...
@@ -1054,7 +1056,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -1054,7 +1056,7 @@ class UsersApiTests(ModuleStoreTestCase):
def
test_user_preferences_detail_get
(
self
):
def
test_user_preferences_detail_get
(
self
):
user_id
=
self
.
_create_test_user
()
user_id
=
self
.
_create_test_user
()
test_uri
=
'
/api/users/{}/preferences'
.
format
(
user_id
)
test_uri
=
'
{}/{}/preferences'
.
format
(
self
.
users_base_uri
,
user_id
)
response
=
self
.
do_post
(
test_uri
,
{
"foo"
:
"bar"
})
response
=
self
.
do_post
(
test_uri
,
{
"foo"
:
"bar"
})
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
test_uri
=
'{}/{}'
.
format
(
test_uri
,
'foo'
)
test_uri
=
'{}/{}'
.
format
(
test_uri
,
'foo'
)
...
@@ -1063,13 +1065,13 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -1063,13 +1065,13 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
data
[
'foo'
],
'bar'
)
self
.
assertEqual
(
response
.
data
[
'foo'
],
'bar'
)
def
test_user_preferences_detail_get_invalid_user
(
self
):
def
test_user_preferences_detail_get_invalid_user
(
self
):
test_uri
=
'
/api/users/12345/preferences/foo'
test_uri
=
'
{}/12345/preferences/foo'
.
format
(
self
.
users_base_uri
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_user_preferences_detail_delete
(
self
):
def
test_user_preferences_detail_delete
(
self
):
user_id
=
self
.
_create_test_user
()
user_id
=
self
.
_create_test_user
()
test_uri
=
'
/api/users/{}/preferences'
.
format
(
user_id
)
test_uri
=
'
{}/{}/preferences'
.
format
(
self
.
users_base_uri
,
user_id
)
response
=
self
.
do_post
(
test_uri
,
{
"foo"
:
"bar"
})
response
=
self
.
do_post
(
test_uri
,
{
"foo"
:
"bar"
})
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
test_uri
=
'{}/{}'
.
format
(
test_uri
,
'foo'
)
test_uri
=
'{}/{}'
.
format
(
test_uri
,
'foo'
)
...
@@ -1081,7 +1083,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -1081,7 +1083,7 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_user_preferences_detail_delete_invalid_user
(
self
):
def
test_user_preferences_detail_delete_invalid_user
(
self
):
test_uri
=
'
/api/users/12345/preferences/foo'
test_uri
=
'
{}/12345/preferences/foo'
.
format
(
self
.
users_base_uri
)
response
=
self
.
do_delete
(
test_uri
)
response
=
self
.
do_delete
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
...
@@ -1142,8 +1144,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -1142,8 +1144,7 @@ class UsersApiTests(ModuleStoreTestCase):
module_type
=
'mentoring'
module_type
=
'mentoring'
)
)
test_uri
=
'/api/users/{}/courses/{}/grades'
.
format
(
test_uri
=
'{}/{}/courses/{}/grades'
.
format
(
self
.
users_base_uri
,
user_id
,
unicode
(
course
.
id
))
user_id
,
unicode
(
course
.
id
))
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
...
@@ -1199,23 +1200,23 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -1199,23 +1200,23 @@ class UsersApiTests(ModuleStoreTestCase):
response
=
self
.
do_post
(
self
.
org_base_uri
,
data
)
response
=
self
.
do_post
(
self
.
org_base_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
test_uri
=
'
/api/users/{}/organizations/'
.
format
(
user_id
)
test_uri
=
'
{}/{}/organizations/'
.
format
(
self
.
users_base_uri
,
user_id
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
data
[
'count'
],
6
)
self
.
assertEqual
(
response
.
data
[
'count'
],
6
)
self
.
assertEqual
(
len
(
response
.
data
[
'results'
]),
6
)
self
.
assertEqual
(
len
(
response
.
data
[
'results'
]),
6
)
self
.
assertEqual
(
response
.
data
[
'num_pages'
],
1
)
self
.
assertEqual
(
response
.
data
[
'num_pages'
],
1
)
# test with anonymous user id
# test with anonymous user id
test_uri
=
'
/api/users/{}/organizations/'
.
format
(
anonymous_id
)
test_uri
=
'
{}/{}/organizations/'
.
format
(
self
.
users_base_uri
,
anonymous_id
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
data
[
'count'
],
6
)
self
.
assertEqual
(
response
.
data
[
'count'
],
6
)
# test with invalid user
# test with invalid user
response
=
self
.
do_get
(
'
/api/users/4356340/organizations/'
)
response
=
self
.
do_get
(
'
{}/4356340/organizations/'
.
format
(
self
.
users_base_uri
)
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_user_workgroups_list
(
self
):
def
test_user_workgroups_list
(
self
):
test_workgroups_uri
=
'/api/workgroups/'
test_workgroups_uri
=
self
.
workgroups_base_uri
user_id
=
self
.
user
.
id
user_id
=
self
.
user
.
id
# create anonymous user
# create anonymous user
anonymous_id
=
anonymous_id_for_user
(
self
.
user
,
self
.
course
.
id
)
anonymous_id
=
anonymous_id_for_user
(
self
.
user
,
self
.
course
.
id
)
...
@@ -1236,7 +1237,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -1236,7 +1237,7 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
# test with anonymous user id
# test with anonymous user id
test_uri
=
'
/api/users/{}/workgroups/?page_size=10'
.
format
(
anonymous_id
)
test_uri
=
'
{}/{}/workgroups/?page_size=10'
.
format
(
self
.
users_base_uri
,
anonymous_id
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
data
[
'count'
],
11
)
self
.
assertEqual
(
response
.
data
[
'count'
],
11
)
self
.
assertEqual
(
len
(
response
.
data
[
'results'
]),
10
)
self
.
assertEqual
(
len
(
response
.
data
[
'results'
]),
10
)
...
@@ -1244,7 +1245,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -1244,7 +1245,7 @@ class UsersApiTests(ModuleStoreTestCase):
# test with course_id filter and integer user id
# test with course_id filter and integer user id
course_id
=
{
'course_id'
:
unicode
(
self
.
course
.
id
)}
course_id
=
{
'course_id'
:
unicode
(
self
.
course
.
id
)}
response
=
self
.
do_get
(
'
/api/users/{}/workgroups/?{}'
.
format
(
user_id
,
urlencode
(
course_id
)))
response
=
self
.
do_get
(
'
{}/{}/workgroups/?{}'
.
format
(
self
.
users_base_uri
,
user_id
,
urlencode
(
course_id
)))
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
data
[
'count'
],
7
)
self
.
assertEqual
(
response
.
data
[
'count'
],
7
)
self
.
assertEqual
(
len
(
response
.
data
[
'results'
]),
7
)
self
.
assertEqual
(
len
(
response
.
data
[
'results'
]),
7
)
...
@@ -1252,12 +1253,12 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -1252,12 +1253,12 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertIsNotNone
(
response
.
data
[
'results'
][
0
][
'project'
])
self
.
assertIsNotNone
(
response
.
data
[
'results'
][
0
][
'project'
])
# test with invalid user
# test with invalid user
response
=
self
.
do_get
(
'
/api/users/4356340/workgroups/'
)
response
=
self
.
do_get
(
'
{}/4356340/workgroups/'
.
format
(
self
.
users_base_uri
)
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
# test with valid user but has no workgroup
# test with valid user but has no workgroup
another_user_id
=
self
.
_create_test_user
()
another_user_id
=
self
.
_create_test_user
()
response
=
self
.
do_get
(
'
/api/users/{}/workgroups/'
.
format
(
another_user_id
))
response
=
self
.
do_get
(
'
{}/{}/workgroups/'
.
format
(
self
.
users_base_uri
,
another_user_id
))
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
data
[
'count'
],
0
)
self
.
assertEqual
(
response
.
data
[
'count'
],
0
)
self
.
assertEqual
(
len
(
response
.
data
[
'results'
]),
0
)
self
.
assertEqual
(
len
(
response
.
data
[
'results'
]),
0
)
...
@@ -1265,7 +1266,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -1265,7 +1266,7 @@ class UsersApiTests(ModuleStoreTestCase):
def
test_user_completions_list
(
self
):
def
test_user_completions_list
(
self
):
user_id
=
self
.
user
.
id
user_id
=
self
.
user
.
id
another_user_id
=
UserFactory
()
.
id
another_user_id
=
UserFactory
()
.
id
completion_uri
=
'
/api/courses/{}/completions/'
.
format
(
unicode
(
self
.
course
.
id
))
completion_uri
=
'
{}/{}/completions/'
.
format
(
self
.
courses_base_uri
,
unicode
(
self
.
course
.
id
))
for
i
in
xrange
(
1
,
26
):
for
i
in
xrange
(
1
,
26
):
if
i
>
12
:
if
i
>
12
:
...
@@ -1284,7 +1285,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -1284,7 +1285,7 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
# Get course module completion by user
# Get course module completion by user
completion_list_uri
=
'
/api/users/{}/courses/{}/completions/?page_size=6'
.
format
(
user_id
,
unicode
(
self
.
course
.
id
))
completion_list_uri
=
'
{}/{}/courses/{}/completions/?page_size=6'
.
format
(
self
.
users_base_uri
,
user_id
,
unicode
(
self
.
course
.
id
))
response
=
self
.
do_get
(
completion_list_uri
)
response
=
self
.
do_get
(
completion_list_uri
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
data
[
'count'
],
12
)
self
.
assertEqual
(
response
.
data
[
'count'
],
12
)
...
@@ -1294,14 +1295,15 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -1294,14 +1295,15 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
data
[
'num_pages'
],
2
)
self
.
assertEqual
(
response
.
data
[
'num_pages'
],
2
)
# Get course module completion by other user
# Get course module completion by other user
completion_list_uri
=
'
/api/users/{}/courses/{}/completions/'
.
format
(
another_user_id
,
unicode
(
self
.
course
.
id
))
completion_list_uri
=
'
{}/{}/courses/{}/completions/'
.
format
(
self
.
users_base_uri
,
another_user_id
,
unicode
(
self
.
course
.
id
))
response
=
self
.
do_get
(
completion_list_uri
)
response
=
self
.
do_get
(
completion_list_uri
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
data
[
'count'
],
13
)
self
.
assertEqual
(
response
.
data
[
'count'
],
13
)
# Get course module completion by other user and course module id (content_id)
# Get course module completion by other user and course module id (content_id)
content_id
=
{
'content_id'
:
unicode
(
local_content
.
scope_ids
.
usage_id
)}
content_id
=
{
'content_id'
:
unicode
(
local_content
.
scope_ids
.
usage_id
)}
completion_list_uri
=
'/api/users/{}/courses/{}/completions/?{}'
.
format
(
completion_list_uri
=
'{}/{}/courses/{}/completions/?{}'
.
format
(
self
.
users_base_uri
,
course_user_id
,
course_user_id
,
unicode
(
self
.
course
.
id
),
unicode
(
self
.
course
.
id
),
urlencode
(
content_id
)
urlencode
(
content_id
)
...
@@ -1311,12 +1313,12 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -1311,12 +1313,12 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
data
[
'count'
],
1
)
self
.
assertEqual
(
response
.
data
[
'count'
],
1
)
# Get course module completion by bogus user
# Get course module completion by bogus user
completion_list_uri
=
'
/api/users/{}/courses/{}/completions/'
.
format
(
'34323422'
,
unicode
(
self
.
course
.
id
))
completion_list_uri
=
'
{}/{}/courses/{}/completions/'
.
format
(
self
.
users_base_uri
,
'34323422'
,
unicode
(
self
.
course
.
id
))
response
=
self
.
do_get
(
completion_list_uri
)
response
=
self
.
do_get
(
completion_list_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_user_count_by_city
(
self
):
def
test_user_count_by_city
(
self
):
test_uri
=
'/api/users'
test_uri
=
self
.
users_base_uri
# create a 25 new users
# create a 25 new users
for
i
in
xrange
(
1
,
26
):
for
i
in
xrange
(
1
,
26
):
...
@@ -1342,26 +1344,26 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -1342,26 +1344,26 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
is_user_profile_created_updated
(
response
,
data
)
self
.
is_user_profile_created_updated
(
response
,
data
)
response
=
self
.
do_get
(
'
/api/users/metrics/cities/'
)
response
=
self
.
do_get
(
'
{}/metrics/cities/'
.
format
(
self
.
users_base_uri
)
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
len
(
response
.
data
[
'results'
]),
4
)
self
.
assertEqual
(
len
(
response
.
data
[
'results'
]),
4
)
self
.
assertEqual
(
response
.
data
[
'results'
][
0
][
'city'
],
'San Francisco'
)
self
.
assertEqual
(
response
.
data
[
'results'
][
0
][
'city'
],
'San Francisco'
)
self
.
assertEqual
(
response
.
data
[
'results'
][
0
][
'count'
],
9
)
self
.
assertEqual
(
response
.
data
[
'results'
][
0
][
'count'
],
9
)
# filter counts by city
# filter counts by city
response
=
self
.
do_get
(
'
/api/users/metrics/cities/?city=new york city'
)
response
=
self
.
do_get
(
'
{}/metrics/cities/?city=new york city'
.
format
(
self
.
users_base_uri
)
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
len
(
response
.
data
[
'results'
]),
1
)
self
.
assertEqual
(
len
(
response
.
data
[
'results'
]),
1
)
self
.
assertEqual
(
response
.
data
[
'results'
][
0
][
'city'
],
'New York City'
)
self
.
assertEqual
(
response
.
data
[
'results'
][
0
][
'city'
],
'New York City'
)
self
.
assertEqual
(
response
.
data
[
'results'
][
0
][
'count'
],
6
)
self
.
assertEqual
(
response
.
data
[
'results'
][
0
][
'count'
],
6
)
def
test_users_social_metrics_get_service_unavailable
(
self
):
def
test_users_social_metrics_get_service_unavailable
(
self
):
test_uri
=
'
/api/users/{}/courses/{}/metrics/social/'
.
format
(
self
.
user
.
id
,
self
.
course
.
id
)
test_uri
=
'
{}/{}/courses/{}/metrics/social/'
.
format
(
self
.
users_base_uri
,
self
.
user
.
id
,
self
.
course
.
id
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
500
)
self
.
assertEqual
(
response
.
status_code
,
500
)
def
test_users_social_metrics_get_invalid_user
(
self
):
def
test_users_social_metrics_get_invalid_user
(
self
):
test_uri
=
'
/api/users/{}/courses/{}/metrics/social/'
.
format
(
12345
,
self
.
course
.
id
)
test_uri
=
'
{}/12345/courses/{}/metrics/social/'
.
format
(
self
.
users_base_uri
,
self
.
course
.
id
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
...
@@ -1379,7 +1381,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -1379,7 +1381,7 @@ class UsersApiTests(ModuleStoreTestCase):
end
=
datetime
(
2015
,
1
,
16
,
14
,
30
)
end
=
datetime
(
2015
,
1
,
16
,
14
,
30
)
)
)
allow_access
(
course3
,
self
.
user
,
'staff'
)
allow_access
(
course3
,
self
.
user
,
'staff'
)
test_uri
=
'
/api/users/{}/roles/'
.
format
(
self
.
user
.
id
)
test_uri
=
'
{}/{}/roles/'
.
format
(
self
.
users_base_uri
,
self
.
user
.
id
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
data
[
'count'
],
3
)
self
.
assertEqual
(
response
.
data
[
'count'
],
3
)
...
@@ -1404,19 +1406,19 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -1404,19 +1406,19 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
data
[
'count'
],
0
)
self
.
assertEqual
(
response
.
data
[
'count'
],
0
)
def
test_users_roles_list_get_invalid_user
(
self
):
def
test_users_roles_list_get_invalid_user
(
self
):
test_uri
=
'
/api/users/23423/roles/'
test_uri
=
'
{}/23423/roles/'
.
format
(
self
.
users_base_uri
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_users_roles_list_get_invalid_course
(
self
):
def
test_users_roles_list_get_invalid_course
(
self
):
test_uri
=
'
/api/users/{}/roles/'
.
format
(
self
.
user
.
id
)
test_uri
=
'
{}/{}/roles/'
.
format
(
self
.
users_base_uri
,
self
.
user
.
id
)
course_id
=
{
'course_id'
:
'{}'
.
format
(
unicode
(
self
.
test_bogus_course_id
))}
course_id
=
{
'course_id'
:
'{}'
.
format
(
unicode
(
self
.
test_bogus_course_id
))}
test_uri
=
'{}?{}'
.
format
(
test_uri
,
urlencode
(
course_id
))
test_uri
=
'{}?{}'
.
format
(
test_uri
,
urlencode
(
course_id
))
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_users_roles_list_post
(
self
):
def
test_users_roles_list_post
(
self
):
test_uri
=
'
/api/users/{}/roles/'
.
format
(
self
.
user
.
id
)
test_uri
=
'
{}/{}/roles/'
.
format
(
self
.
users_base_uri
,
self
.
user
.
id
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
data
[
'count'
],
0
)
self
.
assertEqual
(
response
.
data
[
'count'
],
0
)
...
@@ -1434,19 +1436,19 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -1434,19 +1436,19 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertTrue
(
has_role
)
self
.
assertTrue
(
has_role
)
def
test_users_roles_list_post_invalid_user
(
self
):
def
test_users_roles_list_post_invalid_user
(
self
):
test_uri
=
'
/api/users/2131/roles/'
test_uri
=
'
{}/2131/roles/'
.
format
(
self
.
users_base_uri
)
data
=
{
'course_id'
:
unicode
(
self
.
course
.
id
),
'role'
:
'instructor'
}
data
=
{
'course_id'
:
unicode
(
self
.
course
.
id
),
'role'
:
'instructor'
}
response
=
self
.
do_post
(
test_uri
,
data
)
response
=
self
.
do_post
(
test_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_users_roles_list_post_invalid_course
(
self
):
def
test_users_roles_list_post_invalid_course
(
self
):
test_uri
=
'
/api/users/{}/roles/'
.
format
(
self
.
user
.
id
)
test_uri
=
'
{}/{}/roles/'
.
format
(
self
.
users_base_uri
,
self
.
user
.
id
)
data
=
{
'course_id'
:
self
.
test_bogus_course_id
,
'role'
:
'instructor'
}
data
=
{
'course_id'
:
self
.
test_bogus_course_id
,
'role'
:
'instructor'
}
response
=
self
.
do_post
(
test_uri
,
data
)
response
=
self
.
do_post
(
test_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
400
)
self
.
assertEqual
(
response
.
status_code
,
400
)
def
test_users_roles_list_post_invalid_role
(
self
):
def
test_users_roles_list_post_invalid_role
(
self
):
test_uri
=
'
/api/users/{}/roles/'
.
format
(
self
.
user
.
id
)
test_uri
=
'
{}/{}/roles/'
.
format
(
self
.
users_base_uri
,
self
.
user
.
id
)
data
=
{
'course_id'
:
unicode
(
self
.
course
.
id
),
'role'
:
'invalid_role'
}
data
=
{
'course_id'
:
unicode
(
self
.
course
.
id
),
'role'
:
'invalid_role'
}
response
=
self
.
do_post
(
test_uri
,
data
)
response
=
self
.
do_post
(
test_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
400
)
self
.
assertEqual
(
response
.
status_code
,
400
)
...
@@ -1470,7 +1472,7 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -1470,7 +1472,7 @@ class UsersApiTests(ModuleStoreTestCase):
name
=
FORUM_ROLE_MODERATOR
,
name
=
FORUM_ROLE_MODERATOR
,
course_id
=
course3
.
id
)
course_id
=
course3
.
id
)
test_uri
=
'
/api/users/{}/roles/'
.
format
(
self
.
user
.
id
)
test_uri
=
'
{}/{}/roles/'
.
format
(
self
.
users_base_uri
,
self
.
user
.
id
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
data
[
'count'
],
0
)
self
.
assertEqual
(
response
.
data
[
'count'
],
0
)
...
@@ -1501,13 +1503,13 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -1501,13 +1503,13 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
role
[
'role'
],
'staff'
)
self
.
assertEqual
(
role
[
'role'
],
'staff'
)
def
test_users_roles_list_put_invalid_user
(
self
):
def
test_users_roles_list_put_invalid_user
(
self
):
test_uri
=
'
/api/users/2131/roles/'
test_uri
=
'
{}/2131/roles/'
.
format
(
self
.
users_base_uri
)
data
=
[{
'course_id'
:
unicode
(
self
.
course
.
id
),
'role'
:
'instructor'
}]
data
=
[{
'course_id'
:
unicode
(
self
.
course
.
id
),
'role'
:
'instructor'
}]
response
=
self
.
do_put
(
test_uri
,
data
)
response
=
self
.
do_put
(
test_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_users_roles_list_put_invalid_course
(
self
):
def
test_users_roles_list_put_invalid_course
(
self
):
test_uri
=
'
/api/users/{}/roles/'
.
format
(
self
.
user
.
id
)
test_uri
=
'
{}/{}/roles/'
.
format
(
self
.
users_base_uri
,
self
.
user
.
id
)
data
=
{
'course_id'
:
unicode
(
self
.
course
.
id
),
'role'
:
'instructor'
}
data
=
{
'course_id'
:
unicode
(
self
.
course
.
id
),
'role'
:
'instructor'
}
response
=
self
.
do_post
(
test_uri
,
data
)
response
=
self
.
do_post
(
test_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
...
@@ -1522,13 +1524,13 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -1522,13 +1524,13 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
data
[
'results'
][
0
][
'course_id'
],
unicode
(
self
.
course
.
id
))
self
.
assertEqual
(
response
.
data
[
'results'
][
0
][
'course_id'
],
unicode
(
self
.
course
.
id
))
def
test_users_roles_list_put_invalid_roles
(
self
):
def
test_users_roles_list_put_invalid_roles
(
self
):
test_uri
=
'
/api/users/{}/roles/'
.
format
(
self
.
user
.
id
)
test_uri
=
'
{}/{}/roles/'
.
format
(
self
.
users_base_uri
,
self
.
user
.
id
)
data
=
[]
data
=
[]
response
=
self
.
do_put
(
test_uri
,
data
)
response
=
self
.
do_put
(
test_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
400
)
self
.
assertEqual
(
response
.
status_code
,
400
)
def
test_users_roles_courses_detail_delete
(
self
):
def
test_users_roles_courses_detail_delete
(
self
):
test_uri
=
'
/api/users/{}/roles/'
.
format
(
self
.
user
.
id
)
test_uri
=
'
{}/{}/roles/'
.
format
(
self
.
users_base_uri
,
self
.
user
.
id
)
data
=
{
'course_id'
:
unicode
(
self
.
course
.
id
),
'role'
:
'instructor'
}
data
=
{
'course_id'
:
unicode
(
self
.
course
.
id
),
'role'
:
'instructor'
}
response
=
self
.
do_post
(
test_uri
,
data
)
response
=
self
.
do_post
(
test_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
...
@@ -1552,19 +1554,19 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -1552,19 +1554,19 @@ class UsersApiTests(ModuleStoreTestCase):
pass
pass
def
test_users_roles_courses_detail_delete_invalid_course
(
self
):
def
test_users_roles_courses_detail_delete_invalid_course
(
self
):
test_uri
=
'
/api/users/{}/roles/'
.
format
(
self
.
user
.
id
)
test_uri
=
'
{}/{}/roles/'
.
format
(
self
.
users_base_uri
,
self
.
user
.
id
)
delete_uri
=
'{}instructor/courses/{}'
.
format
(
test_uri
,
self
.
test_bogus_course_id
)
delete_uri
=
'{}instructor/courses/{}'
.
format
(
test_uri
,
self
.
test_bogus_course_id
)
response
=
self
.
do_delete
(
delete_uri
)
response
=
self
.
do_delete
(
delete_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_users_roles_courses_detail_delete_invalid_user
(
self
):
def
test_users_roles_courses_detail_delete_invalid_user
(
self
):
test_uri
=
'
/api/users/124134/roles/'
test_uri
=
'
{}/124134/roles/'
.
format
(
self
.
users_base_uri
)
delete_uri
=
'{}instructor/courses/{}'
.
format
(
test_uri
,
unicode
(
self
.
course
.
id
))
delete_uri
=
'{}instructor/courses/{}'
.
format
(
test_uri
,
unicode
(
self
.
course
.
id
))
response
=
self
.
do_delete
(
delete_uri
)
response
=
self
.
do_delete
(
delete_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_users_roles_courses_detail_delete_invalid_role
(
self
):
def
test_users_roles_courses_detail_delete_invalid_role
(
self
):
test_uri
=
'
/api/users/{}/roles/'
.
format
(
self
.
user
.
id
)
test_uri
=
'
{}/{}/roles/'
.
format
(
self
.
users_base_uri
,
self
.
user
.
id
)
delete_uri
=
'{}invalid_role/courses/{}'
.
format
(
test_uri
,
unicode
(
self
.
course
.
id
))
delete_uri
=
'{}invalid_role/courses/{}'
.
format
(
test_uri
,
unicode
(
self
.
course
.
id
))
response
=
self
.
do_delete
(
delete_uri
)
response
=
self
.
do_delete
(
delete_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
lms/djangoapps/projects/management/commands/migrate_courseids.py
0 → 100644
View file @
0225e33a
"""
One-time data migration script -- shoulen't need to run it again
"""
from
django.contrib.auth.models
import
User
from
django.core.management.base
import
BaseCommand
from
django.test
import
RequestFactory
from
api_manager.courseware_access
import
get_course
,
get_course_child
from
opaque_keys
import
InvalidKeyError
from
project.models
import
Project
,
WorkgroupReview
,
WorkgroupSubmissionReview
class
Command
(
BaseCommand
):
"""
Migrates legacy course/content identifiers across several models to the new format
"""
def
handle
(
self
,
*
args
,
**
options
):
request_factory
=
RequestFactory
()
request
=
request_factory
.
get
(
'/'
)
request
.
user
=
User
(
email
=
'migration@edx.org'
,
username
=
'migration'
,
password
=
'migration'
,
is_active
=
True
)
projects
=
Project
.
objects
.
all
()
for
project
in
projects
:
course_descriptor
,
course_key
,
course_content
=
get_course
(
request
,
request
.
user
,
project
.
course_id
)
project
.
course_id
=
unicode
(
course_key
)
try
:
project
.
content_id
=
course_key
.
make_usage_key_from_deprecated_string
(
project
.
content_id
)
except
InvalidKeyError
:
pass
# If the key conversion fails it was either a new-style key or junk data
project
.
save
()
workgroup_reviews
=
WorkgroupReview
.
objects
.
all
()
for
wr
in
workgroup_reviews
:
course_id
=
wr
.
workgroup
.
project
.
course_id
course_descriptor
,
course_key
,
course_content
=
get_course
(
request
,
request
.
user
,
course_id
)
try
:
wr
.
content_id
=
course_key
.
make_usage_key_from_deprecated_string
(
wr
.
content_id
)
except
InvalidKeyError
:
pass
# If the key conversion fails it was either a new-style key or junk data
wr
.
save
()
workgroup_submission_reviews
=
WorkgroupSubmissionReview
.
objects
.
all
()
for
wsr
in
workgroup_submission_reviews
:
course_id
=
wsr
.
submission
.
workgroup
.
project
.
course_id
course_descriptor
,
course_key
,
course_content
=
get_course
(
request
,
request
.
user
,
course_id
)
try
:
wsr
.
content_id
=
course_key
.
make_usage_key_from_deprecated_string
(
wsr
.
content_id
)
except
InvalidKeyError
:
pass
# If the key conversion fails it was either a new-style key or junk data
wsr
.
save
()
lms/djangoapps/projects/management/commands/tests/test_migrate_courseids.py
0 → 100644
View file @
0225e33a
"""
Run these tests @ Devstack:
rake fasttest_lms[common/djangoapps/api_manager/management/commands/tests/test_migrate_orgdata.py]
"""
from
datetime
import
datetime
import
uuid
from
django.contrib.auth.models
import
Group
,
User
from
django.test
import
TestCase
from
django.test.utils
import
override_settings
from
api_manager.management.commands
import
migrate_courseids
from
courseware.tests.modulestore_config
import
TEST_DATA_MIXED_MODULESTORE
from
projects.models
import
Project
,
Workgroup
,
WorkgroupReview
,
WorkgroupSubmission
,
WorkgroupSubmissionReview
from
xmodule.modulestore.tests.factories
import
CourseFactory
,
ItemFactory
from
django.db
import
connection
@override_settings
(
MODULESTORE
=
TEST_DATA_MIXED_MODULESTORE
)
class
MigrateCourseIdsTests
(
TestCase
):
"""
Test suite for data migration script
"""
def
setUp
(
self
):
self
.
course
=
CourseFactory
.
create
(
start
=
datetime
(
2014
,
6
,
16
,
14
,
30
),
end
=
datetime
(
2015
,
1
,
16
)
)
self
.
test_data
=
'<html>{}</html>'
.
format
(
str
(
uuid
.
uuid4
()))
self
.
chapter
=
ItemFactory
.
create
(
category
=
"chapter"
,
parent_location
=
self
.
course
.
location
,
data
=
self
.
test_data
,
due
=
datetime
(
2014
,
5
,
16
,
14
,
30
),
display_name
=
"Overview"
)
self
.
old_style_course_id
=
self
.
course
.
id
.
to_deprecated_string
()
self
.
new_style_course_id
=
unicode
(
self
.
course
.
id
)
self
.
old_style_content_id
=
self
.
chapter
.
location
.
to_deprecated_string
()
self
.
new_style_content_id
=
unicode
(
self
.
chapter
.
location
)
self
.
course2
=
CourseFactory
.
create
(
org
=
'TEST'
,
start
=
datetime
(
2014
,
6
,
16
,
14
,
30
),
end
=
datetime
(
2015
,
1
,
16
)
)
self
.
chapter2
=
ItemFactory
.
create
(
category
=
"chapter"
,
parent_location
=
self
.
course2
.
location
,
data
=
self
.
test_data
,
due
=
datetime
(
2014
,
5
,
16
,
14
,
30
),
display_name
=
"Overview"
)
self
.
new_style_course_id2
=
unicode
(
self
.
course2
.
id
)
self
.
new_style_content_id2
=
unicode
(
self
.
chapter2
.
location
)
def
test_migrate_courseids
(
self
):
"""
Test the data migration
"""
# Set up the data to be migrated
user
=
User
.
objects
.
create
(
email
=
'testuser@edx.org'
,
username
=
'testuser'
,
password
=
'testpassword'
,
is_active
=
True
)
project
=
Project
.
objects
.
create
(
course_id
=
self
.
old_style_course_id
,
content_id
=
self
.
old_style_content_id
)
workgroup
=
Workgroup
.
objects
.
create
(
name
=
'Test Workgroup'
,
project
=
project
)
workgroup_review
=
WorkgroupReview
.
objects
.
create
(
workgroup
=
workgroup
,
content_id
=
self
.
old_style_content_id
)
workgroup_submission
=
WorkgroupSubmission
.
objects
.
create
(
workgroup
=
workgroup
,
user
=
user
)
workgroup_submission_review
=
WorkgroupSubmissionReview
.
objects
.
create
(
submission
=
workgroup_submission
,
content_id
=
self
.
old_style_content_id
)
user2
=
User
.
objects
.
create
(
email
=
'testuser2@edx.org'
,
username
=
'testuser2'
,
password
=
'testpassword2'
,
is_active
=
True
)
project2
=
Project
.
objects
.
create
(
course_id
=
self
.
new_style_course_id2
,
content_id
=
self
.
new_style_content_id2
)
workgroup2
=
Workgroup
.
objects
.
create
(
name
=
'Test Workgroup2'
,
project
=
project2
)
workgroup_review2
=
WorkgroupReview
.
objects
.
create
(
workgroup
=
workgroup2
,
content_id
=
self
.
new_style_content_id2
)
workgroup_submission2
=
WorkgroupSubmission
.
objects
.
create
(
workgroup
=
workgroup2
,
user
=
user2
)
workgroup_submission_review2
=
WorkgroupSubmissionReview
.
objects
.
create
(
submission
=
workgroup_submission2
,
content_id
=
self
.
new_style_content_id2
)
# Run the data migration
migrate_courseids
.
Command
()
.
handle
()
# Confirm that the data has been properly migrated
updated_project
=
Project
.
objects
.
get
(
id
=
project
.
id
)
self
.
assertEqual
(
updated_project
.
course_id
,
self
.
new_style_course_id
)
self
.
assertEqual
(
updated_project
.
content_id
,
self
.
new_style_content_id
)
updated_project
=
Project
.
objects
.
get
(
id
=
project2
.
id
)
self
.
assertEqual
(
updated_project
.
course_id
,
self
.
new_style_course_id2
)
self
.
assertEqual
(
updated_project
.
content_id
,
self
.
new_style_content_id2
)
print
"Project Data Migration Passed"
updated_workgroup_review
=
WorkgroupReview
.
objects
.
get
(
id
=
workgroup_review
.
id
)
self
.
assertEqual
(
updated_workgroup_review
.
content_id
,
self
.
new_style_content_id
)
updated_workgroup_review
=
WorkgroupReview
.
objects
.
get
(
id
=
workgroup_review2
.
id
)
self
.
assertEqual
(
updated_workgroup_review
.
content_id
,
self
.
new_style_content_id2
)
print
"Workgroup Review Data Migration Passed"
updated_workgroup_submission_review
=
WorkgroupSubmissionReview
.
objects
.
get
(
id
=
workgroup_submission_review
.
id
)
self
.
assertEqual
(
updated_workgroup_submission_review
.
content_id
,
self
.
new_style_content_id
)
updated_workgroup_submission_review
=
WorkgroupSubmissionReview
.
objects
.
get
(
id
=
workgroup_submission_review2
.
id
)
self
.
assertEqual
(
updated_workgroup_submission_review
.
content_id
,
self
.
new_style_content_id2
)
print
"Workgroup Submission Review Data Migration Passed"
lms/djangoapps/projects/tests/test_peer_reviews.py
View file @
0225e33a
...
@@ -37,10 +37,10 @@ class PeerReviewsApiTests(ModuleStoreTestCase):
...
@@ -37,10 +37,10 @@ class PeerReviewsApiTests(ModuleStoreTestCase):
def
setUp
(
self
):
def
setUp
(
self
):
self
.
test_server_prefix
=
'https://testserver'
self
.
test_server_prefix
=
'https://testserver'
self
.
test_users_uri
=
'/api/users/'
self
.
test_users_uri
=
'/api/
server/
users/'
self
.
test_workgroups_uri
=
'/api/workgroups/'
self
.
test_workgroups_uri
=
'/api/
server/
workgroups/'
self
.
test_projects_uri
=
'/api/projects/'
self
.
test_projects_uri
=
'/api/
server/
projects/'
self
.
test_peer_reviews_uri
=
'/api/peer_reviews/'
self
.
test_peer_reviews_uri
=
'/api/
server/
peer_reviews/'
self
.
course
=
CourseFactory
.
create
()
self
.
course
=
CourseFactory
.
create
()
self
.
test_data
=
'<html>{}</html>'
.
format
(
str
(
uuid
.
uuid4
()))
self
.
test_data
=
'<html>{}</html>'
.
format
(
str
(
uuid
.
uuid4
()))
...
@@ -181,7 +181,7 @@ class PeerReviewsApiTests(ModuleStoreTestCase):
...
@@ -181,7 +181,7 @@ class PeerReviewsApiTests(ModuleStoreTestCase):
self
.
assertIsNotNone
(
response
.
data
[
'modified'
])
self
.
assertIsNotNone
(
response
.
data
[
'modified'
])
def
test_peer_reviews_detail_get_undefined
(
self
):
def
test_peer_reviews_detail_get_undefined
(
self
):
test_uri
=
'
/api/peer_reviews/123456789/'
test_uri
=
'
{}/123456789/'
.
format
(
self
.
test_peer_reviews_uri
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
...
...
lms/djangoapps/projects/tests/test_projects.py
View file @
0225e33a
...
@@ -34,8 +34,8 @@ class ProjectsApiTests(TestCase):
...
@@ -34,8 +34,8 @@ class ProjectsApiTests(TestCase):
def
setUp
(
self
):
def
setUp
(
self
):
self
.
test_server_prefix
=
'https://testserver'
self
.
test_server_prefix
=
'https://testserver'
self
.
test_projects_uri
=
'/api/projects/'
self
.
test_projects_uri
=
'/api/
server/
projects/'
self
.
test_organizations_uri
=
'/api/organizations/'
self
.
test_organizations_uri
=
'/api/
server/
organizations/'
self
.
test_project_name
=
str
(
uuid
.
uuid4
())
self
.
test_project_name
=
str
(
uuid
.
uuid4
())
self
.
test_course_id
=
'edx/demo/course'
self
.
test_course_id
=
'edx/demo/course'
...
@@ -155,7 +155,7 @@ class ProjectsApiTests(TestCase):
...
@@ -155,7 +155,7 @@ class ProjectsApiTests(TestCase):
self
.
assertEqual
(
response
.
status_code
,
400
)
self
.
assertEqual
(
response
.
status_code
,
400
)
def
test_projects_detail_get_undefined
(
self
):
def
test_projects_detail_get_undefined
(
self
):
test_uri
=
'
/api/projects/123456789/'
test_uri
=
'
{}/123456789/'
.
format
(
self
.
test_projects_uri
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
...
...
lms/djangoapps/projects/tests/test_submission_reviews.py
View file @
0225e33a
...
@@ -37,10 +37,10 @@ class SubmissionReviewsApiTests(ModuleStoreTestCase):
...
@@ -37,10 +37,10 @@ class SubmissionReviewsApiTests(ModuleStoreTestCase):
def
setUp
(
self
):
def
setUp
(
self
):
self
.
test_server_prefix
=
'https://testserver'
self
.
test_server_prefix
=
'https://testserver'
self
.
test_users_uri
=
'/api/users/'
self
.
test_users_uri
=
'/api/
server/
users/'
self
.
test_workgroups_uri
=
'/api/workgroups/'
self
.
test_workgroups_uri
=
'/api/
server/
workgroups/'
self
.
test_projects_uri
=
'/api/projects/'
self
.
test_projects_uri
=
'/api/
server/
projects/'
self
.
test_submission_reviews_uri
=
'/api/submission_reviews/'
self
.
test_submission_reviews_uri
=
'/api/s
erver/s
ubmission_reviews/'
self
.
course
=
CourseFactory
.
create
()
self
.
course
=
CourseFactory
.
create
()
self
.
test_data
=
'<html>{}</html>'
.
format
(
str
(
uuid
.
uuid4
()))
self
.
test_data
=
'<html>{}</html>'
.
format
(
str
(
uuid
.
uuid4
()))
...
@@ -174,7 +174,7 @@ class SubmissionReviewsApiTests(ModuleStoreTestCase):
...
@@ -174,7 +174,7 @@ class SubmissionReviewsApiTests(ModuleStoreTestCase):
self
.
assertIsNotNone
(
response
.
data
[
'modified'
])
self
.
assertIsNotNone
(
response
.
data
[
'modified'
])
def
test_submission_reviews_detail_get_undefined
(
self
):
def
test_submission_reviews_detail_get_undefined
(
self
):
test_uri
=
'
/api/submission_reviews/123456789/'
test_uri
=
'
{}123456789/'
.
format
(
self
.
test_submission_reviews_uri
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
...
...
lms/djangoapps/projects/tests/test_workgroup_reviews.py
View file @
0225e33a
...
@@ -38,10 +38,10 @@ class WorkgroupReviewsApiTests(ModuleStoreTestCase):
...
@@ -38,10 +38,10 @@ class WorkgroupReviewsApiTests(ModuleStoreTestCase):
def
setUp
(
self
):
def
setUp
(
self
):
super
(
WorkgroupReviewsApiTests
,
self
)
.
setUp
()
super
(
WorkgroupReviewsApiTests
,
self
)
.
setUp
()
self
.
test_server_prefix
=
'https://testserver'
self
.
test_server_prefix
=
'https://testserver'
self
.
test_users_uri
=
'/api/users/'
self
.
test_users_uri
=
'/api/
server/
users/'
self
.
test_workgroups_uri
=
'/api/workgroups/'
self
.
test_workgroups_uri
=
'/api/
server/
workgroups/'
self
.
test_projects_uri
=
'/api/projects/'
self
.
test_projects_uri
=
'/api/
server/
projects/'
self
.
test_workgroup_reviews_uri
=
'/api/workgroup_reviews/'
self
.
test_workgroup_reviews_uri
=
'/api/
server/
workgroup_reviews/'
self
.
course
=
CourseFactory
.
create
()
self
.
course
=
CourseFactory
.
create
()
self
.
test_data
=
'<html>{}</html>'
.
format
(
str
(
uuid
.
uuid4
()))
self
.
test_data
=
'<html>{}</html>'
.
format
(
str
(
uuid
.
uuid4
()))
...
@@ -174,7 +174,7 @@ class WorkgroupReviewsApiTests(ModuleStoreTestCase):
...
@@ -174,7 +174,7 @@ class WorkgroupReviewsApiTests(ModuleStoreTestCase):
self
.
assertIsNotNone
(
response
.
data
[
'modified'
])
self
.
assertIsNotNone
(
response
.
data
[
'modified'
])
def
test_workgroup_reviews_detail_get_undefined
(
self
):
def
test_workgroup_reviews_detail_get_undefined
(
self
):
test_uri
=
'
/api/workgroup_reviews/123456789/'
test_uri
=
'
{}123456789/'
.
format
(
self
.
test_workgroup_reviews_uri
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
...
...
lms/djangoapps/projects/tests/test_workgroup_submissions.py
View file @
0225e33a
...
@@ -34,10 +34,10 @@ class SubmissionsApiTests(TestCase):
...
@@ -34,10 +34,10 @@ class SubmissionsApiTests(TestCase):
def
setUp
(
self
):
def
setUp
(
self
):
self
.
test_server_prefix
=
'https://testserver'
self
.
test_server_prefix
=
'https://testserver'
self
.
test_users_uri
=
'/api/users/'
self
.
test_users_uri
=
'/api/
server/
users/'
self
.
test_workgroups_uri
=
'/api/workgroups/'
self
.
test_workgroups_uri
=
'/api/
server/
workgroups/'
self
.
test_projects_uri
=
'/api/projects/'
self
.
test_projects_uri
=
'/api/
server/
projects/'
self
.
test_submissions_uri
=
'/api/submissions/'
self
.
test_submissions_uri
=
'/api/s
erver/s
ubmissions/'
self
.
test_course_id
=
'edx/demo/course'
self
.
test_course_id
=
'edx/demo/course'
self
.
test_bogus_course_id
=
'foo/bar/baz'
self
.
test_bogus_course_id
=
'foo/bar/baz'
...
@@ -182,7 +182,7 @@ class SubmissionsApiTests(TestCase):
...
@@ -182,7 +182,7 @@ class SubmissionsApiTests(TestCase):
self
.
assertIsNotNone
(
response
.
data
[
'modified'
])
self
.
assertIsNotNone
(
response
.
data
[
'modified'
])
def
test_submissions_detail_get_undefined
(
self
):
def
test_submissions_detail_get_undefined
(
self
):
test_uri
=
'
/api/submissions/123456789/'
test_uri
=
'
{}123456789/'
.
format
(
self
.
test_submissions_uri
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
...
...
lms/djangoapps/projects/tests/test_workgroups.py
View file @
0225e33a
...
@@ -47,7 +47,11 @@ class WorkgroupsApiTests(ModuleStoreTestCase):
...
@@ -47,7 +47,11 @@ class WorkgroupsApiTests(ModuleStoreTestCase):
def
setUp
(
self
):
def
setUp
(
self
):
super
(
WorkgroupsApiTests
,
self
)
.
setUp
()
super
(
WorkgroupsApiTests
,
self
)
.
setUp
()
self
.
test_server_prefix
=
'https://testserver'
self
.
test_server_prefix
=
'https://testserver'
self
.
test_workgroups_uri
=
'/api/workgroups/'
self
.
test_workgroups_uri
=
'/api/server/workgroups/'
self
.
test_submissions_uri
=
'/api/server/submissions/'
self
.
test_peer_reviews_uri
=
'/api/server/peer_reviews/'
self
.
test_workgroup_reviews_uri
=
'/api/server/workgroup_reviews/'
self
.
test_courses_uri
=
'/api/server/courses'
self
.
test_bogus_course_id
=
'foo/bar/baz'
self
.
test_bogus_course_id
=
'foo/bar/baz'
self
.
test_bogus_course_content_id
=
"i4x://foo/bar/baz"
self
.
test_bogus_course_content_id
=
"i4x://foo/bar/baz"
self
.
test_group_id
=
'1'
self
.
test_group_id
=
'1'
...
@@ -383,7 +387,7 @@ class WorkgroupsApiTests(ModuleStoreTestCase):
...
@@ -383,7 +387,7 @@ class WorkgroupsApiTests(ModuleStoreTestCase):
'question'
:
'Test question?'
,
'question'
:
'Test question?'
,
'answer'
:
'Test answer!'
'answer'
:
'Test answer!'
}
}
response
=
self
.
do_post
(
'/api/peer_reviews/'
,
pr_data
)
response
=
self
.
do_post
(
self
.
test_peer_reviews_uri
,
pr_data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
pr_id
=
response
.
data
[
'id'
]
pr_id
=
response
.
data
[
'id'
]
test_uri
=
'{}{}/'
.
format
(
self
.
test_workgroups_uri
,
workgroup_id
)
test_uri
=
'{}{}/'
.
format
(
self
.
test_workgroups_uri
,
workgroup_id
)
...
@@ -407,7 +411,7 @@ class WorkgroupsApiTests(ModuleStoreTestCase):
...
@@ -407,7 +411,7 @@ class WorkgroupsApiTests(ModuleStoreTestCase):
'question'
:
'Test question?'
,
'question'
:
'Test question?'
,
'answer'
:
'Test answer!'
'answer'
:
'Test answer!'
}
}
response
=
self
.
do_post
(
'/api/workgroup_reviews/'
,
wr_data
)
response
=
self
.
do_post
(
self
.
test_workgroup_reviews_uri
,
wr_data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
wr_id
=
response
.
data
[
'id'
]
wr_id
=
response
.
data
[
'id'
]
test_uri
=
'{}{}/'
.
format
(
self
.
test_workgroups_uri
,
workgroup_id
)
test_uri
=
'{}{}/'
.
format
(
self
.
test_workgroups_uri
,
workgroup_id
)
...
@@ -432,7 +436,7 @@ class WorkgroupsApiTests(ModuleStoreTestCase):
...
@@ -432,7 +436,7 @@ class WorkgroupsApiTests(ModuleStoreTestCase):
'document_url'
:
'https://s3.amazonaws.com/bucketname/filename.pdf'
,
'document_url'
:
'https://s3.amazonaws.com/bucketname/filename.pdf'
,
'document_mime_type'
:
'application/pdf'
'document_mime_type'
:
'application/pdf'
}
}
response
=
self
.
do_post
(
'/api/submissions/'
,
data
)
response
=
self
.
do_post
(
self
.
test_submissions_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
submission_id
=
response
.
data
[
'id'
]
submission_id
=
response
.
data
[
'id'
]
test_uri
=
'{}{}/'
.
format
(
self
.
test_workgroups_uri
,
workgroup_id
)
test_uri
=
'{}{}/'
.
format
(
self
.
test_workgroups_uri
,
workgroup_id
)
...
@@ -469,7 +473,7 @@ class WorkgroupsApiTests(ModuleStoreTestCase):
...
@@ -469,7 +473,7 @@ class WorkgroupsApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
# Confirm the grades for the users
# Confirm the grades for the users
course_grades_uri
=
'
/api/courses/{}/grades'
.
format
(
self
.
test_course_id
)
course_grades_uri
=
'
{}/{}/grades'
.
format
(
self
.
test_courses_uri
,
self
.
test_course_id
)
response
=
self
.
do_get
(
course_grades_uri
)
response
=
self
.
do_get
(
course_grades_uri
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertGreater
(
len
(
response
.
data
[
'grades'
]),
0
)
self
.
assertGreater
(
len
(
response
.
data
[
'grades'
]),
0
)
...
@@ -615,7 +619,7 @@ class WorkgroupsApiTests(ModuleStoreTestCase):
...
@@ -615,7 +619,7 @@ class WorkgroupsApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
status_code
,
400
)
self
.
assertEqual
(
response
.
status_code
,
400
)
def
test_workgroups_detail_get_undefined
(
self
):
def
test_workgroups_detail_get_undefined
(
self
):
test_uri
=
'
/api/workgroups/123456789/'
test_uri
=
'
{}123456789/'
.
format
(
self
.
test_workgroups_uri
)
response
=
self
.
do_get
(
test_uri
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
...
...
lms/urls.py
View file @
0225e33a
...
@@ -125,7 +125,7 @@ if settings.FEATURES["ENABLE_MOBILE_REST_API"]:
...
@@ -125,7 +125,7 @@ if settings.FEATURES["ENABLE_MOBILE_REST_API"]:
# OPEN EDX API
# OPEN EDX API
if
settings
.
FEATURES
[
"API"
]:
if
settings
.
FEATURES
[
"API"
]:
urlpatterns
+=
(
urlpatterns
+=
(
url
(
r'^api/'
,
include
(
'api_manager.urls'
)),
url
(
r'^api/
server/
'
,
include
(
'api_manager.urls'
)),
)
)
# if settings.FEATURES.get("MULTIPLE_ENROLLMENT_ROLES"):
# if settings.FEATURES.get("MULTIPLE_ENROLLMENT_ROLES"):
...
...
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