Handle the correct exception to cause a 404 error upon asset not found

instead of a 500 error. Add 404 test.
This commit is contained in:
John Eskew
2015-01-07 09:47:18 -05:00
parent 542509358e
commit df5ba26ac6
2 changed files with 10 additions and 2 deletions

View File

@@ -840,9 +840,16 @@ class MiscCourseTests(ContentStoreTestCase):
self.store.unpublish(self.chapter_loc, self.user.id)
def test_bad_contentstore_request(self):
resp = self.client.get_html('http://localhost:8001/c4x/CDX/123123/asset/&images_circuits_Lab7Solution2.png')
"""
Test that user get proper responses for urls with invalid url or
asset/course key
"""
resp = self.client.get_html('/c4x/CDX/123123/asset/&invalid.png')
self.assertEqual(resp.status_code, 400)
resp = self.client.get_html('/c4x/CDX/123123/asset/invalid.png')
self.assertEqual(resp.status_code, 404)
def test_delete_course(self):
"""
This test creates a course, makes a draft item, and deletes the course. This will also assert that the

View File

@@ -15,6 +15,7 @@ from xmodule.modulestore import InvalidLocationError
from opaque_keys import InvalidKeyError
from opaque_keys.edx.locator import AssetLocator
from cache_toolbox.core import get_cached_content, set_cached_content
from xmodule.modulestore.exceptions import ItemNotFoundError
from xmodule.exceptions import NotFoundError
# TODO: Soon as we have a reasonable way to serialize/deserialize AssetKeys, we need
@@ -44,7 +45,7 @@ class StaticContentServer(object):
# nope, not in cache, let's fetch from DB
try:
content = AssetManager.find(loc, as_stream=True)
except NotFoundError:
except (ItemNotFoundError, NotFoundError):
response = HttpResponse()
response.status_code = 404
return response