Skip to content

Commit b7e12b3

Browse files
committed
100% test coverage
1 parent f2e4df9 commit b7e12b3

File tree

14 files changed

+717
-146
lines changed

14 files changed

+717
-146
lines changed

index.js

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,6 @@ var ImageKit = function(opts) {
4747
}
4848
f.call(self, ...args)
4949
} else {
50-
if (typeof Promise !== 'function') {
51-
throw new Error('Promises should be defined as a global function.')
52-
}
5350
return new Promise((resolve, reject) => {
5451
const callback = function(err, ...results) {
5552
if (err) {
@@ -65,10 +62,6 @@ var ImageKit = function(opts) {
6562
}
6663
}
6764

68-
if(!transformationUtils.validParameters(this.options)) {
69-
throw new Error(errorMessages.INVALID_TRANSFORMATION_POSITION.message);
70-
}
71-
7265
/*
7366
URL Builder
7467
*/
@@ -137,8 +130,4 @@ var ImageKit = function(opts) {
137130
}
138131
};
139132

140-
function mandatoryParametersAvailable(options) {
141-
return options.publicKey && options.privateKey && options.urlEndpoint;
142-
}
143-
144133
module.exports = ImageKit;

libs/manage/cache.js

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,7 @@ module.exports.purgeCache = function(url, defaultOptions, callback) {
1616
}
1717
};
1818

19-
request(requestOptions, defaultOptions, function(err, response, body) {
20-
if(err) {
21-
respond(true, err, callback);
22-
return;
23-
}
24-
25-
respond(false, body, callback);
26-
});
19+
request(requestOptions, defaultOptions, callback);
2720
};
2821

2922
module.exports.getPurgeCacheStatus = function(requestId, defaultOptions, callback) {
@@ -38,12 +31,5 @@ module.exports.getPurgeCacheStatus = function(requestId, defaultOptions, callbac
3831
json : true
3932
};
4033

41-
request(requestOptions, defaultOptions, function(err, response, body) {
42-
if(err) {
43-
respond(true, err, callback);
44-
return;
45-
}
46-
47-
respond(false, body, callback);
48-
});
34+
request(requestOptions, defaultOptions, callback);
4935
};

libs/manage/file.js

Lines changed: 13 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,7 @@ module.exports.deleteFile = function(fileId, defaultOptions, callback) {
2222
json : true
2323
};
2424

25-
request(requestOptions, defaultOptions, function(err, response, body) {
26-
if(err) {
27-
respond(true, err, callback);
28-
return;
29-
}
30-
31-
respond(false, body, callback);
32-
});
25+
request(requestOptions, defaultOptions, callback);
3326
};
3427

