diff --git a/src/bucket.ts b/src/bucket.ts index 9139ce89e..b8203c510 100644 --- a/src/bucket.ts +++ b/src/bucket.ts @@ -2816,6 +2816,13 @@ class Bucket extends ServiceObject { callback = queryOrCallback as GetFilesCallback; } query = Object.assign({}, query); + if ( + query.fields && + query.autoPaginate && + !query.fields.includes('nextPageToken') + ) { + query.fields = `${query.fields},nextPageToken`; + } this.request( { diff --git a/test/bucket.ts b/test/bucket.ts index 475ef35ed..5e0255e26 100644 --- a/test/bucket.ts +++ b/test/bucket.ts @@ -1887,6 +1887,29 @@ describe('Bucket', () => { ); }); + it('should add nextPageToken to fields for autoPaginate', done => { + bucket.request = ( + reqOpts: DecorateRequestOptions, + callback: Function + ) => { + assert.strictEqual(reqOpts.qs.fields, 'items(name),nextPageToken'); + callback(null, { + items: [{name: 'fake-file-name'}], + nextPageToken: 'fake-page-token', + }); + }; + + bucket.getFiles( + {fields: 'items(name)', autoPaginate: true}, + (err: Error, files: FakeFile[], nextQuery: {pageToken: string}) => { + assert.ifError(err); + assert.strictEqual(files[0].name, 'fake-file-name'); + assert.strictEqual(nextQuery.pageToken, 'fake-page-token'); + done(); + } + ); + }); + it('should return soft-deleted Files if queried for softDeleted', done => { const softDeletedTime = new Date('1/1/2024').toISOString(); bucket.request = (