Files
cm-app-gateway/node_modules/simple-oauth-server/tests/lib/getOauthParameters.js

176 lines
5.5 KiB
JavaScript

var test = require('tape'),
pathToObjectUnderTest = '../../lib/getOauthParameters',
getOauthParameters = require(pathToObjectUnderTest);
test('getOauthParameters exists and returns a function', function(t){
t.plan(4);
t.ok(getOauthParameters, 'getOauthParameters Exists');
t.equal(typeof getOauthParameters, 'function', 'getOauthParameters is a function');
var resultingFunction = getOauthParameters();
t.ok(resultingFunction, 'resultingFunction Exists');
t.equal(typeof resultingFunction, 'function', 'resultingFunction is a function');
});
test('getOauthParameters gets all context data from request and query string', function(t){
t.plan(3);
var authServer = {},
endEvent,
fakeRequest = {
url: '/?meh=majigger&scope=qwe,asd',
headers: {
authorization: 'bearer 123456'
},
readable: true,
on: function(event, callback){
if(event === 'data'){
setTimeout(function(){
callback('foo=bar');
callback('&stuff=thing');
callback('&meh=ishouldntbehere');
endEvent();
}, 0);
}
if(event === 'end'){
endEvent = callback;
}
}
},
expectedContext = {
foo: 'bar',
stuff: 'thing',
meh: 'majigger',
access_token: '123456',
scope: [
'qwe',
'asd'
]
},
scopedVersion = getOauthParameters.bind(authServer, function(){
t.deepEqual(arguments[0], expectedContext, 'got correct context');
t.equal(arguments[1], 'foo', 'arguments[1] correct');
t.equal(arguments[2], 'bar', 'arguments[2] correct');
}),
resultingFunction = scopedVersion();
resultingFunction(fakeRequest, 'foo', 'bar');
});
test('getOauthParameters handels no data from request', function(t){
t.plan(3);
var authServer = {},
fakeRequest = {
url: '/?meh=majigger&scope=qwe,asd',
headers: {
authorization: 'bearer 123456'
},
readable: true,
on: function(event, callback){
if(event === 'end'){
callback();
}
}
},
expectedContext = {
meh: 'majigger',
access_token: '123456',
scope: [
'qwe',
'asd'
]
},
scopedVersion = getOauthParameters.bind(authServer, function(){
t.deepEqual(arguments[0], expectedContext, 'got correct context');
t.equal(arguments[1], 'foo', 'arguments[1] correct');
t.equal(arguments[2], 'bar', 'arguments[2] correct');
}),
resultingFunction = scopedVersion();
resultingFunction(fakeRequest, 'foo', 'bar');
});
test('getOauthParameters handels access_token in url', function(t){
t.plan(3);
var authServer = {},
fakeRequest = {
url: '/?meh=majigger&scope=qwe,asd&access_token=123456',
readable: false
},
expectedContext = {
meh: 'majigger',
access_token: '123456',
scope: [
'qwe',
'asd'
]
},
scopedVersion = getOauthParameters.bind(authServer, function(){
t.deepEqual(arguments[0], expectedContext, 'got correct context');
t.equal(arguments[1], 'foo', 'arguments[1] correct');
t.equal(arguments[2], 'bar', 'arguments[2] correct');
}),
resultingFunction = scopedVersion();
resultingFunction(fakeRequest, 'foo', 'bar');
});
test('getOauthParameters gets all context data from request and query string', function(t){
t.plan(1);
var authServer = {},
endEvent,
destroyed,
fakeRequest = {
url: '/?meh=majigger&scope=qwe,asd',
headers: {
authorization: 'bearer 123456'
},
readable: true,
on: function(event, callback){
if(destroyed){
return;
}
if(event === 'data'){
setTimeout(function(){
for (var i = 0; i < 1e6 + 2; i++) {
if(destroyed){
break;
}
callback('1');
}
endEvent();
}, 0);
}
if(event === 'end'){
endEvent = function(){
if(!destroyed){
callback();
}
};
}
},
connection: {
destroy: function() {
t.pass('connection destroyed');
destroyed = true;
}
}
},
scopedVersion = getOauthParameters.bind(authServer, function(){
t.fail('should have destroyed connection');
}),
resultingFunction = scopedVersion();
resultingFunction(fakeRequest);
});