def test_contentstore_attrs(self): """ Test getting, setting, and defaulting the locked attr and arbitrary attrs. """ location = BlockUsageLocator(CourseLocator('edX', 'toy', '2012_Fall', deprecated=True), 'course', '2012_Fall', deprecated=True) course_content, __ = self.content_store.get_all_content_for_course(location.course_key) assert len(course_content) > 0 filter_params = _build_requested_filter('Images') filtered_course_content, __ = self.content_store.get_all_content_for_course( location.course_key, filter_params=filter_params) assert len(filtered_course_content) < len(course_content) # a bit overkill, could just do for content[0] for content in course_content: assert not content.get('locked', False) asset_key = AssetLocator._from_deprecated_son(content.get('content_son', content['_id']), location.run) assert not self.content_store.get_attr(asset_key, 'locked', False) attrs = self.content_store.get_attrs(asset_key) assert 'uploadDate' in attrs assert not attrs.get('locked', False) self.content_store.set_attr(asset_key, 'locked', True) assert self.content_store.get_attr(asset_key, 'locked', False) attrs = self.content_store.get_attrs(asset_key) assert 'locked' in attrs assert attrs['locked'] is True self.content_store.set_attrs(asset_key, {'miscel': 99}) assert self.content_store.get_attr(asset_key, 'miscel') == 99 asset_key = AssetLocator._from_deprecated_son( course_content[0].get('content_son', course_content[0]['_id']), location.run ) with pytest.raises(AttributeError): self.content_store.set_attr(asset_key, 'md5', 'ff1532598830e3feac91c2449eaa60d6') with pytest.raises(AttributeError): self.content_store.set_attrs(asset_key, {'foo': 9, 'md5': 'ff1532598830e3feac91c2449eaa60d6'}) with pytest.raises(NotFoundError): self.content_store.get_attr( BlockUsageLocator(CourseLocator('bogus', 'bogus', 'bogus'), 'asset', 'bogus'), 'displayname' ) with pytest.raises(NotFoundError): self.content_store.set_attr( BlockUsageLocator(CourseLocator('bogus', 'bogus', 'bogus'), 'asset', 'bogus'), 'displayname', 'hello' ) with pytest.raises(NotFoundError): self.content_store.get_attrs(BlockUsageLocator(CourseLocator('bogus', 'bogus', 'bogus'), 'asset', 'bogus')) with pytest.raises(NotFoundError): self.content_store.set_attrs( BlockUsageLocator(CourseLocator('bogus', 'bogus', 'bogus'), 'asset', 'bogus'), {'displayname': 'hello'} ) with pytest.raises(NotFoundError): self.content_store.set_attrs( BlockUsageLocator(CourseLocator('bogus', 'bogus', 'bogus', deprecated=True), 'asset', None, deprecated=True), {'displayname': 'hello'} )
def test_contentstore_attrs(self): """ Test getting, setting, and defaulting the locked attr and arbitrary attrs. """ location = BlockUsageLocator(CourseLocator('edX', 'toy', '2012_Fall', deprecated=True), 'course', '2012_Fall', deprecated=True) course_content, __ = self.content_store.get_all_content_for_course(location.course_key) assert len(course_content) > 0 filter_params = _build_requested_filter('Images') filtered_course_content, __ = self.content_store.get_all_content_for_course( location.course_key, filter_params=filter_params) assert len(filtered_course_content) < len(course_content) # a bit overkill, could just do for content[0] for content in course_content: assert not content.get('locked', False) asset_key = AssetLocator._from_deprecated_son(content.get('content_son', content['_id']), location.run) assert not self.content_store.get_attr(asset_key, 'locked', False) attrs = self.content_store.get_attrs(asset_key) assert 'uploadDate' in attrs assert not attrs.get('locked', False) self.content_store.set_attr(asset_key, 'locked', True) assert self.content_store.get_attr(asset_key, 'locked', False) attrs = self.content_store.get_attrs(asset_key) assert 'locked' in attrs assert attrs['locked'] is True self.content_store.set_attrs(asset_key, {'miscel': 99}) assert self.content_store.get_attr(asset_key, 'miscel') == 99 asset_key = AssetLocator._from_deprecated_son( course_content[0].get('content_son', course_content[0]['_id']), location.run ) with pytest.raises(AttributeError): self.content_store.set_attr(asset_key, 'md5', 'ff1532598830e3feac91c2449eaa60d6') with pytest.raises(AttributeError): self.content_store.set_attrs(asset_key, {'foo': 9, 'md5': 'ff1532598830e3feac91c2449eaa60d6'}) with pytest.raises(NotFoundError): self.content_store.get_attr( BlockUsageLocator(CourseLocator('bogus', 'bogus', 'bogus'), 'asset', 'bogus'), 'displayname' ) with pytest.raises(NotFoundError): self.content_store.set_attr( BlockUsageLocator(CourseLocator('bogus', 'bogus', 'bogus'), 'asset', 'bogus'), 'displayname', 'hello' ) with pytest.raises(NotFoundError): self.content_store.get_attrs(BlockUsageLocator(CourseLocator('bogus', 'bogus', 'bogus'), 'asset', 'bogus')) with pytest.raises(NotFoundError): self.content_store.set_attrs( BlockUsageLocator(CourseLocator('bogus', 'bogus', 'bogus'), 'asset', 'bogus'), {'displayname': 'hello'} ) with pytest.raises(NotFoundError): self.content_store.set_attrs( BlockUsageLocator(CourseLocator('bogus', 'bogus', 'bogus', deprecated=True), 'asset', None, deprecated=True), {'displayname': 'hello'} )
def _from_deprecated_son(cls, id_dict, run): """Deprecated. See BlockUsageLocator._from_deprecated_son""" cls._deprecation_warning() return AssetLocator._from_deprecated_son(id_dict, run)
def _from_deprecated_son(cls, id_dict, run): """Deprecated. See BlockUsageLocator._from_deprecated_son""" cls._deprecation_warning() return AssetLocator._from_deprecated_son(id_dict, run)