finished storage tests
This commit is contained in:
parent
f9ca9f4b87
commit
76af1c92e6
|
@ -101,7 +101,7 @@ app.post('/delete/:id', (req, res) => {
|
||||||
|
|
||||||
storage
|
storage
|
||||||
.delete(id, delete_token)
|
.delete(id, delete_token)
|
||||||
.then(err => {
|
.then(() => {
|
||||||
if (!err) {
|
if (!err) {
|
||||||
log.info('Deleted:', id);
|
log.info('Deleted:', id);
|
||||||
res.sendStatus(200);
|
res.sendStatus(200);
|
||||||
|
@ -112,7 +112,7 @@ app.post('/delete/:id', (req, res) => {
|
||||||
|
|
||||||
app.post('/upload/:id', (req, res, next) => {
|
app.post('/upload/:id', (req, res, next) => {
|
||||||
if (!validateID(req.params.id)) {
|
if (!validateID(req.params.id)) {
|
||||||
res.send(404);
|
res.sendStatus(404);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -206,7 +206,7 @@ function awsDelete(id, delete_token) {
|
||||||
};
|
};
|
||||||
|
|
||||||
s3.deleteObject(params, function(err, _data) {
|
s3.deleteObject(params, function(err, _data) {
|
||||||
resolve(err);
|
err ? reject(err) : resolve(err);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -222,7 +222,7 @@ function awsForceDelete(id) {
|
||||||
};
|
};
|
||||||
|
|
||||||
s3.deleteObject(params, function(err, _data) {
|
s3.deleteObject(params, function(err, _data) {
|
||||||
resolve(err);
|
err ? reject(err) : resolve(err);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,140 @@
|
||||||
|
const assert = require('assert');
|
||||||
|
const sinon = require('sinon');
|
||||||
|
const proxyquire = require('proxyquire');
|
||||||
|
|
||||||
|
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.stub();
|
||||||
|
let del = sinon.stub();
|
||||||
|
|
||||||
|
redisStub.createClient = function() {
|
||||||
|
return {
|
||||||
|
on: sinon.spy(),
|
||||||
|
exists: exists,
|
||||||
|
hget: hget,
|
||||||
|
hmset: hmset,
|
||||||
|
expire: expire,
|
||||||
|
del: del
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let fsStub = {};
|
||||||
|
fsStub.statSync = sinon.stub();
|
||||||
|
fsStub.createReadStream = sinon.stub();
|
||||||
|
fsStub.createWriteStream = sinon.stub();
|
||||||
|
fsStub.unlinkSync = sinon.stub();
|
||||||
|
|
||||||
|
let logStub = {};
|
||||||
|
logStub.info = sinon.stub();
|
||||||
|
logStub.error = sinon.stub();
|
||||||
|
|
||||||
|
let s3Stub = {};
|
||||||
|
s3Stub.headObject = sinon.stub();
|
||||||
|
s3Stub.getObject = sinon.stub();
|
||||||
|
s3Stub.upload = sinon.stub();
|
||||||
|
s3Stub.deleteObject = sinon.stub();
|
||||||
|
|
||||||
|
let awsStub = {
|
||||||
|
S3: function() {
|
||||||
|
return s3Stub;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const storage = proxyquire('../server/storage', {
|
||||||
|
'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(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))
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('Testing Get using aws', function() {
|
||||||
|
it('Should not error out when the file exists', function() {
|
||||||
|
s3Stub.getObject.returns({
|
||||||
|
createReadStream: function() { return 1; }
|
||||||
|
});
|
||||||
|
assert(storage.get('123') === 1);
|
||||||
|
})
|
||||||
|
|
||||||
|
it('Should error when the file does not exist', function() {
|
||||||
|
s3Stub.getObject.returns({
|
||||||
|
createReadStream: function() { return null; }
|
||||||
|
});
|
||||||
|
assert(storage.get('123') === null);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('Testing Set using aws', function() {
|
||||||
|
it('Should pass when the file is successfully uploaded and no bitly key', function() {
|
||||||
|
conf.bitly_key = null;
|
||||||
|
s3Stub.upload.callsArgWith(1, null, {});
|
||||||
|
return storage.set('123', {}, 'Filename.moz', 'url.com')
|
||||||
|
.then(reply => assert(reply.url === 'url.com' && reply.uuid !== null))
|
||||||
|
.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));
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
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())
|
||||||
|
})
|
||||||
|
|
||||||
|
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))
|
||||||
|
})
|
||||||
|
|
||||||
|
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))
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
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());
|
||||||
|
})
|
||||||
|
|
||||||
|
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))
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
|
@ -2,6 +2,8 @@ const assert = require('assert');
|
||||||
const sinon = require('sinon');
|
const sinon = require('sinon');
|
||||||
const proxyquire = require('proxyquire');
|
const proxyquire = require('proxyquire');
|
||||||
|
|
||||||
|
const conf = require('../server/config.js')
|
||||||
|
conf.notLocalHost = false;
|
||||||
|
|
||||||
let redisStub = {};
|
let redisStub = {};
|
||||||
let exists = sinon.stub();
|
let exists = sinon.stub();
|
||||||
|
|
Loading…
Reference in New Issue