Commit 3b61d572 by Don Mitchell

Ensure location is valid before trying to fetch

Prevent accidental wildcarding.
parent 199f898d
......@@ -177,6 +177,8 @@ class MongoContentStore(ContentStore):
: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():
if attr in ['_id', 'md5', 'uploadDate', 'length']:
raise AttributeError("{} is a protected attribute.".format(attr))
......
......@@ -22,6 +22,7 @@ from xmodule.contentstore.mongo import MongoContentStore
from xmodule.modulestore.tests.test_modulestore import check_path_to_location
from IPython.testing.nose_assert_methods import assert_in, assert_not_in
from xmodule.exceptions import NotFoundError
from xmodule.modulestore.exceptions import InsufficientSpecificationError
log = logging.getLogger(__name__)
......@@ -227,11 +228,11 @@ class TestMongoModuleStore(object):
TestMongoModuleStore.content_store.set_attrs(content['_id'], {'miscel': 99})
assert_equals(TestMongoModuleStore.content_store.get_attr(content['_id'], 'miscel'), 99)
assert_raises(
AttributeError, TestMongoModuleStore.content_store.set_attr, course_content[0],
AttributeError, TestMongoModuleStore.content_store.set_attr, course_content[0]['_id'],
'md5', 'ff1532598830e3feac91c2449eaa60d6'
)
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'}
)
assert_raises(
......@@ -253,6 +254,11 @@ class TestMongoModuleStore(object):
Location('bogus', 'bogus', 'bogus', 'asset', 'bogus'),
{'displayname': 'hello'}
)
assert_raises(
InsufficientSpecificationError, TestMongoModuleStore.content_store.set_attrs,
Location('bogus', 'bogus', 'bogus', 'asset', None),
{'displayname': 'hello'}
)
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