Skip to content
Snippets Groups Projects
Unverified Commit 43e161f6 authored by Brandon DeRosier's avatar Brandon DeRosier
Browse files

Fix the BulkEnrollSerializer courses field to internally behave with strings and lists

parent a31855c9
No related merge requests found
......@@ -8,10 +8,11 @@ from rest_framework import serializers
class StringListField(serializers.ListField):
def to_internal_value(self, data):
try:
return data[0].split(',')
except IndexError:
if not data:
return []
if isinstance(data, list):
data = data[0]
return data.split(',')
class BulkEnrollmentSerializer(serializers.Serializer):
......
......@@ -9,6 +9,7 @@ from django.core.urlresolvers import reverse
from django.test.utils import override_settings
from rest_framework.test import APIRequestFactory, APITestCase, force_authenticate
from bulk_enroll.serializers import BulkEnrollmentSerializer
from bulk_enroll.views import BulkEnrollView
from courseware.tests.helpers import LoginEnrollmentTestCase
from microsite_configuration import microsite
......@@ -74,6 +75,22 @@ class BulkEnrollmentTest(ModuleStoreTestCase, LoginEnrollmentTestCase, APITestCa
response.render()
return response
def test_course_list_serializer(self):
"""
Test that the course serializer will work when passed a string or list.
Internally, DRF passes the data into the value conversion method as a list instead of
a string, so StringListField needs to work with both.
"""
for key in [self.course_key, [self.course_key]]:
serializer = BulkEnrollmentSerializer(data={
'identifiers': 'percivaloctavius',
'action': 'enroll',
'email_students': False,
'courses': key,
})
self.assertTrue(serializer.is_valid())
def test_non_staff(self):
""" Test that non global staff users are forbidden from API use. """
self.staff.is_staff = False
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment