def test_get_pending_frame(self): message = [{'message': 'value'}] pipeline = [{ '$match': { 'username': '******' } }, { '$project': { 'message': { '$arrayElemAt': ['$messages', 0] } } }, { '$project': { 'message.file_id': 1, '_id': 0, 'message.frame': { '$arrayElemAt': ['$message.frames', 0] } } }] accessor = user_accessor.UserAccessor() collection = self.get_collection() collection.aggregate.return_value = message res = accessor.get_pending_frame('username') collection.aggregate.assert_called_with(pipeline) self.assertEqual(res, 'value')
def test_validate_user(self): accessor = user_accessor.UserAccessor() accessor.validate_user('username') to_update = {'$set': {'validated': True}} collection = self.get_collection() collection.update_one.assert_called_with({'username': '******'}, to_update)
def test_is_validated(self, result, is_validated, mock_find): accessor = user_accessor.UserAccessor() mock_find.return_value = result res = accessor.is_validated('username') mock_find.assert_called_once_with({'username': '******'}, { '_id': 0, 'validated': 1 }) self.assertIs(res, is_validated)
def test_delete_uploads_item(self, mock_get_item, mock_delete): mock_get_item.return_value = {'file_id': 1, 'thumbnail_id': 2} accessor = user_accessor.UserAccessor() accessor.delete_upload_item('file_id', 'username') mock_get_item.assert_called_with('file_id', 'username') accessor.s3_accessor.delete_object.assert_any_call(1, 'media_bucket') accessor.s3_accessor.delete_object.assert_any_call(2, 'media_bucket') mock_delete.assert_called_once_with({'username': '******'}, 'uploads', {'file_id': 'file_id'}) self.assertEqual(accessor.s3_accessor.delete_object.call_count, 2)
def test_get_list(self): collection = self.get_collection() collection.find_one.return_value = {'field': [1, 2, 3]} accessor = user_accessor.UserAccessor() res = accessor.get_list('username', 'field') collection.find_one.assert_called_with({'username': '******'}, { '_id': 0, 'field': 1 }) self.assertEqual(res, [1, 2, 3])
def test_delete_gallery_item(self, mock_get_item, mock_delete): mock_get_item.return_value = {'file_ids': [1, 1, 2, 2]} accessor = user_accessor.UserAccessor() accessor.delete_gallery_item('gallery_id', 'username') mock_get_item.assert_called_with('gallery_id', 'username') accessor.s3_accessor.delete_object.assert_any_call(1, 'media_bucket') accessor.s3_accessor.delete_object.assert_any_call(2, 'media_bucket') mock_delete.assert_called_once_with({'username': '******'}, 'gallery', {'gallery_id': 'gallery_id'}) self.assertEqual(accessor.s3_accessor.delete_object.call_count, 2)
def test_create_user(self, count): accessor = user_accessor.UserAccessor() collection = self.get_collection() collection.count.return_value = count if count: self.assertRaises(user_accessor.UserException, accessor.create_user, 'username', 'email', 'pswd') collection.insert_one.assert_not_called() else: accessor.create_user('username', 'email', 'pswd') collection.insert_one.assert_called_once()
def test_insert_list_item(self): collection = self.get_collection() accessor = user_accessor.UserAccessor() accessor.insert_list_item('username', 'field_name', {'item': 'value'}) collection.update_one.assert_called_with({'username': '******'}, { '$push': { 'field_name': { '$each': [{ 'item': 'value' }], '$position': 0 } } })
def test_create_gallery_item(self, gif_data, mock_insert, mock_job): accessor = user_accessor.UserAccessor() accessor.s3_accessor.insert_image_and_thumbnail.return_value = (1, 2) data_type = 'gif_data' if gif_data else 'image_data' fn = None if not gif_data else user_accessor.secure_filename( f'{self.mock_id()}.gif') res = accessor.create_gallery_item('username', 'image_data', fn, gif_data) accessor.s3_accessor.insert_image_and_thumbnail.assert_called_with( data_type, filename=fn) mock_insert.assert_called_once() mock_job.assert_called_with('username') self.assertEqual(res.get('username'), 'username') self.assertEqual(len(res.get('file_ids')), 4)
def test_delete_user(self, mock_find): mock_find.return_value = { 'gallery': [{ 'file_ids': [1, 2, 3] }, { 'file_ids': [4, 5] }], 'uploads': [{ 'file_id': 6, 'thumbnail_id': 7 }] } accessor = user_accessor.UserAccessor() accessor.delete_user('username') mock_find.assert_called_once_with({'username': '******'}) self.assertEqual(accessor.s3_accessor.delete_object.call_count, 7)
def test_upload_file(self, mock_insert): img = MagicMock() img.filename = 'fn' img.read.return_value = b'content' self.s3_accessor.return_value.insert_image_and_thumbnail.return_value = ( 'file_id', 'thumbnail_id') path = user_accessor.secure_filename(f'{self.mock_id.return_value}_fn') accessor = user_accessor.UserAccessor() res = accessor.upload_file('username', img) accessor.s3_accessor.insert_image_and_thumbnail.assert_called_once_with( b'content', filename=path) self.assertEqual(res, { 'img_path': path, 'file_id': 'file_id', 'thumbnail_id': 'thumbnail_id' }) mock_insert.assert_called_once()
def test_get_paginated_list(self, get_results): get_results.return_value = { 'results': [{ 'field': 'a' }, { 'field': 'b' }], 'total': 2 } results = {'results': ['a', 'b'], 'total': 2} accessor = user_accessor.UserAccessor() res = accessor.get_paginated_list('username', 'field', 'skip', 'limit', 'sort') self.assertEqual(res, results) get_results.assert_called_with({'username': '******'}, { '_id': 0, 'field': 1 }, '$field', 'skip', 'limit', 'sort')
def test_insert_message_item(self, mock_insert): accessor = user_accessor.UserAccessor() accessor.create_message_item('username', 'file_id', enlargement=1, tile_size=2) message = { 'file_id': 'file_id', 'enlargement': 1, 'tile_size': 2, 'current': 'file_id', 'progress': 0, 'message_id': str(self.mock_id.return_value), 'status': 'queued', 'expire_at': time.time() + user_accessor.DEFAULT_TIMEOUT, 'total_frames': 50, 'frames': [] } mock_insert.assert_called_with('username', 'messages', message)
def test_complete_job(self): exp_frame_pipeline = [{ '$match': { 'username': '******' } }, { '$project': { 'message': { '$arrayElemAt': ['$messages', 0] } } }, { '$project': { 'message.file_id': 1, '_id': 0, 'message.frames': 1 } }] accessor = user_accessor.UserAccessor() accessor.collection.aggregate.return_value = [{ 'message': ['id1', 'id2'] }] accessor.complete_job('username') to_update = { '$set': { 'messages.0.progress': 1.0, 'messages.0.status': 'complete' }, '$push': { 'messages.0.frames': { '$each': [], '$slice': -1 } } } collection = self.get_collection() collection.update_one.assert_called_with({'username': '******'}, to_update) collection.aggregate.assert_called_once_with(exp_frame_pipeline) self.assertEqual(self.mock_gridfs.delete.call_count, 2)
def test_get_gallery_item(get_element): accessor = user_accessor.UserAccessor() accessor.get_gallery_item('gallery_id', 'username') get_element.assert_called_with({'username': '******'}, 'gallery', {'gallery.gallery_id': 'gallery_id'})
def test_check_password(self, user, pswd, result, mock_find): mock_find.return_value = user accessor = user_accessor.UserAccessor() res = accessor.check_password('username', pswd) self.assertEqual(res, result)
def test_get_upload_item(get_element): accessor = user_accessor.UserAccessor() accessor.get_upload_item('file_id', 'username') get_element.assert_called_with({'username': '******'}, 'uploads', {'uploads.file_id': 'file_id'})
def test_init(self): accessor = user_accessor.UserAccessor() # from pdb import set_trace as bp self.assertEqual(accessor.collection_name, 'users') self.s3_accessor.assert_called_with(logger=self.logger)