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
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
243 additions
and
148 deletions
+243
-148
common/djangoapps/track/contexts.py
+1
-3
common/djangoapps/util/request.py
+0
-3
lms/djangoapps/api_manager/courses/tests.py
+0
-0
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
+0
-0
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
from
opaque_keys.edx.locations
import
SlashSeparatedCourseKey
from
opaque_keys.edx.keys
import
CourseKey
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__
)
...
...
@@ -15,7 +15,6 @@ def course_context_from_url(url):
`course_context_from_course_id()`.
"""
url
=
url
or
''
match
=
COURSE_REGEX
.
match
(
url
)
course_id
=
None
if
match
:
...
...
@@ -29,7 +28,6 @@ def course_context_from_url(url):
),
exc_info
=
True
)
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):
key_generator
=
CourseKey
.
from_string
match
=
COURSE_REGEX
.
match
(
url
)
if
match
is
None
:
return
None
course_id
=
match
.
group
(
'course_id'
)
if
course_id
is
None
:
return
None
...
...
lms/djangoapps/api_manager/courses/tests.py
View file @
0225e33a
This diff is collapsed.
Click to expand it.
lms/djangoapps/api_manager/courses/views.py
View file @
0225e33a
...
...
@@ -83,7 +83,7 @@ def _serialize_content(request, content_key, content_descriptor):
protocol
=
'http'
if
request
.
is_secure
():
protocol
=
protocol
+
's'
content_uri
=
'{}://{}/api/courses/{}'
.
format
(
content_uri
=
'{}://{}/api/
server/
courses/{}'
.
format
(
protocol
,
request
.
get_host
(),
unicode
(
content_key
)
...
...
@@ -466,7 +466,7 @@ class CourseContentDetail(SecureAPIView):
protocol
=
'http'
if
request
.
is_secure
():
protocol
=
protocol
+
's'
response_data
[
'uri'
]
=
'{}://{}/api/courses/{}'
.
format
(
response_data
[
'uri'
]
=
'{}://{}/api/
server/
courses/{}'
.
format
(
protocol
,
request
.
get_host
(),
unicode
(
course_key
)
...
...
lms/djangoapps/api_manager/groups/tests.py
View file @
0225e33a
...
...
@@ -42,8 +42,9 @@ class GroupsApiTests(ModuleStoreTestCase):
self
.
test_group_name
=
str
(
uuid
.
uuid4
())
self
.
test_first_name
=
str
(
uuid
.
uuid4
())
self
.
test_last_name
=
str
(
uuid
.
uuid4
())
self
.
base_users_uri
=
'/api/users'
self
.
base_groups_uri
=
'/api/groups'
self
.
base_users_uri
=
'/api/server/users'
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
.
course
=
CourseFactory
.
create
()
...
...
@@ -965,7 +966,7 @@ class GroupsApiTests(ModuleStoreTestCase):
response
=
self
.
do_post
(
self
.
base_groups_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
group_id
=
response
.
data
[
'id'
]
test_workgroups_uri
=
'/api/workgroups/'
test_workgroups_uri
=
self
.
base_workgroups_uri
for
i
in
xrange
(
1
,
12
):
project_id
=
self
.
test_project
.
id
data
=
{
...
...
@@ -981,7 +982,7 @@ class GroupsApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
status_code
,
201
)
# 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
)
self
.
assertEqual
(
response
.
data
[
'count'
],
11
)
self
.
assertEqual
(
len
(
response
.
data
[
'results'
]),
10
)
...
...
@@ -989,12 +990,13 @@ class GroupsApiTests(ModuleStoreTestCase):
# test with course_id filter
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
.
data
[
'count'
],
11
)
self
.
assertIsNotNone
(
response
.
data
[
'results'
][
0
][
'name'
])
self
.
assertIsNotNone
(
response
.
data
[
'results'
][
0
][
'project'
])
# 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
)
lms/djangoapps/api_manager/management/commands/migrate_courseids.py
View file @
0225e33a
...
...
@@ -8,7 +8,6 @@ from django.test import RequestFactory
from
api_manager
import
models
as
api_models
from
api_manager.courseware_access
import
get_course
,
get_course_child
from
opaque_keys
import
InvalidKeyError
from
projects
import
models
as
project_models
class
Command
(
BaseCommand
):
...
...
@@ -21,37 +20,6 @@ class Command(BaseCommand):
request
=
request_factory
.
get
(
'/'
)
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
()
for
cg
in
course_groups
:
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
from
api_manager
import
models
as
api_models
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.factories
import
CourseFactory
,
ItemFactory
...
...
@@ -63,11 +62,6 @@ class MigrateCourseIdsTests(ModuleStoreTestCase):
"""
# Set up the data to be migrated
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_profile
=
api_models
.
GroupProfile
.
objects
.
create
(
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):
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
)
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'
)
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
)
...
...
@@ -92,26 +81,6 @@ class MigrateCourseIdsTests(ModuleStoreTestCase):
# 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
)
self
.
assertEqual
(
updated_course_group
.
course_id
,
self
.
new_style_course_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):
def
setUp
(
self
):
self
.
test_server_prefix
=
'https://testserver'
self
.
test_organizations_uri
=
'/api
/organizations/'
self
.
test_users_uri
=
'/api
/users'
self
.
base_groups_uri
=
'/api/groups'
self
.
base_organizations_uri
=
'/api/server
/organizations/'
self
.
base_users_uri
=
'/api/server
/users'
self
.
base_groups_uri
=
'/api/
server/
groups'
self
.
test_organization_name
=
str
(
uuid
.
uuid4
())
self
.
test_organization_display_name
=
'Test Org'
self
.
test_organization_contact_name
=
'John Org'
...
...
@@ -97,7 +97,7 @@ class OrganizationsApiTests(ModuleStoreTestCase):
'first_name'
:
'John{}'
.
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
)
users
.
append
(
response
.
data
[
'id'
])
...
...
@@ -109,12 +109,12 @@ class OrganizationsApiTests(ModuleStoreTestCase):
'contact_phone'
:
self
.
test_organization_contact_phone
,
'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
.
assertGreater
(
response
.
data
[
'id'
],
0
)
confirm_uri
=
'{}{}{}/'
.
format
(
self
.
test_server_prefix
,
self
.
test
_organizations_uri
,
self
.
base
_organizations_uri
,
str
(
response
.
data
[
'id'
])
)
self
.
assertEqual
(
response
.
data
[
'url'
],
confirm_uri
)
...
...
@@ -137,9 +137,9 @@ class OrganizationsApiTests(ModuleStoreTestCase):
'contact_email'
:
self
.
test_organization_contact_email
,
'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
)
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
)
self
.
assertEqual
(
response
.
status_code
,
200
)
confirm_uri
=
self
.
test_server_prefix
+
test_uri
...
...
@@ -156,15 +156,15 @@ class OrganizationsApiTests(ModuleStoreTestCase):
self
.
assertIsNotNone
(
response
.
data
[
'modified'
])
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
)
self
.
assertEqual
(
response
.
status_code
,
404
)
def
test_organizations_detail_delete
(
self
):
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
)
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
)
self
.
assertEqual
(
response
.
status_code
,
200
)
response
=
self
.
do_delete
(
test_uri
)
...
...
@@ -180,7 +180,7 @@ class OrganizationsApiTests(ModuleStoreTestCase):
'contact_email'
:
'testatme.com'
,
'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
)
def
test_organizations_list_post_with_groups
(
self
):
...
...
@@ -200,7 +200,7 @@ class OrganizationsApiTests(ModuleStoreTestCase):
'display_name'
:
self
.
test_organization_display_name
,
'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
(
len
(
response
.
data
[
'groups'
]),
len
(
groups
))
...
...
@@ -212,9 +212,9 @@ class OrganizationsApiTests(ModuleStoreTestCase):
'contact_email'
:
self
.
test_organization_contact_email
,
'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
)
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
)
data
=
{
"id"
:
self
.
test_user
.
id
}
response
=
self
.
do_post
(
users_uri
,
data
)
...
...
@@ -231,9 +231,9 @@ class OrganizationsApiTests(ModuleStoreTestCase):
'contact_email'
:
self
.
test_organization_contact_email
,
'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
)
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
)
data
=
{
"id"
:
123456
}
response
=
self
.
do_post
(
users_uri
,
data
)
...
...
@@ -247,9 +247,9 @@ class OrganizationsApiTests(ModuleStoreTestCase):
'contact_email'
:
self
.
test_organization_contact_email
,
'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
)
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
)
data
=
{
"id"
:
self
.
test_user
.
id
}
response
=
self
.
do_post
(
users_uri
,
data
)
...
...
@@ -271,9 +271,9 @@ class OrganizationsApiTests(ModuleStoreTestCase):
'contact_email'
:
self
.
test_organization_contact_email
,
'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
)
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
)
data
=
{
"id"
:
self
.
test_user
.
id
}
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):
# Create the test client
self
.
client
=
Client
()
cache
.
clear
()
self
.
session_url
=
'/api/sessions'
self
.
session_url
=
'/api/se
rver/se
ssions'
def
test_login_ratelimiting_protection
(
self
):
""" 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):
# Create the test client
self
.
client
=
Client
()
cache
.
clear
()
self
.
session_url
=
'/api/sessions'
self
.
user_url
=
'/api/users'
self
.
session_url
=
'/api/se
rver/se
ssions'
self
.
user_url
=
'/api/
server/
users'
@override_settings
(
MAX_FAILED_LOGIN_ATTEMPTS_ALLOWED
=
10
)
def
test_login_ratelimited_success
(
self
):
...
...
lms/djangoapps/api_manager/sessions/tests.py
View file @
0225e33a
...
...
@@ -33,8 +33,8 @@ class SessionsApiTests(TestCase):
self
.
test_username
=
str
(
uuid
.
uuid4
())
self
.
test_password
=
str
(
uuid
.
uuid4
())
self
.
test_email
=
str
(
uuid
.
uuid4
())
+
'@test.org'
self
.
base_users_uri
=
'/api/users'
self
.
base_sessions_uri
=
'/api/sessions'
self
.
base_users_uri
=
'/api/
server/
users'
self
.
base_sessions_uri
=
'/api/se
rver/se
ssions'
self
.
client
=
SecureClient
()
cache
.
clear
()
...
...
lms/djangoapps/api_manager/system/tests.py
View file @
0225e33a
...
...
@@ -26,7 +26,7 @@ class SystemApiTests(TestCase):
""" Test suite for base API views """
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_password
=
str
(
uuid
.
uuid4
())
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):
self
.
username
=
self
.
username
[
3
:
-
1
]
# username is a 32-character field
self
.
test_password
=
str
(
uuid
.
uuid4
())
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
.
headers
=
{
'Content-Type'
:
'application/json'
,
...
...
lms/djangoapps/api_manager/urls.py
View file @
0225e33a
...
...
@@ -27,16 +27,16 @@ urlpatterns = patterns(
url
(
r'^courses/*'
,
include
(
'api_manager.courses.urls'
)),
)
router
=
SimpleRouter
()
router
.
register
(
r'organizations'
,
OrganizationsViewSet
)
server_api_
router
=
SimpleRouter
()
server_api_
router
.
register
(
r'organizations'
,
OrganizationsViewSet
)
# Project-related ViewSets
router
.
register
(
r'projects'
,
project_views
.
ProjectsViewSet
)
router
.
register
(
r'workgroups'
,
project_views
.
WorkgroupsViewSet
)
router
.
register
(
r'submissions'
,
project_views
.
WorkgroupSubmissionsViewSet
)
router
.
register
(
r'workgroup_reviews'
,
project_views
.
WorkgroupReviewsViewSet
)
router
.
register
(
r'submission_reviews'
,
project_views
.
WorkgroupSubmissionReviewsViewSet
)
router
.
register
(
r'peer_reviews'
,
project_views
.
WorkgroupPeerReviewsViewSet
)
router
.
register
(
r'groups'
,
project_views
.
GroupViewSet
)
router
.
register
(
r'users'
,
project_views
.
UserViewSet
)
urlpatterns
+=
router
.
urls
server_api_
router
.
register
(
r'projects'
,
project_views
.
ProjectsViewSet
)
server_api_
router
.
register
(
r'workgroups'
,
project_views
.
WorkgroupsViewSet
)
server_api_
router
.
register
(
r'submissions'
,
project_views
.
WorkgroupSubmissionsViewSet
)
server_api_
router
.
register
(
r'workgroup_reviews'
,
project_views
.
WorkgroupReviewsViewSet
)
server_api_
router
.
register
(
r'submission_reviews'
,
project_views
.
WorkgroupSubmissionReviewsViewSet
)
server_api_
router
.
register
(
r'peer_reviews'
,
project_views
.
WorkgroupPeerReviewsViewSet
)
server_api_
router
.
register
(
r'groups'
,
project_views
.
GroupViewSet
)
server_api_
router
.
register
(
r'users'
,
project_views
.
UserViewSet
)
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):
"""
setup the api urls
"""
self
.
session_url
=
'/api/sessions'
self
.
user_url
=
'/api/users'
self
.
session_url
=
'/api/se
rver/se
ssions'
self
.
user_url
=
'/api/
server/
users'
cache
.
clear
()
@override_settings
(
ADVANCED_SECURITY_CONFIG
=
{
'MIN_DAYS_FOR_STUDENT_ACCOUNTS_PASSWORD_RESETS'
:
5
})
...
...
lms/djangoapps/api_manager/users/tests.py
View file @
0225e33a
This diff is collapsed.
Click to expand it.
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):
def
setUp
(
self
):
self
.
test_server_prefix
=
'https://testserver'
self
.
test_users_uri
=
'/api/users/'
self
.
test_workgroups_uri
=
'/api/workgroups/'
self
.
test_projects_uri
=
'/api/projects/'
self
.
test_peer_reviews_uri
=
'/api/peer_reviews/'
self
.
test_users_uri
=
'/api/
server/
users/'
self
.
test_workgroups_uri
=
'/api/
server/
workgroups/'
self
.
test_projects_uri
=
'/api/
server/
projects/'
self
.
test_peer_reviews_uri
=
'/api/
server/
peer_reviews/'
self
.
course
=
CourseFactory
.
create
()
self
.
test_data
=
'<html>{}</html>'
.
format
(
str
(
uuid
.
uuid4
()))
...
...
@@ -181,7 +181,7 @@ class PeerReviewsApiTests(ModuleStoreTestCase):
self
.
assertIsNotNone
(
response
.
data
[
'modified'
])
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
)
self
.
assertEqual
(
response
.
status_code
,
404
)
...
...
lms/djangoapps/projects/tests/test_projects.py
View file @
0225e33a
...
...
@@ -34,8 +34,8 @@ class ProjectsApiTests(TestCase):
def
setUp
(
self
):
self
.
test_server_prefix
=
'https://testserver'
self
.
test_projects_uri
=
'/api/projects/'
self
.
test_organizations_uri
=
'/api/organizations/'
self
.
test_projects_uri
=
'/api/
server/
projects/'
self
.
test_organizations_uri
=
'/api/
server/
organizations/'
self
.
test_project_name
=
str
(
uuid
.
uuid4
())
self
.
test_course_id
=
'edx/demo/course'
...
...
@@ -155,7 +155,7 @@ class ProjectsApiTests(TestCase):
self
.
assertEqual
(
response
.
status_code
,
400
)
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
)
self
.
assertEqual
(
response
.
status_code
,
404
)
...
...
lms/djangoapps/projects/tests/test_submission_reviews.py
View file @
0225e33a
...
...
@@ -37,10 +37,10 @@ class SubmissionReviewsApiTests(ModuleStoreTestCase):
def
setUp
(
self
):
self
.
test_server_prefix
=
'https://testserver'
self
.
test_users_uri
=
'/api/users/'
self
.
test_workgroups_uri
=
'/api/workgroups/'
self
.
test_projects_uri
=
'/api/projects/'
self
.
test_submission_reviews_uri
=
'/api/submission_reviews/'
self
.
test_users_uri
=
'/api/
server/
users/'
self
.
test_workgroups_uri
=
'/api/
server/
workgroups/'
self
.
test_projects_uri
=
'/api/
server/
projects/'
self
.
test_submission_reviews_uri
=
'/api/s
erver/s
ubmission_reviews/'
self
.
course
=
CourseFactory
.
create
()
self
.
test_data
=
'<html>{}</html>'
.
format
(
str
(
uuid
.
uuid4
()))
...
...
@@ -174,7 +174,7 @@ class SubmissionReviewsApiTests(ModuleStoreTestCase):
self
.
assertIsNotNone
(
response
.
data
[
'modified'
])
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
)
self
.
assertEqual
(
response
.
status_code
,
404
)
...
...
lms/djangoapps/projects/tests/test_workgroup_reviews.py
View file @
0225e33a
...
...
@@ -38,10 +38,10 @@ class WorkgroupReviewsApiTests(ModuleStoreTestCase):
def
setUp
(
self
):
super
(
WorkgroupReviewsApiTests
,
self
)
.
setUp
()
self
.
test_server_prefix
=
'https://testserver'
self
.
test_users_uri
=
'/api/users/'
self
.
test_workgroups_uri
=
'/api/workgroups/'
self
.
test_projects_uri
=
'/api/projects/'
self
.
test_workgroup_reviews_uri
=
'/api/workgroup_reviews/'
self
.
test_users_uri
=
'/api/
server/
users/'
self
.
test_workgroups_uri
=
'/api/
server/
workgroups/'
self
.
test_projects_uri
=
'/api/
server/
projects/'
self
.
test_workgroup_reviews_uri
=
'/api/
server/
workgroup_reviews/'
self
.
course
=
CourseFactory
.
create
()
self
.
test_data
=
'<html>{}</html>'
.
format
(
str
(
uuid
.
uuid4
()))
...
...
@@ -174,7 +174,7 @@ class WorkgroupReviewsApiTests(ModuleStoreTestCase):
self
.
assertIsNotNone
(
response
.
data
[
'modified'
])
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
)
self
.
assertEqual
(
response
.
status_code
,
404
)
...
...
lms/djangoapps/projects/tests/test_workgroup_submissions.py
View file @
0225e33a
...
...
@@ -34,10 +34,10 @@ class SubmissionsApiTests(TestCase):
def
setUp
(
self
):
self
.
test_server_prefix
=
'https://testserver'
self
.
test_users_uri
=
'/api/users/'
self
.
test_workgroups_uri
=
'/api/workgroups/'
self
.
test_projects_uri
=
'/api/projects/'
self
.
test_submissions_uri
=
'/api/submissions/'
self
.
test_users_uri
=
'/api/
server/
users/'
self
.
test_workgroups_uri
=
'/api/
server/
workgroups/'
self
.
test_projects_uri
=
'/api/
server/
projects/'
self
.
test_submissions_uri
=
'/api/s
erver/s
ubmissions/'
self
.
test_course_id
=
'edx/demo/course'
self
.
test_bogus_course_id
=
'foo/bar/baz'
...
...
@@ -182,7 +182,7 @@ class SubmissionsApiTests(TestCase):
self
.
assertIsNotNone
(
response
.
data
[
'modified'
])
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
)
self
.
assertEqual
(
response
.
status_code
,
404
)
...
...
lms/djangoapps/projects/tests/test_workgroups.py
View file @
0225e33a
...
...
@@ -47,7 +47,11 @@ class WorkgroupsApiTests(ModuleStoreTestCase):
def
setUp
(
self
):
super
(
WorkgroupsApiTests
,
self
)
.
setUp
()
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_content_id
=
"i4x://foo/bar/baz"
self
.
test_group_id
=
'1'
...
...
@@ -383,7 +387,7 @@ class WorkgroupsApiTests(ModuleStoreTestCase):
'question'
:
'Test question?'
,
'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
)
pr_id
=
response
.
data
[
'id'
]
test_uri
=
'{}{}/'
.
format
(
self
.
test_workgroups_uri
,
workgroup_id
)
...
...
@@ -407,7 +411,7 @@ class WorkgroupsApiTests(ModuleStoreTestCase):
'question'
:
'Test question?'
,
'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
)
wr_id
=
response
.
data
[
'id'
]
test_uri
=
'{}{}/'
.
format
(
self
.
test_workgroups_uri
,
workgroup_id
)
...
...
@@ -432,7 +436,7 @@ class WorkgroupsApiTests(ModuleStoreTestCase):
'document_url'
:
'https://s3.amazonaws.com/bucketname/filename.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
)
submission_id
=
response
.
data
[
'id'
]
test_uri
=
'{}{}/'
.
format
(
self
.
test_workgroups_uri
,
workgroup_id
)
...
...
@@ -469,7 +473,7 @@ class WorkgroupsApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
status_code
,
201
)
# 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
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertGreater
(
len
(
response
.
data
[
'grades'
]),
0
)
...
...
@@ -615,7 +619,7 @@ class WorkgroupsApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
status_code
,
400
)
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
)
self
.
assertEqual
(
response
.
status_code
,
404
)
...
...
lms/urls.py
View file @
0225e33a
...
...
@@ -125,7 +125,7 @@ if settings.FEATURES["ENABLE_MOBILE_REST_API"]:
# OPEN EDX API
if
settings
.
FEATURES
[
"API"
]:
urlpatterns
+=
(
url
(
r'^api/'
,
include
(
'api_manager.urls'
)),
url
(
r'^api/
server/
'
,
include
(
'api_manager.urls'
)),
)
# 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