diff --git a/common/lib/xmodule/xmodule/video_module/video_module.py b/common/lib/xmodule/xmodule/video_module/video_module.py index 24c510828d..7518e0b9dd 100644 --- a/common/lib/xmodule/xmodule/video_module/video_module.py +++ b/common/lib/xmodule/xmodule/video_module/video_module.py @@ -502,6 +502,7 @@ class VideoDescriptor(VideoFields, VideoTranscriptsMixin, VideoStudioViewHandler break if metadata_was_changed_by_user: + self.edx_video_id = self.edx_video_id.strip() manage_video_subtitles_save( self, user, diff --git a/lms/djangoapps/courseware/tests/test_video_mongo.py b/lms/djangoapps/courseware/tests/test_video_mongo.py index e02bb8fd7f..6fcf8a7aff 100644 --- a/lms/djangoapps/courseware/tests/test_video_mongo.py +++ b/lms/djangoapps/courseware/tests/test_video_mongo.py @@ -9,6 +9,7 @@ from path import Path as path from lxml import etree from mock import patch, MagicMock, Mock from nose.plugins.attrib import attr +from uuid import uuid4 from django.conf import settings from django.test import TestCase @@ -1089,6 +1090,27 @@ class TestEditorSavedMethod(BaseTestXmodule): item.editor_saved(self.user, old_metadata, None) self.assertFalse(manage_video_subtitles_save.called) + @ddt.data(TEST_DATA_MONGO_MODULESTORE, TEST_DATA_SPLIT_MODULESTORE) + def test_editor_saved_with_unstripped_video_id(self, default_store): + """ + Verify editor saved when video id contains spaces/tabs. + """ + self.MODULESTORE = default_store + stripped_video_id = unicode(uuid4()) + unstripped_video_id = u'{video_id}{tabs}'.format(video_id=stripped_video_id, tabs=u'\t\t\t') + self.metadata.update({ + 'edx_video_id': unstripped_video_id + }) + self.initialize_module(metadata=self.metadata) + item = self.store.get_item(self.item_descriptor.location) + self.assertEqual(item.edx_video_id, unstripped_video_id) + + # Now, modifying and saving the video module should strip the video id. + old_metadata = own_metadata(item) + item.display_name = u'New display name' + item.editor_saved(self.user, old_metadata, None) + self.assertEqual(item.edx_video_id, stripped_video_id) + @ddt.ddt class TestVideoDescriptorStudentViewJson(TestCase):