hellojs-xiaotian
Version:
A clientside Javascript library for standardizing requests to OAuth2 web services (and OAuth1 - with a shim)
240 lines (221 loc) • 5.43 kB
JavaScript
define(['./helper'], function(helper) {
describe('hello.api(\'/me\')', function() {
helper.sharedSetup();
var tests = [
{
network: 'bikeindex',
expect: {
id: '13674',
thumbnail: undefined
},
errorExpect: {
code: 'access_denied',
message: 'OAuth error: unauthorized'
}
},
{
network: 'box',
expect: {
id: '197571718',
name: 'Jane McGee',
thumbnail: 'https://app.box.com/api/avatar/large/197571718'
},
errorExpect: false
},
{
network: 'dropbox',
expect: {
id: 374434467,
name: 'Jane McGee',
thumbnail: undefined
},
errorExpect: {
code: 'server_error',
message: 'The given OAuth 2 access token doesn\'t exist or has expired.'
}
},
{
network: 'facebook',
expect: {
id: '100008806508341',
name: 'Jane McGee',
thumbnail: 'https://graph.facebook.com/100008806508341/picture'
},
errorExpect: {
code: 190,
message: 'Invalid OAuth access token.'
}
},
{
network: 'flickr',
expect: {
id: '34790912@N05',
name: 'Jane McGee',
thumbnail: 'https://farm4.staticflickr.com/3729/buddyicons/34790912@N05_l.jpg'
},
errorExpect: {
code: 'invalid_request',
message: 'User not found'
}
},
{
network: 'foursquare',
expect: {
id: '110649444',
name: 'Jane McGee',
thumbnail: 'https://irs0.4sqi.net/img/user/100x100/110649444-XTNO1LD24NJOW0TW.jpg'
},
errorExpect: {
code: 'access_denied',
message: 'OAuth token invalid or revoked.'
}
},
{
network: 'github',
expect: {
id: 10398423,
name: 'janemcgee35',
thumbnail: 'https://avatars.githubusercontent.com/u/10398423?v=3'
},
errorExpect: false
},
{
network: 'google',
expect: {
id: '115111284799080900590',
name: 'Jane McGee',
thumbnail: 'https://lh3.googleusercontent.com/-NWCgcgRDieE/AAAAAAAAAAI/AAAAAAAAABc/DCi-M8IuzMo/photo.jpg?sz=50'
},
errorExpect: {
code: 403,
message: 'Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.'
}
},
{
network: 'instagram',
expect: {
id: '1636340308',
name: 'Jane McGee',
thumbnail: 'https://igcdn-photos-h-a.akamaihd.net/hphotos-ak-xaf1/t51.2885-19/10919499_876030935750711_2062576510_a.jpg'
},
errorExpect: {
code: 'OAuthParameterException',
message: 'Missing client_id or access_token URL parameter.'
}
},
{
network: 'joinme',
expect: {
id: 'janemcgee35@join.me',
name: 'Jane McGee',
thumbnail: undefined
},
errorExpect: false
},
{
network: 'linkedin',
expect: {
id: 'sDsPqKdBkl',
name: 'Jane McGee',
thumbnail: 'https://media.licdn.com/mpr/mprx/0_oFea4Eo2n6j5ZQS2oLwg4HE7NiWQ4Qp2H_yl4dVyw6gBFGIuQ3ZGnWmtsSdZUTjhIXErcmkkxGoX'
},
errorExpect: {
code: 401,
message: 'Unknown authentication scheme'
}
},
{
network: 'soundcloud',
expect: {
id: 131420710,
name: 'janemcgee35',
thumbnail: 'https://i1.sndcdn.com/avatars-000123511300-upb183-large.jpg'
},
errorExpect: false
},
{
network: 'twitter',
expect: {
id: 2961707375,
name: 'Jane McGee',
thumbnail: 'https://pbs.twimg.com/profile_images/552017091583152128/a8lyS35y_normal.jpeg'
},
errorExpect: {
code: 'request_failed',
message: 'Bad Authentication data'
}
},
{
network: 'vk',
expect: {
id: 434460,
name: 'Юрий Опарин',
thumbnail: 'http://cs304605.vk.me/u434460/d_1acca7c0.jpg'
},
errorExpect: {
code: 10,
message: 'Internal server error: could not get application'
}
},
{
network: 'windows',
expect: {
id: '939f37452466502a',
name: 'Jane McGee',
thumbnail: 'https://apis.live.net/v5.0/939f37452466502a/picture?access_token=token'
},
errorExpect: {
code: 'request_token_invalid',
message: 'The access token isn\'t valid.'
}
},
{
network: 'yahoo',
expect: {
id: 'UKGYDRAHEWONVO35KOOBBGQ4UU',
name: 'Jane McGee',
thumbnail: 'https://socialprofiles.zenfs.com/images/805efb9485e4878f21be4d9e9e5890ca_192.png'
},
errorExpect: false
}
];
describe('authorised requests', function() {
helper.forEach(tests, function(test) {
it('should format ' + test.network + ' correctly', function(done) {
hello(test.network)
.api('/me', {
access_token: 'token'
})
.then(function(me) {
expect(me.id).to.be(test.expect.id);
expect(me.name).to.be(test.expect.name);
expect(me.thumbnail).to.be(test.expect.thumbnail);
done();
})
.then(null, done);
});
});
});
describe('unauthorised requests', function() {
helper.forEach(tests, function(test) {
if (!test.errorExpect) {
return;
}
it('should trigger the error handler for ' + test.network, function(done) {
hello(test.network)
.api('/me', {
stubType: '-unauth',
access_token: null
})
.then(done, function(data) {
expect(data.error).to.not.be(undefined);
expect(data.error.code).to.be(test.errorExpect.code);
expect(data.error.message).to.be(test.errorExpect.message);
done();
})
.then(null, done);
});
});
});
});
});