Skip to content

Commit afcb75e

Browse files
author
sasha-kantoriz
committed
Add test for utils.get_file
1 parent 217cd3f commit afcb75e

1 file changed

Lines changed: 49 additions & 1 deletion

File tree

openregistry/api/tests/utils.py

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
generate_docservice_url,
2121
generate_id,
2222
get_content_configurator,
23-
get_now,
23+
get_file, get_now,
2424
get_revision_changes,
2525
load_plugins,
2626
prepare_patch,
@@ -345,6 +345,54 @@ def test_prepare_patch(self):
345345
prepare_patch(changes, orig, patch)
346346
self.assertEqual(changes, [{'path': '/status', 'value': 'pending', 'op': 'add'}])
347347

348+
def test_get_file(self):
349+
db_doc_id = '1' * 32
350+
key = 'ee9cabd7e0384c9c8006563d4876b462'
351+
document_id = '6fa5d3a2bdb049f4a13e8b5d8af7bbfd'
352+
353+
request = mock.Mock(**{
354+
'errors': mock.Mock(),
355+
'params': {'download': key},
356+
'validated': {
357+
'documents': [],
358+
'document': {},
359+
'db_doc': mock.Mock(id=db_doc_id)
360+
}
361+
})
362+
363+
self.assertEqual(get_file(request), None)
364+
self.assertEqual(request.errors.status, 404)
365+
request.errors.add.assert_called_once_with('url', 'download', 'Not Found')
366+
367+
document = mock.Mock(
368+
id=document_id,
369+
url='http://localhost/get/{}?KeyID=&Signature='.format(key),
370+
title='Test_Document.doc',
371+
format='application/msword',
372+
hash=None
373+
)
374+
request.validated['documents'].append(document)
375+
376+
self.assertEqual(get_file(request), document.url)
377+
self.assertEqual(request.response.status, '302 Moved Temporarily')
378+
self.assertEqual(request.response.content_type, 'application/msword')
379+
self.assertEqual(request.response.location, document.url)
380+
381+
document.url = 'http://localhost/api/dummy_test_resource/{}/documents/{}?download={}'.format(db_doc_id, document_id, key)
382+
with mock.patch('openregistry.api.utils.generate_docservice_url',
383+
return_value='test') as mock_ds_url:
384+
self.assertEqual(get_file(request), 'test')
385+
mock_ds_url.assert_called_once_with(
386+
request, key, prefix='{}/{}'.format(db_doc_id, document_id))
387+
388+
document.hash = 'md5:' + '0' * 32
389+
self.assertEqual(get_file(request), 'test')
390+
mock_ds_url.assert_called_with(request, key)
391+
392+
self.assertEqual(request.response.status, '302 Moved Temporarily')
393+
self.assertEqual(request.response.content_type, 'application/msword')
394+
self.assertEqual(request.response.location, 'test')
395+
348396

349397
def suite():
350398
suite = unittest.TestSuite()

0 commit comments

Comments
 (0)