def test_bad_args(self): with self.assertRaises(TypeError) as cm: FileList(since=datetime.now(), until=datetime.now()) self.assertEqual(cm.exception.args[0], 'Only one of since and until arguments is allowed.') with self.assertRaises(TypeError) as cm: FileList(extra=None) self.assertEqual(cm.exception.args[0], 'Extra arguments: extra.')
def test_starting_point_valid_datetime_uploaded(self): now = datetime.datetime.now() for ordering in (None, 'datetime_uploaded', '-datetime_uploaded'): f = FileList(starting_point=now, ordering=ordering) self.assertTrue( 'from={0}'.format(quote(now.isoformat())) in f.api_url())
def test_api_url(self): f = FileList(starting_point='123', ordering='size', request_limit=10, stored=True) url = f.api_url() self.assertTrue('from=123' in url) self.assertTrue('ordering=size' in url) self.assertTrue('limit=10' in url) self.assertTrue('stored=true' in url)
def test_count_files(self, rest_request): self.assertNotEqual(0, FileList(stored=None, removed=None).count()) self.assertEqual(1, rest_request.call_count) self.assertIn('limit=1', rest_request.call_args[0][1]) rest_request.reset_mock() self.assertNotEqual(0, FileList(stored=True, removed=None).count()) self.assertEqual(1, rest_request.call_count) self.assertIn('limit=1', rest_request.call_args[0][1]) rest_request.reset_mock() self.assertNotEqual(0, FileList(stored=False, removed=True).count()) self.assertEqual(1, rest_request.call_count) self.assertIn('limit=1', rest_request.call_args[0][1]) rest_request.reset_mock() self.assertEqual(0, FileList(stored=True, removed=True).count()) self.assertEqual(1, rest_request.call_count) self.assertIn('limit=1', rest_request.call_args[0][1]) rest_request.reset_mock()
def test_count(self, rest_request): rest_request.return_value = dict(total=10) f = FileList(ordering='size', request_limit=10, stored=True) self.assertEqual(f.count(), 10) self.assertEqual(rest_request.called, 1) self.assertEqual(rest_request.mock_calls[0][1][0], 'GET') url = rest_request.mock_calls[0][1][1] self.assertTrue('ordering=size' in url) self.assertTrue('limit=1' in url) self.assertTrue('stored=true' in url)
def test_iteration_over_all_files(self): files = list(file_ for file_ in FileList(count=10)) self.assertTrue(len(files) >= 0)
# installation: # pip install pytz pyuploadcare~=2.1.0 import pytz from datetime import timedelta, datetime import time from pyuploadcare import conf from pyuploadcare.api_resources import FileList, FilesStorage MAX_LIFETIME = 30 # days conf.pub_key = 'demopublickey' conf.secret = 'demoprivatekey' dt_cutoff = datetime.now(pytz.utc) - timedelta(days=MAX_LIFETIME) if __name__ == '__main__': print 'Selecting files to be deleted...' uuid_list = [ f.uuid for f in FileList(starting_point=dt_cutoff, ordering='-datetime_uploaded', stored=True, request_limit=500) ] print 'Batch delete of selected files' ts1 = time.time() fs = FilesStorage(uuid_list) fs.delete() ts2 = time.time() print 'Operation completed in %f seconds' % (ts2 - ts1)
def test_count_invalid(self): f = FileList(ordering='size', starting_point='123') with self.assertRaisesRegexp( ValueError, 'Can\'t count objects if the `starting_point` present'): f.count()
def test_starting_point_cant_set_invalid_value_later(self): f = FileList(ordering='datetime_uploaded') with self.assertRaisesRegexp(ValueError, 'The starting_point must be a datetime'): f.starting_point = 'string'
def test_iteration_over_removed_files(self): for file_ in FileList(removed=True, limit=10): self.assertTrue(file_.is_removed())
def test_iteration_over_all_files(self): files = list(FileList(limit=10)) self.assertTrue(len(files) >= 0)
def test_starting_point_valid_size(self): f = FileList(starting_point='123', ordering='size') self.assertTrue('from=123' in f.api_url()) f = FileList(starting_point='123', ordering='-size') self.assertTrue('from=123' in f.api_url())
def test_called_with_file_list_instance(self, api_iterator, *args): api_iterator.side_effect = self.api_iterator_side_effect storage = FilesStorage(FileList()) for a, b in zip(storage.uuids(), self.UUIDS): self.assertEqual(a, b)
def test_iterate_through_all_pages(self, rest_request): list(FileList(request_limit=3, limit=10)) for call in rest_request.call_args_list: self.assertIn('/files/?', call[0][1])
def test_iteration_over_stored_removed_files(self): files = list(FileList(stored=True, removed=True, limit=10)) self.assertEqual(len(files), 0)
def test_iteration_over_not_removed_files(self): for file_ in FileList(removed=False, limit=10): self.assertFalse(file_.is_removed())
def test_iteration_over_limited_count_of_files(self): create_file_group(files_qty=3) files = list(file_ for file_ in FileList(count=2)) self.assertEqual(len(files), 2)
def test_starting_point_invalid_datetime_uploaded(self): with self.assertRaisesRegexp(ValueError, 'The starting_point must be a datetime'): FileList(starting_point='string', ordering='datetime_uploaded')
def test_iteration_over_stored_removed_files(self): for file_ in FileList(stored=True, removed=True, count=10): self.assertTrue(file_.is_stored()) self.assertTrue(file_.is_removed())
def test_iteration_over_limited_count_of_files(self): files = list(FileList(limit=2)) self.assertEqual(len(files), 2)