def test_enqueue_s3_keys_for_download(self):

        mock_folder1 = 'a/b/'
        mocked_key1 = mock.Mock()
        mocked_key1.name = mock_folder1 + 'c'

        mock_folder2 = 'b/c/'
        mocked_key2 = mock.Mock()
        mocked_key2.name = mock_folder2 + 'd'

        mock_folder3 = 'c/d/'
        mocked_key3 = mock.Mock()
        mocked_key3.name = mock_folder3 + 'e'

        mocked_bucket = mock.Mock()
        mocked_bucket.list = lambda prefix: [mocked_key1, mocked_key2, mocked_key3]

        queue = s3concurrent.ProcessKeyQueue()

        s3concurrent.enqueue_s3_keys_for_download(mocked_bucket, 'test/prefix', sandbox, queue)

        self.assertTrue(os.path.exists(sandbox + mock_folder1))
        self.assertTrue(os.path.exists(sandbox + mock_folder2))
        self.assertTrue(os.path.exists(sandbox + mock_folder3))

        self.assertEquals(queue.enqueued_counter, 3)
        self.assertFalse(queue.is_empty())

        self.assertFalse(queue.is_queuing())
    def test_enqueue_s3_keys_for_download(self):

        mock_folder1 = 'a/b/'
        mocked_key1 = mock.Mock()
        mocked_key1.name = mock_folder1 + 'c'

        mock_folder2 = 'b/c/'
        mocked_key2 = mock.Mock()
        mocked_key2.name = mock_folder2 + 'd'

        mock_folder3 = 'c/d/'
        mocked_key3 = mock.Mock()
        mocked_key3.name = mock_folder3 + 'e'

        mocked_bucket = mock.Mock()
        mocked_bucket.list = lambda prefix: [
            mocked_key1, mocked_key2, mocked_key3
        ]

        queue = s3concurrent.ProcessKeyQueue()

        s3concurrent.enqueue_s3_keys_for_download(mocked_bucket, 'test/prefix',
                                                  sandbox, queue)

        self.assertTrue(os.path.exists(sandbox + mock_folder1))
        self.assertTrue(os.path.exists(sandbox + mock_folder2))
        self.assertTrue(os.path.exists(sandbox + mock_folder3))

        self.assertEquals(queue.enqueued_counter, 3)
        self.assertFalse(queue.is_empty())

        self.assertFalse(queue.is_queuing())
    def test_enqueue_s3_keys_for_download_error(self, mocked_dirname):
        mock_folder1 = 'a/b/'
        mocked_key1 = mock.Mock()
        mocked_key1.name = mock_folder1 + 'c'

        mocked_bucket = mock.Mock()
        mocked_bucket.list = lambda prefix: [mocked_key1]

        queue = s3concurrent.ProcessKeyQueue()

        s3concurrent.enqueue_s3_keys_for_download(mocked_bucket, 'test/prefix', sandbox, queue)

        self.assertEquals(queue.enqueued_counter, 0)
        self.assertTrue(queue.is_empty())

        self.assertFalse(queue.is_queuing())
    def test_enqueue_s3_keys_for_download_error(self, mocked_dirname):
        mock_folder1 = 'a/b/'
        mocked_key1 = mock.Mock()
        mocked_key1.name = mock_folder1 + 'c'

        mocked_bucket = mock.Mock()
        mocked_bucket.list = lambda prefix: [mocked_key1]

        queue = s3concurrent.ProcessKeyQueue()

        s3concurrent.enqueue_s3_keys_for_download(mocked_bucket, 'test/prefix',
                                                  sandbox, queue)

        self.assertEquals(queue.enqueued_counter, 0)
        self.assertTrue(queue.is_empty())

        self.assertFalse(queue.is_queuing())