This repository has been archived by the owner on Dec 16, 2019. It is now read-only.
/
sapi.js
59 lines (58 loc) · 2.28 KB
/
sapi.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
var bag = require('bagofrequest'),
buster = require('buster-node'),
referee = require('referee'),
Sapi = require('../lib/sapi'),
assert = referee.assert;
buster.testCase('sapi', {
setUp: function () {
this.mock({});
},
'should set key and default url when url is not provided': function () {
var sapi = new Sapi('somekey');
assert.equals(sapi.params.key, 'somekey');
assert.equals(sapi.url, 'http://api.sensis.com.au/ob-20110511/test');
},
'should set optional key and url when provided': function () {
var sapi = new Sapi('somekey', { url: 'http://someurl' });
assert.equals(sapi.params.key, 'somekey');
assert.equals(sapi.url, 'http://someurl');
},
'should pass authentication failed error to callback when result has status code 403 and key is provided': function (done) {
var mockRequest = function (method, url, opts, cb) {
opts.handlers[403]({ statusCode: 403 }, cb);
};
this.stub(bag, 'request', mockRequest);
var sapi = new Sapi('somekey');
sapi.search(function cb(err, result) {
assert.equals(err.message, 'Authentication failed - invalid key somekey');
assert.equals(result, undefined);
done();
});
},
'should pass authentication required error to callback when result has status code 403 and key is not provided': function (done) {
var mockRequest = function (method, url, opts, cb) {
opts.handlers[403]({ statusCode: 403 }, cb);
};
this.stub(bag, 'request', mockRequest);
var sapi = new Sapi();
sapi.search(function cb(err, result) {
assert.equals(err.message, 'Authentication required - set API key in Sapi constructor');
assert.equals(result, undefined);
done();
});
},
'should construct params when parameter functions are chained': function (done) {
var mockRequest = function (method, url, opts, cb) {
assert.equals(opts.queryStrings.query, 'somequery');
assert.equals(opts.queryStrings.location, 'somelocation');
opts.handlers[200]({ statusCode: 200 }, cb);
};
this.stub(bag, 'request', mockRequest);
var sapi = new Sapi('somekey');
sapi.query('somequery').location('somelocation').search(function cb(err, result) {
assert.isNull(err);
assert.equals(result.statusCode, 200);
done();
});
}
});