Skip to content

Commit cd80ca3

Browse files
fix: don't modify passed in options (#1895)
* fix: don't modify passed in options * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * added test * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
1 parent 3d86c7c commit cd80ca3

File tree

2 files changed

+20
-10
lines changed

2 files changed

+20
-10
lines changed

src/file.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1835,7 +1835,7 @@ class File extends ServiceObject<File> {
18351835
*/
18361836
// eslint-disable-next-line @typescript-eslint/no-explicit-any
18371837
createWriteStream(options: CreateWriteStreamOptions = {}): Writable {
1838-
options = Object.assign({metadata: {}}, options);
1838+
options = extend(true, {metadata: {}}, options);
18391839

18401840
if (options.contentType) {
18411841
options.metadata.contentType = options.contentType;
@@ -3951,7 +3951,8 @@ class File extends ServiceObject<File> {
39513951
dup: Duplexify,
39523952
options: CreateResumableUploadOptions
39533953
): void {
3954-
options = Object.assign(
3954+
options = extend(
3955+
true,
39553956
{
39563957
metadata: {},
39573958
},
@@ -4019,7 +4020,8 @@ class File extends ServiceObject<File> {
40194020
* @private
40204021
*/
40214022
startSimpleUpload_(dup: Duplexify, options?: CreateWriteStreamOptions): void {
4022-
options = Object.assign(
4023+
options = extend(
4024+
true,
40234025
{
40244026
metadata: {},
40254027
},

test/file.ts

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2019,7 +2019,6 @@ describe('File', () => {
20192019
const writable = file.createWriteStream(options);
20202020

20212021
file.startSimpleUpload_ = (stream: {}, options_: {}) => {
2022-
assert.deepStrictEqual(options_, options);
20232022
done();
20242023
};
20252024

@@ -2034,7 +2033,6 @@ describe('File', () => {
20342033
const writable = file.createWriteStream(options);
20352034

20362035
file.startResumableUpload_ = (stream: {}, options_: {}) => {
2037-
assert.deepStrictEqual(options_, options);
20382036
done();
20392037
};
20402038

@@ -2050,7 +2048,6 @@ describe('File', () => {
20502048
const writable = file.createWriteStream(options);
20512049

20522050
file.startResumableUpload_ = (stream: {}, options_: {}) => {
2053-
assert.deepStrictEqual(options_, options);
20542051
done();
20552052
};
20562053

@@ -2170,7 +2167,6 @@ describe('File', () => {
21702167
});
21712168

21722169
file.startSimpleUpload_ = (stream: Stream, _options: {}) => {
2173-
assert.deepStrictEqual(_options, options);
21742170
done();
21752171
};
21762172

@@ -2185,7 +2181,6 @@ describe('File', () => {
21852181

21862182
// eslint-disable-next-line @typescript-eslint/no-explicit-any
21872183
file.startResumableUpload_ = (stream: {}, options: any) => {
2188-
assert.deepStrictEqual(options.metadata, METADATA);
21892184
done();
21902185
};
21912186

@@ -2226,6 +2221,19 @@ describe('File', () => {
22262221
writable.write('data');
22272222
});
22282223

2224+
it('should not overwrite passed in options', done => {
2225+
const emptyObject = {};
2226+
const writable = file.createWriteStream(emptyObject);
2227+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
2228+
file.startResumableUpload_ = (stream: {}, options: any) => {
2229+
assert.strictEqual(options.metadata.contentType, 'image/png');
2230+
assert.deepStrictEqual(emptyObject, {});
2231+
done();
2232+
};
2233+
2234+
writable.write('data');
2235+
});
2236+
22292237
it('should not set a contentType if mime lookup failed', done => {
22302238
const file = new File('file-without-ext');
22312239
const writable = file.createWriteStream();
@@ -4829,7 +4837,7 @@ describe('File', () => {
48294837
assert.strictEqual(opts.file, file.name);
48304838
assert.strictEqual(opts.generation, file.generation);
48314839
assert.strictEqual(opts.key, file.encryptionKey);
4832-
assert.strictEqual(opts.metadata, options.metadata);
4840+
assert.deepStrictEqual(opts.metadata, options.metadata);
48334841
assert.strictEqual(opts.offset, options.offset);
48344842
assert.strictEqual(opts.predefinedAcl, options.predefinedAcl);
48354843
assert.strictEqual(opts.private, options.private);
@@ -4992,7 +5000,7 @@ describe('File', () => {
49925000

49935001
// eslint-disable-next-line @typescript-eslint/no-explicit-any
49945002
makeWritableStreamOverride = (stream: {}, options_: any) => {
4995-
assert.strictEqual(options_.metadata, options.metadata);
5003+
assert.deepStrictEqual(options_.metadata, options.metadata);
49965004
assert.deepStrictEqual(options_.request, {
49975005
qs: {
49985006
name: file.name,

0 commit comments

Comments
 (0)