@@ -1,140 +1,153 @@
|
||||
const OAuth = require("../lib/Adapters/Auth/OAuth1Client");
|
||||
const OAuth = require('../lib/Adapters/Auth/OAuth1Client');
|
||||
|
||||
describe('OAuth', function() {
|
||||
it("Nonce should have right length", (done) => {
|
||||
it('Nonce should have right length', done => {
|
||||
jequal(OAuth.nonce().length, 30);
|
||||
done();
|
||||
});
|
||||
|
||||
it("Should properly build parameter string", (done) => {
|
||||
const string = OAuth.buildParameterString({c:1, a:2, b:3})
|
||||
jequal(string, "a=2&b=3&c=1");
|
||||
it('Should properly build parameter string', done => {
|
||||
const string = OAuth.buildParameterString({ c: 1, a: 2, b: 3 });
|
||||
jequal(string, 'a=2&b=3&c=1');
|
||||
done();
|
||||
});
|
||||
|
||||
it("Should properly build empty parameter string", (done) => {
|
||||
const string = OAuth.buildParameterString()
|
||||
jequal(string, "");
|
||||
it('Should properly build empty parameter string', done => {
|
||||
const string = OAuth.buildParameterString();
|
||||
jequal(string, '');
|
||||
done();
|
||||
});
|
||||
|
||||
it("Should properly build signature string", (done) => {
|
||||
const string = OAuth.buildSignatureString("get", "http://dummy.com", "");
|
||||
jequal(string, "GET&http%3A%2F%2Fdummy.com&");
|
||||
it('Should properly build signature string', done => {
|
||||
const string = OAuth.buildSignatureString('get', 'http://dummy.com', '');
|
||||
jequal(string, 'GET&http%3A%2F%2Fdummy.com&');
|
||||
done();
|
||||
});
|
||||
|
||||
it("Should properly generate request signature", (done) => {
|
||||
it('Should properly generate request signature', done => {
|
||||
let request = {
|
||||
host: "dummy.com",
|
||||
path: "path"
|
||||
host: 'dummy.com',
|
||||
path: 'path',
|
||||
};
|
||||
|
||||
const oauth_params = {
|
||||
oauth_timestamp: 123450000,
|
||||
oauth_nonce: "AAAAAAAAAAAAAAAAA",
|
||||
oauth_consumer_key: "hello",
|
||||
oauth_token: "token"
|
||||
oauth_nonce: 'AAAAAAAAAAAAAAAAA',
|
||||
oauth_consumer_key: 'hello',
|
||||
oauth_token: 'token',
|
||||
};
|
||||
|
||||
const consumer_secret = "world";
|
||||
const auth_token_secret = "secret";
|
||||
request = OAuth.signRequest(request, oauth_params, consumer_secret, auth_token_secret);
|
||||
jequal(request.headers['Authorization'], 'OAuth oauth_consumer_key="hello", oauth_nonce="AAAAAAAAAAAAAAAAA", oauth_signature="8K95bpQcDi9Nd2GkhumTVcw4%2BXw%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="123450000", oauth_token="token", oauth_version="1.0"');
|
||||
const consumer_secret = 'world';
|
||||
const auth_token_secret = 'secret';
|
||||
request = OAuth.signRequest(
|
||||
request,
|
||||
oauth_params,
|
||||
consumer_secret,
|
||||
auth_token_secret
|
||||
);
|
||||
jequal(
|
||||
request.headers['Authorization'],
|
||||
'OAuth oauth_consumer_key="hello", oauth_nonce="AAAAAAAAAAAAAAAAA", oauth_signature="8K95bpQcDi9Nd2GkhumTVcw4%2BXw%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="123450000", oauth_token="token", oauth_version="1.0"'
|
||||
);
|
||||
done();
|
||||
});
|
||||
|
||||
it("Should properly build request", (done) => {
|
||||
it('Should properly build request', done => {
|
||||
const options = {
|
||||
host: "dummy.com",
|
||||
consumer_key: "hello",
|
||||
consumer_secret: "world",
|
||||
auth_token: "token",
|
||||
auth_token_secret: "secret",
|
||||
host: 'dummy.com',
|
||||
consumer_key: 'hello',
|
||||
consumer_secret: 'world',
|
||||
auth_token: 'token',
|
||||
auth_token_secret: 'secret',
|
||||
// Custom oauth params for tests
|
||||
oauth_params: {
|
||||
oauth_timestamp: 123450000,
|
||||
oauth_nonce: "AAAAAAAAAAAAAAAAA"
|
||||
}
|
||||
oauth_nonce: 'AAAAAAAAAAAAAAAAA',
|
||||
},
|
||||
};
|
||||
const path = "path";
|
||||
const method = "get";
|
||||
const path = 'path';
|
||||
const method = 'get';
|
||||
|
||||
const oauthClient = new OAuth(options);
|
||||
const req = oauthClient.buildRequest(method, path, {"query": "param"});
|
||||
const req = oauthClient.buildRequest(method, path, { query: 'param' });
|
||||
|
||||
jequal(req.host, options.host);
|
||||
jequal(req.path, "/" + path + "?query=param");
|
||||
jequal(req.method, "GET");
|
||||
jequal(req.path, '/' + path + '?query=param');
|
||||
jequal(req.method, 'GET');
|
||||
jequal(req.headers['Content-Type'], 'application/x-www-form-urlencoded');
|
||||
jequal(req.headers['Authorization'], 'OAuth oauth_consumer_key="hello", oauth_nonce="AAAAAAAAAAAAAAAAA", oauth_signature="wNkyEkDE%2F0JZ2idmqyrgHdvC0rs%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="123450000", oauth_token="token", oauth_version="1.0"')
|
||||
jequal(
|
||||
req.headers['Authorization'],
|
||||
'OAuth oauth_consumer_key="hello", oauth_nonce="AAAAAAAAAAAAAAAAA", oauth_signature="wNkyEkDE%2F0JZ2idmqyrgHdvC0rs%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="123450000", oauth_token="token", oauth_version="1.0"'
|
||||
);
|
||||
done();
|
||||
});
|
||||
|
||||
|
||||
function validateCannotAuthenticateError(data, done) {
|
||||
jequal(typeof data, "object");
|
||||
jequal(typeof data.errors, "object");
|
||||
jequal(typeof data, 'object');
|
||||
jequal(typeof data.errors, 'object');
|
||||
const errors = data.errors;
|
||||
jequal(typeof errors[0], "object");
|
||||
jequal(typeof errors[0], 'object');
|
||||
// Cannot authenticate error
|
||||
jequal(errors[0].code, 32);
|
||||
done();
|
||||
}
|
||||
|
||||
it("Should fail a GET request", (done) => {
|
||||
it('Should fail a GET request', done => {
|
||||
const options = {
|
||||
host: "api.twitter.com",
|
||||
consumer_key: "XXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||
consumer_secret: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||
host: 'api.twitter.com',
|
||||
consumer_key: 'XXXXXXXXXXXXXXXXXXXXXXXXX',
|
||||
consumer_secret: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
|
||||
};
|
||||
const path = "/1.1/help/configuration.json";
|
||||
const params = {"lang": "en"};
|
||||
const path = '/1.1/help/configuration.json';
|
||||
const params = { lang: 'en' };
|
||||
const oauthClient = new OAuth(options);
|
||||
oauthClient.get(path, params).then(function(data){
|
||||
oauthClient.get(path, params).then(function(data) {
|
||||
validateCannotAuthenticateError(data, done);
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
it("Should fail a POST request", (done) => {
|
||||
it('Should fail a POST request', done => {
|
||||
const options = {
|
||||
host: "api.twitter.com",
|
||||
consumer_key: "XXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||
consumer_secret: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||
host: 'api.twitter.com',
|
||||
consumer_key: 'XXXXXXXXXXXXXXXXXXXXXXXXX',
|
||||
consumer_secret: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
|
||||
};
|
||||
const body = {
|
||||
lang: "en"
|
||||
lang: 'en',
|
||||
};
|
||||
const path = "/1.1/account/settings.json";
|
||||
const path = '/1.1/account/settings.json';
|
||||
|
||||
const oauthClient = new OAuth(options);
|
||||
oauthClient.post(path, null, body).then(function(data){
|
||||
oauthClient.post(path, null, body).then(function(data) {
|
||||
validateCannotAuthenticateError(data, done);
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
it("Should fail a request", (done) => {
|
||||
it('Should fail a request', done => {
|
||||
const options = {
|
||||
host: "localhost",
|
||||
consumer_key: "XXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||
consumer_secret: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||
host: 'localhost',
|
||||
consumer_key: 'XXXXXXXXXXXXXXXXXXXXXXXXX',
|
||||
consumer_secret: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
|
||||
};
|
||||
const body = {
|
||||
lang: "en"
|
||||
lang: 'en',
|
||||
};
|
||||
const path = "/";
|
||||
const path = '/';
|
||||
|
||||
const oauthClient = new OAuth(options);
|
||||
oauthClient.post(path, null, body).then(function(){
|
||||
jequal(false, true);
|
||||
done();
|
||||
}).catch(function(){
|
||||
jequal(true, true);
|
||||
done();
|
||||
})
|
||||
oauthClient
|
||||
.post(path, null, body)
|
||||
.then(function() {
|
||||
jequal(false, true);
|
||||
done();
|
||||
})
|
||||
.catch(function() {
|
||||
jequal(true, true);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it("Should fail with missing options", (done) => {
|
||||
it('Should fail with missing options', done => {
|
||||
const options = undefined;
|
||||
try {
|
||||
new OAuth(options);
|
||||
|
||||
Reference in New Issue
Block a user