Fix a bunch of ESLint and HTMLLint errors
This commit is contained in:
parent
99d7196799
commit
74c41897ad
11 changed files with 669 additions and 806 deletions
21
test/.eslintrc.yml
Normal file
21
test/.eslintrc.yml
Normal file
|
@ -0,0 +1,21 @@
|
|||
env:
|
||||
mocha: true
|
||||
|
||||
extends:
|
||||
- plugin:mocha/recommended
|
||||
|
||||
plugins:
|
||||
- mocha
|
||||
- node
|
||||
|
||||
rules:
|
||||
node/no-unpublished-require: off
|
||||
|
||||
mocha/handle-done-callback: error
|
||||
mocha/no-exclusive-tests: error
|
||||
mocha/no-identical-title: warn
|
||||
mocha/no-mocha-arrows: error
|
||||
mocha/no-nested-tests: error
|
||||
mocha/no-pending-tests: error
|
||||
mocha/no-return-and-callback: warn
|
||||
mocha/no-skipped-tests: error
|
|
@ -6,12 +6,12 @@ const crypto = require('crypto');
|
|||
const conf = require('../server/config.js');
|
||||
conf.notLocalHost = true;
|
||||
|
||||
let redisStub = {};
|
||||
let exists = sinon.stub();
|
||||
let hget = sinon.stub();
|
||||
let hmset = sinon.stub();
|
||||
let expire = sinon.spy();
|
||||
let del = sinon.stub();
|
||||
const redisStub = {};
|
||||
const exists = sinon.stub();
|
||||
const hget = sinon.stub();
|
||||
const hmset = sinon.stub();
|
||||
const expire = sinon.spy();
|
||||
const del = sinon.stub();
|
||||
|
||||
redisStub.createClient = function() {
|
||||
return {
|
||||
|
@ -21,145 +21,156 @@ redisStub.createClient = function() {
|
|||
hmset: hmset,
|
||||
expire: expire,
|
||||
del: del
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
let fsStub = {};
|
||||
const fsStub = {};
|
||||
fsStub.statSync = sinon.stub();
|
||||
fsStub.createReadStream = sinon.stub();
|
||||
fsStub.createWriteStream = sinon.stub();
|
||||
fsStub.unlinkSync = sinon.stub();
|
||||
|
||||
let logStub = {};
|
||||
const logStub = {};
|
||||
logStub.info = sinon.stub();
|
||||
logStub.error = sinon.stub();
|
||||
|
||||
let s3Stub = {};
|
||||
const s3Stub = {};
|
||||
s3Stub.headObject = sinon.stub();
|
||||
s3Stub.getObject = sinon.stub();
|
||||
s3Stub.upload = sinon.stub();
|
||||
s3Stub.deleteObject = sinon.stub();
|
||||
|
||||
let awsStub = {
|
||||
S3: function() {
|
||||
return s3Stub;
|
||||
}
|
||||
}
|
||||
const awsStub = {
|
||||
S3: function() {
|
||||
return s3Stub;
|
||||
}
|
||||
};
|
||||
|
||||
const storage = proxyquire('../server/storage', {
|
||||
'redis': redisStub,
|
||||
'fs': fsStub,
|
||||
'./log.js': function() { return logStub },
|
||||
redis: redisStub,
|
||||
fs: fsStub,
|
||||
'./log.js': function() {
|
||||
return logStub;
|
||||
},
|
||||
'aws-sdk': awsStub
|
||||
});
|
||||
|
||||
describe('Testing Length using aws', function() {
|
||||
it('Filesize returns properly if id exists', function() {
|
||||
s3Stub.headObject.callsArgWith(1, null, {ContentLength: 1});
|
||||
return storage.length('123')
|
||||
.then(reply => assert.equal(reply, 1))
|
||||
.catch(err => assert.fail())
|
||||
})
|
||||
s3Stub.headObject.callsArgWith(1, null, { ContentLength: 1 });
|
||||
return storage
|
||||
.length('123')
|
||||
.then(reply => assert.equal(reply, 1))
|
||||
.catch(err => assert.fail());
|
||||
});
|
||||
|
||||
it('Filesize fails if the id does not exist', function() {
|
||||
s3Stub.headObject.callsArgWith(1, new Error(), null);
|
||||
return storage.length('123')
|
||||
.then(reply => assert.fail())
|
||||
.catch(err => assert(1))
|
||||
})
|
||||
return storage
|
||||
.length('123')
|
||||
.then(_reply => assert.fail())
|
||||
.catch(err => assert(1));
|
||||
});
|
||||
});
|
||||
|
||||
describe('Testing Get using aws', function() {
|
||||
|
||||
it('Should not error out when the file exists', function() {
|
||||
let spy = sinon.spy();
|
||||
const spy = sinon.spy();
|
||||
s3Stub.getObject.returns({
|
||||
createReadStream: spy
|
||||
});
|
||||
|
||||
storage.get('123');
|
||||
assert(spy.calledOnce);
|
||||
})
|
||||
});
|
||||
|
||||
it('Should error when the file does not exist', function() {
|
||||
let err = function() { throw new Error(); }
|
||||
let spy = sinon.spy(err);
|
||||
const err = function() {
|
||||
throw new Error();
|
||||
};
|
||||
const spy = sinon.spy(err);
|
||||
s3Stub.getObject.returns({
|
||||
createReadStream: spy
|
||||
});
|
||||
|
||||
assert.equal(storage.get('123'), null);
|
||||
assert(spy.threw());
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
describe('Testing Set using aws', function() {
|
||||
beforeEach(function() {
|
||||
expire.reset();
|
||||
})
|
||||
});
|
||||
|
||||
after(function() {
|
||||
crypto.randomBytes.restore();
|
||||
})
|
||||
});
|
||||
|
||||
it('Should pass when the file is successfully uploaded and no bitly key', function() {
|
||||
conf.bitly_key = null;
|
||||
const buf = new Buffer(10);
|
||||
const buf = Buffer.alloc(10);
|
||||
sinon.stub(crypto, 'randomBytes').returns(buf);
|
||||
s3Stub.upload.callsArgWith(1, null, {});
|
||||
return storage.set('123', {}, 'Filename.moz', 'url.com')
|
||||
.then(reply => {
|
||||
assert.equal(reply.uuid, buf.toString('hex'));
|
||||
assert.equal(reply.url, 'url.com');
|
||||
assert.notEqual(reply.uuid, null);
|
||||
assert(expire.calledOnce);
|
||||
assert(expire.calledWith('123', 86400000));
|
||||
})
|
||||
.catch(err => assert.fail());
|
||||
})
|
||||
return storage
|
||||
.set('123', {}, 'Filename.moz', 'url.com')
|
||||
.then(reply => {
|
||||
assert.equal(reply.uuid, buf.toString('hex'));
|
||||
assert.equal(reply.url, 'url.com');
|
||||
assert.notEqual(reply.uuid, null);
|
||||
assert(expire.calledOnce);
|
||||
assert(expire.calledWith('123', 86400000));
|
||||
})
|
||||
.catch(err => assert.fail());
|
||||
});
|
||||
|
||||
it('Should fail if there was an error during uploading', function() {
|
||||
s3Stub.upload.callsArgWith(1, new Error(), null);
|
||||
return storage.set('123', {}, 'Filename.moz', 'url.com')
|
||||
.then(reply => assert.fail())
|
||||
.catch(err => assert(1));
|
||||
})
|
||||
return storage
|
||||
.set('123', {}, 'Filename.moz', 'url.com')
|
||||
.then(_reply => assert.fail())
|
||||
.catch(err => assert(1));
|
||||
});
|
||||
});
|
||||
|
||||
describe('Testing Delete from aws', function() {
|
||||
it('Returns successfully if the id is deleted off aws', function() {
|
||||
hget.callsArgWith(2, null, 'delete_token');
|
||||
s3Stub.deleteObject.callsArgWith(1, null, {});
|
||||
return storage.delete('file_id', 'delete_token')
|
||||
.then(reply => assert(1), err => assert.fail())
|
||||
})
|
||||
return storage
|
||||
.delete('file_id', 'delete_token')
|
||||
.then(_reply => assert(1), err => assert.fail());
|
||||
});
|
||||
|
||||
it('Delete fails if id exists locally but does not in aws', function() {
|
||||
hget.callsArgWith(2, null, 'delete_token');
|
||||
s3Stub.deleteObject.callsArgWith(1, new Error(), {});
|
||||
return storage.delete('file_id', 'delete_token')
|
||||
.then(reply => assert.fail(), err => assert(1))
|
||||
})
|
||||
return storage
|
||||
.delete('file_id', 'delete_token')
|
||||
.then(_reply => assert.fail(), err => assert(1));
|
||||
});
|
||||
|
||||
it('Delete fails if the delete token does not match', function() {
|
||||
hget.callsArgWith(2, null, {});
|
||||
return storage.delete('Filename.moz', 'delete_token')
|
||||
.then(reply => assert.fail())
|
||||
.catch(reply => assert(1))
|
||||
})
|
||||
return storage
|
||||
.delete('Filename.moz', 'delete_token')
|
||||
.then(_reply => assert.fail())
|
||||
.catch(err => assert(1));
|
||||
});
|
||||
});
|
||||
|
||||
describe('Testing Forced Delete from aws', function() {
|
||||
it('Deletes properly if id exists', function() {
|
||||
s3Stub.deleteObject.callsArgWith(1, null, {});
|
||||
return storage.forceDelete('file_id', 'delete_token')
|
||||
.then(reply => assert(1), err => assert.fail());
|
||||
})
|
||||
return storage
|
||||
.forceDelete('file_id', 'delete_token')
|
||||
.then(_reply => assert(1), err => assert.fail());
|
||||
});
|
||||
|
||||
it('Deletes fails if id does not exist', function() {
|
||||
s3Stub.deleteObject.callsArgWith(1, new Error(), {});
|
||||
return storage.forceDelete('file_id')
|
||||
.then(reply => assert.fail(), err => assert(1))
|
||||
})
|
||||
|
||||
})
|
||||
return storage
|
||||
.forceDelete('file_id')
|
||||
.then(_reply => assert.fail(), err => assert(1));
|
||||
});
|
||||
});
|
||||
|
|
|
@ -2,15 +2,15 @@ const assert = require('assert');
|
|||
const sinon = require('sinon');
|
||||
const proxyquire = require('proxyquire');
|
||||
|
||||
const conf = require('../server/config.js')
|
||||
const conf = require('../server/config.js');
|
||||
conf.notLocalHost = false;
|
||||
|
||||
let redisStub = {};
|
||||
let exists = sinon.stub();
|
||||
let hget = sinon.stub();
|
||||
let hmset = sinon.stub();
|
||||
let expire = sinon.stub();
|
||||
let del = sinon.stub();
|
||||
const redisStub = {};
|
||||
const exists = sinon.stub();
|
||||
const hget = sinon.stub();
|
||||
const hmset = sinon.stub();
|
||||
const expire = sinon.stub();
|
||||
const del = sinon.stub();
|
||||
|
||||
redisStub.createClient = function() {
|
||||
return {
|
||||
|
@ -20,80 +20,84 @@ redisStub.createClient = function() {
|
|||
hmset: hmset,
|
||||
expire: expire,
|
||||
del: del
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
let fsStub = {};
|
||||
const fsStub = {};
|
||||
fsStub.statSync = sinon.stub();
|
||||
fsStub.createReadStream = sinon.stub();
|
||||
fsStub.createWriteStream = sinon.stub();
|
||||
fsStub.unlinkSync = sinon.stub();
|
||||
|
||||
let logStub = {};
|
||||
const logStub = {};
|
||||
logStub.info = sinon.stub();
|
||||
logStub.error = sinon.stub();
|
||||
|
||||
const storage = proxyquire('../server/storage', {
|
||||
'redis': redisStub,
|
||||
'fs': fsStub,
|
||||
'./log.js': function() { return logStub }
|
||||
redis: redisStub,
|
||||
fs: fsStub,
|
||||
'./log.js': function() {
|
||||
return logStub;
|
||||
}
|
||||
});
|
||||
|
||||
describe('Testing Exists from local filesystem', function() {
|
||||
it('Exists returns true when file exists', function() {
|
||||
exists.callsArgWith(1, null, 1);
|
||||
return storage.exists('test')
|
||||
.then((reply) => assert(reply));
|
||||
})
|
||||
return storage.exists('test').then(reply => assert(reply));
|
||||
});
|
||||
|
||||
it('Exists returns false when file does not exist', function() {
|
||||
exists.callsArgWith(1, null, 0);
|
||||
return storage.exists('test')
|
||||
.then((reply) => assert(!reply));
|
||||
})
|
||||
return storage.exists('test').then(reply => assert(!reply));
|
||||
});
|
||||
});
|
||||
|
||||
describe('Testing Filename from local filesystem', function() {
|
||||
it('Filename returns properly if id exists', function() {
|
||||
hget.callsArgWith(2, null, 'Filename.moz');
|
||||
return storage.filename('test')
|
||||
.then(reply => assert(1))
|
||||
.catch(reply => assert.fail())
|
||||
})
|
||||
return storage
|
||||
.filename('test')
|
||||
.then(_reply => assert(1))
|
||||
.catch(err => assert.fail());
|
||||
});
|
||||
|
||||
it('Filename fails if id does not exist', function() {
|
||||
hget.callsArgWith(2, null, 'Filename.moz');
|
||||
return storage.filename('test')
|
||||
.then(reply => assert.fail())
|
||||
.catch(reply => assert(1))
|
||||
})
|
||||
})
|
||||
return storage
|
||||
.filename('test')
|
||||
.then(_reply => assert.fail())
|
||||
.catch(err => assert(1));
|
||||
});
|
||||
});
|
||||
|
||||
describe('Testing Length from local filesystem', function() {
|
||||
it('Filesize returns properly if id exists', function() {
|
||||
fsStub.statSync.returns({size: 10});
|
||||
return storage.length('Filename.moz')
|
||||
.then(reply => assert(1))
|
||||
.catch(reply => assert.fail())
|
||||
})
|
||||
fsStub.statSync.returns({ size: 10 });
|
||||
return storage
|
||||
.length('Filename.moz')
|
||||
.then(_reply => assert(1))
|
||||
.catch(err => assert.fail());
|
||||
});
|
||||
|
||||
it('Filesize fails if the id does not exist', function() {
|
||||
fsStub.statSync.returns(null);
|
||||
return storage.length('Filename.moz')
|
||||
.then(reply => assert.fail())
|
||||
.catch(reply => assert(1))
|
||||
})
|
||||
})
|
||||
return storage
|
||||
.length('Filename.moz')
|
||||
.then(_reply => assert.fail())
|
||||
.catch(err => assert(1));
|
||||
});
|
||||
});
|
||||
|
||||
describe('Testing Get from local filesystem', function() {
|
||||
it('Get returns properly if id exists', function() {
|
||||
fsStub.createReadStream.returns(1);
|
||||
if (storage.get('Filename.moz')) {
|
||||
assert(1)
|
||||
assert(1);
|
||||
} else {
|
||||
assert.fail();
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
it('Get fails if the id does not exist', function() {
|
||||
fsStub.createReadStream.returns(null);
|
||||
|
@ -102,71 +106,73 @@ describe('Testing Get from local filesystem', function() {
|
|||
} else {
|
||||
assert(1);
|
||||
}
|
||||
})
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
describe('Testing Set to local filesystem', function() {
|
||||
it('Successfully writes the file to the local filesystem', function() {
|
||||
let stub = sinon.stub();
|
||||
stub.withArgs('close', sinon.match.any).callsArgWithAsync(1)
|
||||
const stub = sinon.stub();
|
||||
stub.withArgs('close', sinon.match.any).callsArgWithAsync(1);
|
||||
stub.withArgs('error', sinon.match.any).returns(1);
|
||||
fsStub.createWriteStream.returns({ on: stub })
|
||||
fsStub.createWriteStream.returns({ on: stub });
|
||||
|
||||
return storage.set('test', { pipe: sinon.stub() }, 'Filename.moz', 'moz.la')
|
||||
.then(reply => {
|
||||
assert(reply.uuid);
|
||||
assert.equal(reply.url, 'moz.la');
|
||||
})
|
||||
.catch(reply => assert.fail())
|
||||
})
|
||||
return storage
|
||||
.set('test', { pipe: sinon.stub() }, 'Filename.moz', 'moz.la')
|
||||
.then(reply => {
|
||||
assert(reply.uuid);
|
||||
assert.equal(reply.url, 'moz.la');
|
||||
})
|
||||
.catch(err => assert.fail());
|
||||
});
|
||||
|
||||
it('Fails when the file is not properly written to the local filesystem', function() {
|
||||
let stub = sinon.stub();
|
||||
stub.withArgs('error', sinon.match.any).callsArgWithAsync(1)
|
||||
const stub = sinon.stub();
|
||||
stub.withArgs('error', sinon.match.any).callsArgWithAsync(1);
|
||||
stub.withArgs('close', sinon.match.any).returns(1);
|
||||
fsStub.createWriteStream.returns({ on: stub })
|
||||
fsStub.createWriteStream.returns({ on: stub });
|
||||
|
||||
return storage.set('test', {pipe: sinon.stub()}, 'Filename.moz', 'moz.la')
|
||||
.then(reply => assert.fail())
|
||||
.catch(reply => assert(1))
|
||||
})
|
||||
})
|
||||
return storage
|
||||
.set('test', { pipe: sinon.stub() }, 'Filename.moz', 'moz.la')
|
||||
.then(_reply => assert.fail())
|
||||
.catch(err => assert(1));
|
||||
});
|
||||
});
|
||||
|
||||
describe('Testing Delete from local filesystem', function() {
|
||||
it('Deletes properly if id exists', function() {
|
||||
hget.callsArgWith(2, null, '123');
|
||||
fsStub.unlinkSync.returns(1);
|
||||
return storage.delete('Filename.moz', '123')
|
||||
.then(reply => assert(reply))
|
||||
.catch(reply => assert.fail())
|
||||
})
|
||||
return storage
|
||||
.delete('Filename.moz', '123')
|
||||
.then(reply => assert(reply))
|
||||
.catch(err => assert.fail());
|
||||
});
|
||||
|
||||
it('Delete fails if id does not exist', function() {
|
||||
hget.callsArgWith(2, null, null);
|
||||
return storage.delete('Filename.moz', '123')
|
||||
.then(reply => assert.fail())
|
||||
.catch(reply => assert(1))
|
||||
})
|
||||
return storage
|
||||
.delete('Filename.moz', '123')
|
||||
.then(_reply => assert.fail())
|
||||
.catch(err => assert(1));
|
||||
});
|
||||
|
||||
it('Delete fails if the delete token does not match', function() {
|
||||
hget.callsArgWith(2, null, null);
|
||||
return storage.delete('Filename.moz', '123')
|
||||
.then(reply => assert.fail())
|
||||
.catch(reply => assert(1))
|
||||
})
|
||||
})
|
||||
return storage
|
||||
.delete('Filename.moz', '123')
|
||||
.then(_reply => assert.fail())
|
||||
.catch(err => assert(1));
|
||||
});
|
||||
});
|
||||
|
||||
describe('Testing Forced Delete from local filesystem', function() {
|
||||
it('Deletes properly if id exists', function() {
|
||||
fsStub.unlinkSync.returns(1);
|
||||
return storage.forceDelete('Filename.moz')
|
||||
.then(reply => assert(reply))
|
||||
})
|
||||
return storage.forceDelete('Filename.moz').then(reply => assert(reply));
|
||||
});
|
||||
|
||||
it('Deletes fails if id does not exist, but no reject is called', function() {
|
||||
fsStub.unlinkSync.returns(0);
|
||||
return storage.forceDelete('Filename.moz')
|
||||
.then(reply => assert(!reply))
|
||||
})
|
||||
|
||||
})
|
||||
return storage.forceDelete('Filename.moz').then(reply => assert(!reply));
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue