diff --git a/packages/nodes-base/nodes/Google/Drive/test/v2/node/file/createFromText.test.ts b/packages/nodes-base/nodes/Google/Drive/test/v2/node/file/createFromText.test.ts index 248fe2edbd..8c2370b982 100644 --- a/packages/nodes-base/nodes/Google/Drive/test/v2/node/file/createFromText.test.ts +++ b/packages/nodes-base/nodes/Google/Drive/test/v2/node/file/createFromText.test.ts @@ -61,9 +61,14 @@ describe('test GoogleDriveV2: file createFromText', () => { 'POST', '/upload/drive/v3/files', expect.anything(), // Buffer of content goes here - { uploadType: 'media' }, + { uploadType: 'multipart', supportsAllDrives: true }, undefined, - { headers: { 'Content-Length': 12, 'Content-Type': 'text/plain' } }, + { + headers: { + 'Content-Length': 503, + 'Content-Type': expect.stringMatching(/^multipart\/related; boundary=(\\S)*/), + }, + }, ); expect(transport.googleApiRequest).toHaveBeenCalledWith( 'PATCH', diff --git a/packages/nodes-base/nodes/Google/Drive/test/v2/node/file/upload.test.ts b/packages/nodes-base/nodes/Google/Drive/test/v2/node/file/upload.test.ts index a24f9990fa..78d4c94a04 100644 --- a/packages/nodes-base/nodes/Google/Drive/test/v2/node/file/upload.test.ts +++ b/packages/nodes-base/nodes/Google/Drive/test/v2/node/file/upload.test.ts @@ -5,6 +5,11 @@ import * as utils from '../../../../v2/helpers/utils'; import * as transport from '../../../../v2/transport'; import { createMockExecuteFunction, createTestStream, driveNode } from '../helpers'; +const fileContent = Buffer.from('Hello Drive!'); +const originalFilename = 'original.txt'; +const contentLength = 123; +const mimeType = 'text/plain'; + jest.mock('../../../../v2/transport', () => { const originalModule = jest.requireActual('../../../../v2/transport'); return { @@ -26,10 +31,10 @@ jest.mock('../../../../v2/helpers/utils', () => { ...originalModule, getItemBinaryData: jest.fn(async function () { return { - contentLength: '123', - fileContent: Buffer.from('Hello Drive!'), - originalFilename: 'original.txt', - mimeType: 'text/plain', + contentLength, + fileContent, + originalFilename, + mimeType, }; }), }; @@ -41,11 +46,13 @@ describe('test GoogleDriveV2: file upload', () => { }); it('should upload buffers', async () => { + const name = 'newFile.txt'; + const parent = 'folderIDxxxxxx'; const nodeParameters = { - name: 'newFile.txt', + name, folderId: { __rl: true, - value: 'folderIDxxxxxx', + value: parent, mode: 'list', cachedResultName: 'testFolder 3', cachedResultUrl: 'https://drive.google.com/drive/folders/folderIDxxxxxx', @@ -65,16 +72,21 @@ describe('test GoogleDriveV2: file upload', () => { 'POST', '/upload/drive/v3/files', expect.any(Buffer), - { uploadType: 'media' }, + { uploadType: 'multipart', supportsAllDrives: true }, undefined, - { headers: { 'Content-Length': '123', 'Content-Type': 'text/plain' } }, + { + headers: { + 'Content-Length': 498, + 'Content-Type': expect.stringMatching(/^multipart\/related; boundary=(\\S)*/), + }, + }, ); expect(transport.googleApiRequest).toHaveBeenCalledWith( 'PATCH', '/drive/v3/files/undefined', - { mimeType: 'text/plain', name: 'newFile.txt', originalFilename: 'original.txt' }, + { mimeType, name, originalFilename }, { - addParents: 'folderIDxxxxxx', + addParents: parent, supportsAllDrives: true, corpora: 'allDrives', includeItemsFromAllDrives: true, @@ -87,11 +99,15 @@ describe('test GoogleDriveV2: file upload', () => { }); it('should stream large files in 2MB chunks', async () => { + const name = 'newFile.jpg'; + const parent = 'folderIDxxxxxx'; + const originalFilename = 'test.jpg'; + const mimeType = 'image/jpg'; const nodeParameters = { - name: 'newFile.jpg', + name, folderId: { __rl: true, - value: 'folderIDxxxxxx', + value: parent, mode: 'list', cachedResultName: 'testFolder 3', cachedResultUrl: 'https://drive.google.com/drive/folders/folderIDxxxxxx', @@ -106,8 +122,8 @@ describe('test GoogleDriveV2: file upload', () => { const fileSize = 7 * 1024 * 1024; // 7MB jest.mocked(utils.getItemBinaryData).mockResolvedValue({ - mimeType: 'image/jpg', - originalFilename: 'test.jpg', + mimeType, + originalFilename, contentLength: fileSize, fileContent: createTestStream(fileSize), }); @@ -123,17 +139,17 @@ describe('test GoogleDriveV2: file upload', () => { expect(transport.googleApiRequest).toHaveBeenCalledWith( 'POST', '/upload/drive/v3/files', - undefined, - { uploadType: 'resumable' }, + { name, parents: [parent] }, + { uploadType: 'resumable', supportsAllDrives: true }, undefined, { returnFullResponse: true, headers: { 'X-Upload-Content-Type': 'image/jpg' } }, ); expect(transport.googleApiRequest).toHaveBeenCalledWith( 'PATCH', '/drive/v3/files/undefined', - { mimeType: 'image/jpg', name: 'newFile.jpg', originalFilename: 'test.jpg' }, + { mimeType, name, originalFilename }, { - addParents: 'folderIDxxxxxx', + addParents: parent, supportsAllDrives: true, corpora: 'allDrives', includeItemsFromAllDrives: true, diff --git a/packages/nodes-base/nodes/Google/Drive/v2/actions/file/createFromText.operation.ts b/packages/nodes-base/nodes/Google/Drive/v2/actions/file/createFromText.operation.ts index e89233fcaf..8be30fa33f 100644 --- a/packages/nodes-base/nodes/Google/Drive/v2/actions/file/createFromText.operation.ts +++ b/packages/nodes-base/nodes/Google/Drive/v2/actions/file/createFromText.operation.ts @@ -12,6 +12,8 @@ import { setFileProperties, setParentFolder, setUpdateCommonParams } from '../.. import { googleApiRequest } from '../../transport'; import { driveRLC, folderRLC, updateCommonOptions } from '../common.descriptions'; +import FormData from 'form-data'; + const properties: INodeProperties[] = [ { displayName: 'File Content', @@ -88,14 +90,13 @@ export async function execute(this: IExecuteFunctions, i: number): Promise