-
Notifications
You must be signed in to change notification settings - Fork 6
/
apiUrlBuilder.js
59 lines (45 loc) · 1.85 KB
/
apiUrlBuilder.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
'use strict';
var buildUrl = require('../lib/apiUrlBuilder.js');
var chai = require('chai');
var url = require('url');
chai.should();
describe('apiUrlBuilder', function ƒ() {
describe('#apiUrlBuilder()', function ƒ() {
var apiKey = 'apiKey';
var format = 'json';
it('should build an url for a method', function ƒ() {
var u = url.parse(buildUrl('someMethod', {foo:'bar', bar:'baz'}, apiKey, format), true);
u.protocol.should.equal('https:');
u.hostname.should.equal('api.flickr.com');
u.pathname.should.equal('/services/rest');
u.query.api_key.should.equal(apiKey);
u.query.method.should.equal('someMethod');
});
it('should support an optional set of parameters', function ƒ() {
var u = url.parse(buildUrl('someMethod', {foo:'bar', bar:'baz'}, apiKey, format), true);
u.query.foo.should.equal('bar');
u.query.bar.should.equal('baz');
});
it('should support an optional format', function ƒ() {
var u = url.parse(buildUrl('someMethod', {}, apiKey), true);
u.query.format.should.be.a('string');
u = url.parse(buildUrl('someMethod', {}, apiKey, 'someFormat'), true);
u.query.format.should.equal('someFormat');
});
it('should add signature to authenticated requests', function ƒ() {
var auth = {
secret: 'someSecret',
miniToken: '123-456-789',
authToken: 'someToken'
};
// test getFullToken signed request
var u = url.parse(buildUrl('flickr.auth.getFullToken', {}, apiKey, format, auth), true);
u.query.mini_token.should.be.a('string');
u.query.api_sig.should.be.a('string');
// test other signed requests
u = url.parse(buildUrl('anyOtherMethod', {}, apiKey, format, auth), true);
u.query.auth_token.should.be.a('string');
u.query.api_sig.should.be.a('string');
});
});
});