Skip to content

Commit

Permalink
100% grid_fs coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
Reed O'Brien committed Jul 31, 2012
1 parent 436a47f commit 6ce3eab
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 3 deletions.
6 changes: 4 additions & 2 deletions lumin/grid_fs.py
Expand Up @@ -31,7 +31,7 @@ def __init__(self,
## TODO: remove when mongo gets TTL capped collections.
expired = self.tempstore.files.find(
{'uploadDate': {"$lt": datetime.utcnow() - self.max_age}})
for file_ in expired:
for file_ in expired: # pragma: no cover
self.fs.delete(file_['_id'])

def get(self, uid, default=None):
Expand All @@ -40,7 +40,9 @@ def get(self, uid, default=None):
return default
oid = result['_id']
fp = self.fs.get(oid)
if fp is None:
if fp is None: # pragma: no cover
## this shouldn't be able to happen. unless the file is removed in
## TTL collection after the metadata is retreived
return default
result['fp'] = fp
return result
Expand Down
37 changes: 36 additions & 1 deletion lumin/tests/test_grid_fs.py
Expand Up @@ -98,6 +98,21 @@ def test___setitem__(self):
self.failUnless(one['uploadDate'])
self.failUnless(cstruct['filename'] in inst.fs.list())

def test___delitem__(self):
fp = self._make_fp()
cstruct = {'fp': fp,
'mimetype': 'mimetype',
'filename': 'filename',
'uid': 'uid'}
inst = self.make_one()
inst['uid'] = cstruct
one = self.request.db.tempstore.files.find_one({'uid': 'uid'})
self.assertEqual(one['mimetype'], 'mimetype')
self.failUnless(cstruct['filename'] in inst.fs.list())
del inst['uid']
self.failIf(cstruct['filename'] in inst.fs.list())
self.assertEqual(self.request.db.tempstore.files.find_one({'uid': 'uid'}), None)

def test_preview_url(self):
self.config.begin(request=self.request)
self.config.add_route('preview_image', '/preview_image/:uid')
Expand Down Expand Up @@ -174,9 +189,10 @@ def test_response(self):
fp = self._make_file()
oid = fs.put(fp, content_type=text_('text/plain'),
filename='aname.txt',
xmetadata=self.metadata)
metadata=self.metadata)
self.request.matchdict = {'slug': str(oid)}
result = self.make_one(request=self.request)
self.assertEqual(result.__acl__, self.metadata['__acl__'])
resp = result.response()
self.assertTrue(isinstance(resp, Response))
self.assertEqual(resp.content_length, result.gf.length)
Expand All @@ -185,3 +201,22 @@ def test_response(self):
'attachment; filename=aname.txt')
self.assertEqual(resp.body, b'This is a file')
self.assertEqual(resp.status, '200 OK')

def test_default__acl(self):
from pyramid.security import Allow
metadata = {'uploaded_by': 'testuser',
'mimetype': 'text/plain'}
fs = self._make_fs()
fp = self._make_file()
oid = fs.put(fp,
content_type='text/plain',
filename='aname.txt',
metadata=metadata)
self.request.matchdict = {'slug': str(oid)}
result = self.make_one(request=self.request)
self.assertEqual(result.__acl__,
[(Allow, 'group:managers', ('add', 'delete', 'edit', 'view'))])
self.assertEqual(result.gf.filename, 'aname.txt')
self.assertEqual(result.gf.metadata, metadata)
self.assertEqual(result.gf.read(), b'This is a file')

0 comments on commit 6ce3eab

Please sign in to comment.