Exemplo n.º 1
0
    def testConvertFileToBuildItem_withFileObject(self):
        """Test _ConvertFileToBuildItem with a file object."""
        provider = google_drive.GoogleDriveBuildProvider()

        file_item = {
            u'mimeType': u'application/vnd.google-apps.document',
            u'name': u'sample_file.txt',
            u'modifiedTime': u'2018-07-23T05:24:23.624Z'
        }
        path = 'folderA/sample_folder/sample_file.txt'
        build_item = provider._ConvertFileToBuildItem(file_item, path)
        self.assertIsNotNone(build_item)
        self.assertEqual(build_item.name, 'sample_file.txt')
        self.assertEqual(build_item.path, path)
        self.assertTrue(build_item.is_file)
        self.assertEqual(build_item.size, 0)
        self.assertIsNotNone(build_item.timestamp)
Exemplo n.º 2
0
    def testConvertFileToBuildItem_withFolderObject(self):
        """test _ConvertFileToBuildItem with a folder object."""
        provider = google_drive.GoogleDriveBuildProvider()

        file_item = {
            u'mimeType': u'application/vnd.google-apps.folder',
            u'name': u'sample_folder',
            u'modifiedTime': u'2018-06-25T18:24:52.049Z'
        }
        path = 'folderA/sample_folder/'
        build_item = provider._ConvertFileToBuildItem(file_item, path)
        self.assertIsNotNone(build_item)
        self.assertEqual(build_item.name, 'sample_folder/')
        self.assertEqual(build_item.path, path)
        self.assertFalse(build_item.is_file)
        self.assertEqual(build_item.size, 0)
        self.assertIsNone(build_item.timestamp)
Exemplo n.º 3
0
    def testGetFileItem(self):
        """Test GetFileItem."""
        provider = google_drive.GoogleDriveBuildProvider()
        response = {
            u'mimeType': u'application/vnd.google-apps.folder',
            u'name': u'sample_folder',
            u'modifiedTime': u'2018-06-25T18:24:52.049Z'
        }

        mock_api_client = mock.MagicMock()
        mock_api_client.files().get().execute.return_value = response
        provider._client = mock_api_client

        file_item = provider._GetFileItem(file_id='sample_folder_id')
        self.assertIsNotNone(file_item)
        self.assertEqual(file_item['mimeType'], google_drive._FOLDER_TYPE)
        self.assertEqual(file_item['name'], 'sample_folder')
Exemplo n.º 4
0
 def testGetBuildItem_withPathToFile(self, mock_get_object_id,
                                     mock_get_file_item):
     """Test GetBuildItem with path to file."""
     provider = google_drive.GoogleDriveBuildProvider()
     mock_get_object_id.return_value = 'valid_id'
     response = {
         u'mimeType': u'application/vnd.google-apps.folder',
         u'name': u'sample_folder',
         u'modifiedTime': u'2018-06-25T18:24:52.049Z'
     }
     mock_get_file_item.return_value = response
     build_item = provider.GetBuildItem('folderA/folderB/sample_folder')
     self.assertIsNotNone(build_item)
     self.assertEqual(build_item.name, 'sample_folder/')
     self.assertEqual(build_item.path, 'folderA/folderB/sample_folder')
     self.assertFalse(build_item.is_file)
     self.assertEqual(build_item.size, 0)
     self.assertIsNone(build_item.timestamp)
Exemplo n.º 5
0
 def testListBuildItems(self, mock_get_object_id, mock_get_file_ids,
                        mock_get_file_item):
     """Test ListBuildItems."""
     provider = google_drive.GoogleDriveBuildProvider()
     mock_get_object_id.return_value = 'valid_id'
     mock_get_file_ids.return_value = (['id_1', 'id_2'], None)
     response = {
         u'mimeType': u'application/vnd.google-apps.folder',
         u'name': u'sample_folder',
         u'modifiedTime': u'2018-06-25T18:24:52.049Z'
     }
     mock_get_file_item.return_value = response
     build_items, next_page_token = provider.ListBuildItems(path='',
                                                            page_token=None)
     self.assertIsNotNone(build_items)
     self.assertEqual(len(build_items), 2)
     self.assertIsNone(next_page_token)
     self.assertEqual(build_items[0].name, 'sample_folder/')
     self.assertEqual(build_items[0].path, 'sample_folder')
     self.assertFalse(build_items[0].is_file)
     self.assertEqual(build_items[0].size, 0)
     self.assertIsNone(build_items[0].timestamp)
Exemplo n.º 6
0
    def testDownloadFile(self, mock_next_chunk, mock_build_item, mock_file_id):
        """Test downloading a file with multiple chunks."""
        provider = google_drive.GoogleDriveBuildProvider()
        provider._client = mock.MagicMock()
        path = 'fake/path/kitten.png'
        mock_build_item.return_value = base.BuildItem(
            name='fake/path/kitten.png',
            path='fake/path/kitten.png',
            is_file=True,
            size=0,
            timestamp=None)
        mock_file_id.return_value = 'file_id'

        # Mock downloader that processes two chunks of data
        mock_progress = iter([
            (b'hello', mock.MagicMock(resumable_progress=5,
                                      total_size=10), False),
            (b'world', mock.MagicMock(resumable_progress=10,
                                      total_size=10), True),
        ])

        def _next_chunk(self, **_):
            value, status, done = next(mock_progress)
            self._fd.write(value)
            return status, done

        mock_next_chunk.side_effect = _next_chunk

        result = list(provider.DownloadFile(path))
        mock_file_id.assert_called_with('fake/path/kitten.png')
        provider._client.files().get_media.assert_called_with(fileId='file_id')
        expected = [
            file_util.FileChunk(data=b'hello', offset=5, total_size=10),
            file_util.FileChunk(data=b'world', offset=10, total_size=10)
        ]
        self.assertEqual(expected, result)
Exemplo n.º 7
0
 def testGetFileId_withEmptyPath(self):
     """Test _GetFileId from path with empty path."""
     provider = google_drive.GoogleDriveBuildProvider()
     folder_id = provider._GetFileId('')
     self.assertEqual(folder_id, 'root')