3528
/*
@@ -46,14 +39,7 @@ module.exports.getMetadata = function(fileId, defaultOptions, callback) {
4639
json : true
4740
};
4841

49-
request(requestOptions, defaultOptions, function(err, response, body) {
50-
if(err) {
51-
respond(true, err, callback);
52-
return;
53-
}
54-
55-
respond(false, body, callback);
56-
});
42+
request(requestOptions, defaultOptions, callback);
5743
};
5844

5945
/*
@@ -71,14 +57,7 @@ module.exports.getDetails = function(fileId, defaultOptions, callback) {
7157
json : true
7258
};
7359

74-
request(requestOptions, defaultOptions, function(err, response, body) {
75-
if(err) {
76-
respond(true, err, callback);
77-
return;
78-
}
79-
80-
respond(false, body, callback);
81-
});
60+
request(requestOptions, defaultOptions, callback);
8261
};
8362

8463
/*
@@ -94,67 +73,37 @@ module.exports.updateDetails = function(fileId, updateData, defaultOptions, call
9473
respond(true, errorMessages.UPDATE_DATA_MISSING, callback);
9574
return;
9675
}
97-
var data = {};
98-
if(updateData.tags !== null
99-
&& !(updateData.tags && Array.isArray(updateData.tags))
100-
&& (typeof updateData.tags !== "undefined")
101-
) {
102-
respond(true, errorMessages.UPDATE_DATA_TAGS_INVALID, callback);
103-
return;
104-
} else {
105-
data.tags = updateData.tags;
106-
}
107-
108-
if(updateData.customCoordinates !== null
109-
&& !(updateData.customCoordinates && typeof updateData.customCoordinates === "string")
110-
&& (typeof updateData.customCoordinates !== "undefined")
111-
) {
112-
respond(true, errorMessages.UPDATE_DATA_COORDS_INVALID, callback);
113-
return;
114-
} else {
115-
data.customCoordinates = updateData.customCoordinates;
116-
}
117-
76+
var data = {
77+
tags: updateData.tags,
78+
customCoordinates: updateData.customCoordinates
79+
};
80+
11881
var requestOptions = {
11982
url : "https://api.imagekit.io/v1/files/" + fileId + "/details",
12083
method : "PATCH",
12184
json : data
12285
};
12386

124-
request(requestOptions, defaultOptions, function(err, response, body) {
125-
if(err) {
126-
respond(true, err, callback);
127-
return;
128-
}
129-
130-
respond(false, body, callback);
131-
});
87+
request(requestOptions, defaultOptions, callback);
13288
};
13389

13490
/*
13591
List files
13692
*/
13793
module.exports.listFiles = function(listOptions, defaultOptions, callback) {
138-
if(!_.isObject(listOptions)) {
94+
if(listOptions && !_.isObject(listOptions)) {
13995
respond(true, errorMessages.UPDATE_DATA_MISSING, callback);
14096
return;
14197
}
14298

14399
var requestOptions = {
144100
url : "https://api.imagekit.io/v1/files/",
145101
method : "GET",
146-
qs : listOptions,
102+
qs : listOptions || {},
147103
json : true
148104
};
149105

150-
request(requestOptions, defaultOptions, function(err, response, body) {
151-
if(err) {
152-
respond(true, err, callback);
153-
return;
154-
}
155-
156-
respond(false, body, callback);
157-
});
106+
request(requestOptions, defaultOptions, callback);
158107
};
159108

160109
/*
@@ -179,12 +128,5 @@ module.exports.bulkDeleteFiles = function(fileIdArray, defaultOptions, callback)
179128
json: data
180129
}
181130

182-
request(requestOptions, defaultOptions, function(err, response, body) {
183-
if(err) {
184-
respond(true, err, callback);
185-
return;
186-
}
187-
188-
respond(false, body, callback)
189-
});
131+
request(requestOptions, defaultOptions, callback);
190132
};

libs/upload/index.js

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ var request = require("../../utils/request");
99

1010
module.exports = function(uploadOptions, defaultOptions, callback) {
1111
if(!_.isObject(uploadOptions)) {
12-
respond(true, errorMessages.INVALID_UPLOAD_OPTIONS, callback);
12+
respond(true, errorMessages.MISSING_UPLOAD_DATA, callback);
1313
return;
1414
}
1515

@@ -50,16 +50,5 @@ module.exports = function(uploadOptions, defaultOptions, callback) {
5050
json : true
5151
};
5252

53-
request(requestOptions, defaultOptions, function(err, response, body) {
54-
if(err) {
55-
if(err instanceof Error && err.message) {
56-
respond(true, err.message, callback);
57-
} else {
58-
respond(true, err, callback);
59-
}
60-
return;
61-
}
62-
63-
respond(false, body, callback);
64-
});
53+
request(requestOptions, defaultOptions, callback);
6554
};

libs/url/index.js

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,6 @@ var transformationUtils = require('../../utils/transformation');
1515

1616
module.exports = function(urlOpts, defaultOptions) {
1717
var opts = _.extend({}, defaultOptions, urlOpts);
18-
19-
if(!validOptions(opts)) {
20-
return "";
21-
}
2218

2319
return builder.buildURL(opts);
2420
};
25-
26-
function validOptions(opts) {
27-
if(!opts.urlEndpoint) return false;
28-
29-
return true;
30-
}

tests/cache.js

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
const chai = require("chai");
2+
const sinon = require("sinon");
3+
const expect = chai.expect;
4+
const initializationParams = require("./data").initializationParams
5+
const ImageKit = require("..");
6+
const nock = require("nock");
7+
var imagekit = new ImageKit(initializationParams);
8+
9+
const dummyAPISuccessResponse = {
10+
dummyKey: "dummyValue"
11+
};
12+
13+
const dummyAPIErrorResponse = {
14+
help: "help",
15+
message: "message"
16+
}
17+
18+
describe("Cache purge API", function () {
19+
describe("Request body check", function () {
20+
it('Purge cache', function (done) {
21+
var url = "http://ik.imagekit.io/demo/default-image.jpg";
22+
23+
const scope = nock('https://api.imagekit.io')
24+
.post("/v1/files/purge")
25+
.basicAuth({ user: initializationParams.privateKey, pass: '' })
26+
.reply(function (uri, requestBody) {
27+
expect(requestBody).to.deep.equal({
28+
url: url
29+
});
30+
done();
31+
return [200];
32+
})
33+
34+
imagekit.purgeCache(url);
35+
});
36+
37+
it('Purge cache no url', function (done) {
38+
imagekit.purgeCache("", function (err, response) {
39+
expect(err).to.deep.equal({
40+
help: "",
41+
message: "Missing URL parameter for this request"
42+
});
43+
done();
44+
});
45+
});
46+
47+
it('Purge cache', function (done) {
48+
var requestId = "sdfdsfksjfldsjfjsdf";
49+
50+
const scope = nock('https://api.imagekit.io')
51+
.get(`/v1/files/purge/${requestId}`)
52+
.basicAuth({ user: initializationParams.privateKey, pass: '' })
53+
.reply(function (uri, requestBody) {
54+
done();
55+
return [200];
56+
})
57+
58+
imagekit.getPurgeCacheStatus(requestId);
59+
});
60+
61+
it('Purge cache missing requestId', function (done) {
62+
imagekit.getPurgeCacheStatus("", function (err, response) {
63+
expect(err).to.deep.equal({
64+
help: "",
65+
message: "Missing Request ID parameter for this request"
66+
});
67+
done();
68+
});
69+
});
70+
});
71+
72+
describe("Success callbacks", function () {
73+
it('Purge cache', function (done) {
74+
var url = "http://ik.imagekit.io/demo/default-image.jpg";
75+
76+
const scope = nock('https://api.imagekit.io')
77+
.post("/v1/files/purge")
78+
.basicAuth({ user: initializationParams.privateKey, pass: '' })
79+
.reply(200, dummyAPISuccessResponse)
80+
81+
var callback = sinon.spy();
82+
imagekit.purgeCache(url, callback);
83+
84+
setTimeout(function () {
85+
expect(callback.calledOnce).to.be.true;
86+
sinon.assert.calledWith(callback, null, dummyAPISuccessResponse);
87+
done();
88+
}, 50);
89+
});
90+
91+
it('Purge cache', function (done) {
92+
var requestId = "sdfdsfksjfldsjfjsdf";
93+
94+
const scope = nock('https://api.imagekit.io')
95+
.get(`/v1/files/purge/${requestId}`)
96+
.basicAuth({ user: initializationParams.privateKey, pass: '' })
97+
.reply(200, dummyAPISuccessResponse)
98+
99+
var callback = sinon.spy();
100+
101+
imagekit.getPurgeCacheStatus(requestId, callback);
102+
103+
setTimeout(function () {
104+
expect(callback.calledOnce).to.be.true;
105+
sinon.assert.calledWith(callback, null, dummyAPISuccessResponse);
106+
done();
107+
}, 50);
108+
});
109+
});
110+
111+
describe("Error callbacks", function () {
112+
it('Purge cache', function (done) {
113+
var url = "http://ik.imagekit.io/demo/default-image.jpg";
114+
115+
const scope = nock('https://api.imagekit.io')
116+
.post("/v1/files/purge")
117+
.basicAuth({ user: initializationParams.privateKey, pass: '' })
118+
.reply(500, dummyAPIErrorResponse)
119+
120+
var callback = sinon.spy();
121+
imagekit.purgeCache(url, callback);
122+
123+
setTimeout(function () {
124+
expect(callback.calledOnce).to.be.true;
125+
sinon.assert.calledWith(callback, dummyAPIErrorResponse, null);
126+
done();
127+
}, 50);
128+
});
129+
130+
it('Purge cache', function (done) {
131+
var requestId = "sdfdsfksjfldsjfjsdf";
132+
133+
const scope = nock('https://api.imagekit.io')
134+
.get(`/v1/files/purge/${requestId}`)
135+
.basicAuth({ user: initializationParams.privateKey, pass: '' })
136+
.reply(500, dummyAPIErrorResponse)
137+
138+
var callback = sinon.spy();
139+
140+
imagekit.getPurgeCacheStatus(requestId, callback);
141+
142+
setTimeout(function () {
143+
expect(callback.calledOnce).to.be.true;
144+
sinon.assert.calledWith(callback, dummyAPIErrorResponse, null);
145+
done();
146+
}, 50);
147+
});
148+
});
149+
});
150+

tests/data/test_image.jpg

195 KB
Loading

0 commit comments

Comments
 (0)