Merge pull request #5742 from edx/jeskew/asset_manager_read_wrapper
Wrap all asset read operations.
This commit is contained in:
@@ -13,6 +13,8 @@ import json
|
||||
from contentstore.tests.utils import CourseTestCase
|
||||
from contentstore.views import assets
|
||||
from contentstore.utils import reverse_course_url
|
||||
from xmodule.assetstore.assetmgr import UnknownAssetType, AssetMetadataFoundTemporary
|
||||
from xmodule.assetstore import AssetMetadata
|
||||
from xmodule.contentstore.content import StaticContent
|
||||
from xmodule.contentstore.django import contentstore
|
||||
from xmodule.modulestore.django import modulestore
|
||||
@@ -134,6 +136,55 @@ class UploadTestCase(AssetsTestCase):
|
||||
self.assertEquals(resp.status_code, 400)
|
||||
|
||||
|
||||
class DownloadTestCase(AssetsTestCase):
|
||||
"""
|
||||
Unit tests for downloading a file.
|
||||
"""
|
||||
def setUp(self):
|
||||
super(DownloadTestCase, self).setUp()
|
||||
self.url = reverse_course_url('assets_handler', self.course.id)
|
||||
# First, upload something.
|
||||
self.asset_name = 'download_test'
|
||||
resp = self.upload_asset(self.asset_name)
|
||||
self.assertEquals(resp.status_code, 200)
|
||||
self.uploaded_url = json.loads(resp.content)['asset']['url']
|
||||
|
||||
def test_download(self):
|
||||
# Now, download it.
|
||||
resp = self.client.get(self.uploaded_url, HTTP_ACCEPT='text/html')
|
||||
self.assertEquals(resp.status_code, 200)
|
||||
self.assertEquals(resp.content, self.asset_name)
|
||||
|
||||
def test_download_not_found_throw(self):
|
||||
url = self.uploaded_url.replace(self.asset_name, 'not_the_asset_name')
|
||||
resp = self.client.get(url, HTTP_ACCEPT='text/html')
|
||||
self.assertEquals(resp.status_code, 404)
|
||||
|
||||
def test_download_unknown_asset_type(self):
|
||||
# Change the asset type to something unknown.
|
||||
url = self.uploaded_url.replace('/asset/', '/unknown_type/')
|
||||
with self.assertRaises((UnknownAssetType, NameError)):
|
||||
self.client.get(url, HTTP_ACCEPT='text/html')
|
||||
|
||||
def test_metadata_found_in_modulestore(self):
|
||||
# Insert asset metadata into the modulestore (with no accompanying asset).
|
||||
asset_key = self.course.id.make_asset_key(AssetMetadata.ASSET_TYPE, 'pic1.jpg')
|
||||
asset_md = AssetMetadata(asset_key, {
|
||||
'internal_name': 'EKMND332DDBK',
|
||||
'basename': 'pix/archive',
|
||||
'locked': False,
|
||||
'curr_version': '14',
|
||||
'prev_version': '13'
|
||||
})
|
||||
modulestore().save_asset_metadata(self.course.id, asset_md, 15)
|
||||
# Get the asset metadata and have it be found in the modulestore.
|
||||
# Currently, no asset metadata should be found in the modulestore. The code is not yet storing it there.
|
||||
# If asset metadata *is* found there, an exception is raised. This test ensures the exception is indeed raised.
|
||||
# THIS IS TEMPORARY. Soon, asset metadata *will* be stored in the modulestore.
|
||||
with self.assertRaises((AssetMetadataFoundTemporary, NameError)):
|
||||
self.client.get(unicode(asset_key), HTTP_ACCEPT='text/html')
|
||||
|
||||
|
||||
class AssetToJsonTestCase(AssetsTestCase):
|
||||
"""
|
||||
Unit test for transforming asset information into something
|
||||
|
||||
Reference in New Issue
Block a user