Skip to content

Commit 68f26d4

Browse files
tests: convert storage to mockery
1 parent 927c263 commit 68f26d4

2 files changed

Lines changed: 70 additions & 46 deletions

File tree

test/storage/bucket.js

Lines changed: 40 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,14 @@
1414
* limitations under the License.
1515
*/
1616

17-
/*global describe, it, beforeEach */
17+
/*global describe, it, beforeEach, before, after */
1818

1919
'use strict';
2020

2121
var assert = require('assert');
22-
var duplexify = require('duplexify');
22+
var mockery = require('mockery');
2323
var request = require('request');
24+
var Stream = require('stream');
2425
var util = require('../../lib/common/util.js');
2526

2627
function FakeFile(bucket, name, metadata) {
@@ -29,33 +30,24 @@ function FakeFile(bucket, name, metadata) {
2930
this.metadata = metadata;
3031
this.createWriteStream = function(options) {
3132
this.metadata = options.metadata;
32-
var dup = duplexify();
33-
dup._write = function() {
34-
dup.emit('complete');
33+
var ws = new Stream.Writable();
34+
ws.write = function() {
35+
ws.emit('complete');
3536
};
36-
return dup;
37+
return ws;
3738
};
3839
}
3940

40-
var Bucket = require('sandboxed-module')
41-
.require('../../lib/storage/bucket.js', {
42-
requires: {
43-
'./file.js': FakeFile,
44-
request: fakeRequest
45-
}
46-
});
47-
4841
var request_Cached = request;
4942
var request_Override;
5043

5144
function fakeRequest() {
5245
var args = [].slice.apply(arguments);
53-
var results = (request_Override || request_Cached).apply(null, args);
54-
request_Override = null;
55-
return results;
46+
return (request_Override || request_Cached).apply(null, args);
5647
}
5748

5849
describe('Bucket', function() {
50+
var Bucket;
5951
var BUCKET_NAME = 'test-bucket';
6052
var bucket;
6153
var options = {
@@ -64,7 +56,23 @@ describe('Bucket', function() {
6456
}
6557
};
6658

59+
before(function() {
60+
mockery.registerMock('./file.js', FakeFile);
61+
mockery.registerMock('request', fakeRequest);
62+
mockery.enable({
63+
useCleanCache: true,
64+
warnOnUnregistered: false
65+
});
66+
Bucket = require('../../lib/storage/bucket.js');
67+
});
68+
69+
after(function() {
70+
mockery.deregisterAll();
71+
mockery.disable();
72+
});
73+
6774
beforeEach(function() {
75+
request_Override = null;
6876
bucket = new Bucket(options, BUCKET_NAME);
6977
});
7078

@@ -351,13 +359,14 @@ describe('Bucket', function() {
351359
var fakeFile = new FakeFile(bucket, 'file-name');
352360
var options = { destination: fakeFile };
353361
fakeFile.createWriteStream = function(options) {
354-
var dup = duplexify();
362+
var ws = new Stream.Writable();
363+
ws.write = util.noop;
355364
setImmediate(function() {
356365
var expectedContentType = 'application/json; charset=utf-8';
357366
assert.equal(options.metadata.contentType, expectedContentType);
358367
done();
359368
});
360-
return dup;
369+
return ws;
361370
};
362371
bucket.upload(filepath, options, assert.ifError);
363372
});
@@ -366,13 +375,14 @@ describe('Bucket', function() {
366375
var fakeFile = new FakeFile(bucket, 'file-name');
367376
var options = { destination: fakeFile };
368377
fakeFile.createWriteStream = function(options) {
369-
var dup = duplexify();
378+
var ws = new Stream.Writable();
379+
ws.write = util.noop;
370380
setImmediate(function() {
371381
var expectedContentType = 'text/plain; charset=utf-8';
372382
assert.equal(options.metadata.contentType, expectedContentType);
373383
done();
374384
});
375-
return dup;
385+
return ws;
376386
};
377387
bucket.upload(textFilepath, options, assert.ifError);
378388
});
@@ -382,12 +392,13 @@ describe('Bucket', function() {
382392
var metadata = { contentType: 'made-up-content-type' };
383393
var options = { destination: fakeFile, metadata: metadata };
384394
fakeFile.createWriteStream = function(options) {
385-
var dup = duplexify();
395+
var ws = new Stream.Writable();
396+
ws.write = util.noop;
386397
setImmediate(function() {
387398
assert.equal(options.metadata.contentType, metadata.contentType);
388399
done();
389400
});
390-
return dup;
401+
return ws;
391402
};
392403
bucket.upload(filepath, options, assert.ifError);
393404
});
@@ -396,12 +407,13 @@ describe('Bucket', function() {
396407
var fakeFile = new FakeFile(bucket, 'file-name');
397408
var options = { destination: fakeFile, resumable: false };
398409
fakeFile.createWriteStream = function(options) {
399-
var dup = duplexify();
410+
var ws = new Stream.Writable();
411+
ws.write = util.noop;
400412
setImmediate(function() {
401413
assert.strictEqual(options.resumable, false);
402414
done();
403415
});
404-
return dup;
416+
return ws;
405417
};
406418
bucket.upload(filepath, options, assert.ifError);
407419
});
@@ -411,11 +423,11 @@ describe('Bucket', function() {
411423
var fakeFile = new FakeFile(bucket, 'file-name');
412424
var options = { destination: fakeFile };
413425
fakeFile.createWriteStream = function() {
414-
var dup = duplexify();
426+
var ws = new Stream.Writable();
415427
setImmediate(function() {
416-
dup.emit('error', error);
428+
ws.emit('error', error);
417429
});
418-
return dup;
430+
return ws;
419431
};
420432
bucket.upload(filepath, options, function(err) {
421433
assert.equal(err, error);

test/storage/file.js

Lines changed: 30 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
/*global describe, it, beforeEach */
17+
/*global describe, it, beforeEach, before, after */
1818

1919
'use strict';
2020

@@ -24,6 +24,7 @@ var crc = require('fast-crc32c');
2424
var crypto = require('crypto');
2525
var duplexify = require('duplexify');
2626
var extend = require('extend');
27+
var mockery = require('mockery');
2728
var nodeutil = require('util');
2829
var request = require('request');
2930
var stream = require('stream');
@@ -37,22 +38,23 @@ function FakeDuplexify() {
3738
if (!(this instanceof FakeDuplexify)) {
3839
return new FakeDuplexify();
3940
}
40-
duplexify.call(this);
41+
stream.Duplex.call(this);
42+
this._read = util.noop;
43+
this._write = util.noop;
4144
this.setReadable = function(setReadableStream) {
4245
readableStream = setReadableStream;
4346
};
4447
this.setWritable = function(setWritableStream) {
4548
writableStream = setWritableStream;
4649
};
4750
}
48-
nodeutil.inherits(FakeDuplexify, duplexify);
51+
nodeutil.inherits(FakeDuplexify, stream.Duplex);
4952

5053
var makeWritableStream_Override;
5154
var fakeUtil = extend({}, util, {
5255
makeWritableStream: function() {
5356
var args = [].slice.call(arguments);
5457
(makeWritableStream_Override || util.makeWritableStream).apply(null, args);
55-
makeWritableStream_Override = null;
5658
}
5759
});
5860

@@ -62,7 +64,6 @@ var request_Override;
6264
function fakeRequest() {
6365
var args = [].slice.apply(arguments);
6466
var results = (request_Override || request_Cached).apply(null, args);
65-
request_Override = null;
6667
return results;
6768
}
6869

@@ -81,17 +82,8 @@ function FakeConfigStore() {
8182
};
8283
}
8384

84-
var File = require('sandboxed-module')
85-
.require('../../lib/storage/file.js', {
86-
requires: {
87-
configstore: FakeConfigStore,
88-
duplexify: FakeDuplexify,
89-
request: fakeRequest,
90-
'../common/util': fakeUtil
91-
}
92-
});
93-
9485
describe('File', function() {
86+
var File;
9587
var FILE_NAME = 'file-name.png';
9688
var options = {
9789
makeAuthorizedRequest_: function(req, callback) {
@@ -102,7 +94,27 @@ describe('File', function() {
10294
var file;
10395
var directoryFile;
10496

97+
before(function() {
98+
mockery.registerMock('configstore', FakeConfigStore);
99+
mockery.registerMock('duplexify', FakeDuplexify);
100+
mockery.registerMock('request', fakeRequest);
101+
mockery.registerMock('../common/util.js', fakeUtil);
102+
mockery.enable({
103+
useCleanCache: true,
104+
warnOnUnregistered: false
105+
});
106+
File = require('../../lib/storage/file.js');
107+
});
108+
109+
after(function() {
110+
mockery.deregisterAll();
111+
mockery.disable();
112+
});
113+
105114
beforeEach(function() {
115+
makeWritableStream_Override = null;
116+
request_Override = null;
117+
106118
file = new File(bucket, FILE_NAME);
107119
file.makeReq_ = util.noop;
108120

@@ -1009,17 +1021,17 @@ describe('File', function() {
10091021
callback(metadata);
10101022
};
10111023

1012-
var stream = duplexify();
1024+
var ws = new stream.Writable();
10131025

1014-
stream
1026+
ws
10151027
.on('error', done)
10161028
.on('complete', function(meta) {
10171029
assert.deepEqual(meta, metadata);
10181030
assert.deepEqual(file.metadata, metadata);
10191031
done();
10201032
});
10211033

1022-
file.startSimpleUpload_(stream, metadata);
1034+
file.startSimpleUpload_(ws, metadata);
10231035
});
10241036
});
10251037
});

0 commit comments

Comments
 (0)