Esempio n. 1
0
    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'}
            )
Esempio n. 2
0
    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'}
            )
Esempio n. 3
0
 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)
Esempio n. 4
0
 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)