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_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_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_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(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_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_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(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_page_1_position_11_when_total_11_per_page_13_offset_11(self):
        """| 0 1 2 3 4 5 6 7 8 9 10 _ _ |"""
        FileList.FileListIterator._count_per_request = 13
        gen = FileList.FileListIterator(offset=11)

        self.assertEqual(gen._page, 1)
        self.assertEqual(gen._position_in_page, 11)
    def test_page_2_position_2_when_total_11_per_page_3_offset_5(self):
        """| 0 1 2 | 3 4 5 | 6 7 8 | 9 10 _ |"""
        FileList.FileListIterator._count_per_request = 3
        gen = FileList.FileListIterator(offset=5)

        self.assertEqual(gen._page, 2)
        self.assertEqual(gen._position_in_page, 2)
Beispiel #12
0
    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_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_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_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_get_only_stored_removed_file(self):
     result = FileList.retrieve(page=1, limit=1, stored=True, removed=True)
     if result['results']:
         file_info = result['results'][0]
         self.assertIsNotNone(file_info['datetime_stored'])
         self.assertIsNotNone(file_info['datetime_removed'])
Beispiel #17
0
 def test_iteration_over_not_removed_files(self):
     for file_ in FileList(removed=False, limit=10):
         self.assertFalse(file_.is_removed())
 def test_get_only_stored_removed_file(self):
     result = FileList.retrieve(page=1, limit=1, stored=True, removed=True)
     if result['results']:
         file_info = result['results'][0]
         self.assertIsNotNone(file_info['datetime_stored'])
         self.assertIsNotNone(file_info['datetime_removed'])
 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_invalid_datetime_uploaded(self):
     with self.assertRaisesRegexp(ValueError,
                                  'The starting_point must be a datetime'):
         FileList(starting_point='string', ordering='datetime_uploaded')
    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'
Beispiel #22
0
 def test_iteration_over_limited_count_of_files(self):
     files = list(FileList(limit=2))
     self.assertEqual(len(files), 2)
    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)
Beispiel #25
0
 def test_iteration_over_stored_removed_files(self):
     files = list(FileList(stored=True, removed=True, limit=10))
     self.assertEqual(len(files), 0)
 def test_get_only_one_file(self):
     result = FileList.retrieve(page=1, limit=1)
     if result['results']:
         self.assertEqual(len(result['results']), 1)
Beispiel #27
0
 def test_iteration_over_all_files(self):
     files = list(FileList(limit=10))
     self.assertTrue(len(files) >= 0)
Beispiel #28
0
 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])
# 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_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_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_get_only_one_file(self):
     result = FileList.retrieve(page=1, limit=1)
     if result['results']:
         self.assertEqual(len(result['results']), 1)
 def test_get_only_non_removed_file(self):
     result = FileList.retrieve(page=1, limit=1, removed=False)
     if result['results']:
         file_info = result['results'][0]
         self.assertIsNone(file_info['datetime_removed'])
 def test_get_only_non_removed_file(self):
     result = FileList.retrieve(page=1, limit=1, removed=False)
     if result['results']:
         file_info = result['results'][0]
         self.assertIsNone(file_info['datetime_removed'])
 def test_iteration_over_all_files(self):
     files = list(file_ for file_ in FileList(count=10))
     self.assertTrue(len(files) >= 0)
Beispiel #36
0
 def test_iteration_over_removed_files(self):
     for file_ in FileList(removed=True, limit=10):
         self.assertTrue(file_.is_removed())
 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_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()