Merge pull request #10346 from edx/clintonb/credit-api-update
Updated CreditCourse update endpoint
This commit is contained in:
@@ -469,24 +469,48 @@ class CreditCourseViewSetTests(TestCase):
|
||||
response = self.client.get(self.path, **headers)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_create(self):
|
||||
""" Verify the endpoint supports creating new CreditCourse objects. """
|
||||
course_key = CourseKey.from_string('a/b/c')
|
||||
def assert_course_created(self, course_id, response):
|
||||
""" Verify an API request created a new CreditCourse object. """
|
||||
enabled = True
|
||||
data = {
|
||||
'course_key': unicode(course_key),
|
||||
'course_key': unicode(course_id),
|
||||
'enabled': enabled
|
||||
}
|
||||
|
||||
response = self.client.post(self.path, data=json.dumps(data), content_type=JSON)
|
||||
self.assertEqual(response.status_code, 201)
|
||||
|
||||
# Verify the API returns the serialized CreditCourse
|
||||
self.assertDictEqual(json.loads(response.content), data)
|
||||
|
||||
# Verify the CreditCourse was actually created
|
||||
course_key = CourseKey.from_string(course_id)
|
||||
self.assertTrue(CreditCourse.objects.filter(course_key=course_key, enabled=enabled).exists())
|
||||
|
||||
def test_create(self):
|
||||
""" Verify the endpoint supports creating new CreditCourse objects. """
|
||||
course_id = 'a/b/c'
|
||||
enabled = True
|
||||
data = {
|
||||
'course_key': unicode(course_id),
|
||||
'enabled': enabled
|
||||
}
|
||||
|
||||
response = self.client.post(self.path, data=json.dumps(data), content_type=JSON)
|
||||
self.assert_course_created(course_id, response)
|
||||
|
||||
def test_put_as_create(self):
|
||||
""" Verify the update endpoint supports creating a new CreditCourse object. """
|
||||
course_id = 'd/e/f'
|
||||
enabled = True
|
||||
data = {
|
||||
'course_key': unicode(course_id),
|
||||
'enabled': enabled
|
||||
}
|
||||
|
||||
path = reverse('credit:creditcourse-detail', args=[course_id])
|
||||
response = self.client.put(path, data=json.dumps(data), content_type=JSON)
|
||||
self.assert_course_created(course_id, response)
|
||||
|
||||
def test_get(self):
|
||||
""" Verify the endpoint supports retrieving CreditCourse objects. """
|
||||
course_id = 'a/b/c'
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
"""
|
||||
Views for the credit Django app.
|
||||
"""
|
||||
import json
|
||||
import datetime
|
||||
import json
|
||||
import logging
|
||||
|
||||
from django.conf import settings
|
||||
@@ -21,13 +21,15 @@ import pytz
|
||||
from rest_framework import viewsets, mixins, permissions
|
||||
from rest_framework.authentication import SessionAuthentication
|
||||
from rest_framework_oauth.authentication import OAuth2Authentication
|
||||
from util.json_request import JsonResponse
|
||||
from util.date_utils import from_timestamp
|
||||
|
||||
from openedx.core.djangoapps.credit import api
|
||||
from openedx.core.djangoapps.credit.exceptions import CreditApiBadRequest, CreditRequestNotFound
|
||||
from openedx.core.djangoapps.credit.models import CreditCourse
|
||||
from openedx.core.djangoapps.credit.serializers import CreditCourseSerializer
|
||||
from openedx.core.djangoapps.credit.signature import signature, get_shared_secret_key
|
||||
from openedx.core.lib.api.mixins import PutAsCreateMixin
|
||||
from util.date_utils import from_timestamp
|
||||
from util.json_request import JsonResponse
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
@@ -371,7 +373,7 @@ def _validate_timestamp(timestamp_value, provider_id):
|
||||
return HttpResponseForbidden(u"Timestamp is too far in the past.")
|
||||
|
||||
|
||||
class CreditCourseViewSet(mixins.CreateModelMixin, mixins.UpdateModelMixin, viewsets.ReadOnlyModelViewSet):
|
||||
class CreditCourseViewSet(PutAsCreateMixin, mixins.UpdateModelMixin, viewsets.ReadOnlyModelViewSet):
|
||||
""" CreditCourse endpoints. """
|
||||
|
||||
lookup_field = 'course_key'
|
||||
|
||||
Reference in New Issue
Block a user