Commit dd788c8f by Don Mitchell

Merge pull request #1107 from edx/dhm/bug_attrs

Ensure location is valid before trying to fetch
parents fd06640d 3b61d572
...@@ -194,6 +194,8 @@ class MongoContentStore(ContentStore): ...@@ -194,6 +194,8 @@ class MongoContentStore(ContentStore):
:param location: a c4x asset location :param location: a c4x asset location
""" """
# raises exception if location is not fully specified
Location.ensure_fully_specified(location)
for attr in attr_dict.iterkeys(): for attr in attr_dict.iterkeys():
if attr in ['_id', 'md5', 'uploadDate', 'length']: if attr in ['_id', 'md5', 'uploadDate', 'length']:
raise AttributeError("{} is a protected attribute.".format(attr)) raise AttributeError("{} is a protected attribute.".format(attr))
......
...@@ -22,6 +22,7 @@ from xmodule.contentstore.mongo import MongoContentStore ...@@ -22,6 +22,7 @@ from xmodule.contentstore.mongo import MongoContentStore
from xmodule.modulestore.tests.test_modulestore import check_path_to_location from xmodule.modulestore.tests.test_modulestore import check_path_to_location
from IPython.testing.nose_assert_methods import assert_in, assert_not_in from IPython.testing.nose_assert_methods import assert_in, assert_not_in
from xmodule.exceptions import NotFoundError from xmodule.exceptions import NotFoundError
from xmodule.modulestore.exceptions import InsufficientSpecificationError
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
...@@ -227,11 +228,11 @@ class TestMongoModuleStore(object): ...@@ -227,11 +228,11 @@ class TestMongoModuleStore(object):
TestMongoModuleStore.content_store.set_attrs(content['_id'], {'miscel': 99}) TestMongoModuleStore.content_store.set_attrs(content['_id'], {'miscel': 99})
assert_equals(TestMongoModuleStore.content_store.get_attr(content['_id'], 'miscel'), 99) assert_equals(TestMongoModuleStore.content_store.get_attr(content['_id'], 'miscel'), 99)
assert_raises( assert_raises(
AttributeError, TestMongoModuleStore.content_store.set_attr, course_content[0], AttributeError, TestMongoModuleStore.content_store.set_attr, course_content[0]['_id'],
'md5', 'ff1532598830e3feac91c2449eaa60d6' 'md5', 'ff1532598830e3feac91c2449eaa60d6'
) )
assert_raises( assert_raises(
AttributeError, TestMongoModuleStore.content_store.set_attrs, course_content[0], AttributeError, TestMongoModuleStore.content_store.set_attrs, course_content[0]['_id'],
{'foo': 9, 'md5': 'ff1532598830e3feac91c2449eaa60d6'} {'foo': 9, 'md5': 'ff1532598830e3feac91c2449eaa60d6'}
) )
assert_raises( assert_raises(
...@@ -253,6 +254,11 @@ class TestMongoModuleStore(object): ...@@ -253,6 +254,11 @@ class TestMongoModuleStore(object):
Location('bogus', 'bogus', 'bogus', 'asset', 'bogus'), Location('bogus', 'bogus', 'bogus', 'asset', 'bogus'),
{'displayname': 'hello'} {'displayname': 'hello'}
) )
assert_raises(
InsufficientSpecificationError, TestMongoModuleStore.content_store.set_attrs,
Location('bogus', 'bogus', 'bogus', 'asset', None),
{'displayname': 'hello'}
)
class TestMongoKeyValueStore(object): class TestMongoKeyValueStore(object):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment