From e01b417d3f1856f7a02077160adfaf8e81dcc561 Mon Sep 17 00:00:00 2001 From: Benjamin Wilson Friedman Date: Tue, 28 Mar 2017 15:16:47 -0700 Subject: [PATCH] Added exception for Twitter and OAuth missing options (#3676) * Added exception for Twitter and OAuth missing configuration information * Updated error codes to INTERNAL_SERVER_ERROR, code 1 --- spec/OAuth1.spec.js | 10 ++++++++++ spec/TwitterAuth.spec.js | 16 +++++++++++++++- src/Adapters/Auth/OAuth1Client.js | 4 ++++ src/Adapters/Auth/twitter.js | 3 +++ 4 files changed, 32 insertions(+), 1 deletion(-) diff --git a/spec/OAuth1.spec.js b/spec/OAuth1.spec.js index 15e55d3b..5c64f7e3 100644 --- a/spec/OAuth1.spec.js +++ b/spec/OAuth1.spec.js @@ -133,4 +133,14 @@ describe('OAuth', function() { done(); }) }); + + it("Should fail with missing options", (done) => { + var options = undefined; + try { + new OAuth(options); + } catch (error) { + jequal(error.message, 'No options passed to OAuth'); + done(); + } + }); }); diff --git a/spec/TwitterAuth.spec.js b/spec/TwitterAuth.spec.js index 8cec73e4..d98297f7 100644 --- a/spec/TwitterAuth.spec.js +++ b/spec/TwitterAuth.spec.js @@ -9,7 +9,7 @@ describe('Twitter Auth', () => { consumer_key: 'hello' }, { consumer_key: 'world' - }]).consumer_key).toEqual('hello') + }]).consumer_key).toEqual('hello'); // Multiple options, consumer_key not found expect(function(){ @@ -47,4 +47,18 @@ describe('Twitter Auth', () => { consumer_key: 'hello' }).consumer_key).toEqual('hello'); }); + + it("Should fail with missing options", (done) => { + try { + twitter.validateAuthData({ + consumer_key: 'key', + consumer_secret: 'secret', + auth_token: 'token', + auth_token_secret: 'secret' + }, undefined); + } catch (error) { + jequal(error.message, 'Twitter auth configuration missing'); + done(); + } + }); }); diff --git a/src/Adapters/Auth/OAuth1Client.js b/src/Adapters/Auth/OAuth1Client.js index 2fb20573..6776b510 100644 --- a/src/Adapters/Auth/OAuth1Client.js +++ b/src/Adapters/Auth/OAuth1Client.js @@ -1,7 +1,11 @@ var https = require('https'), crypto = require('crypto'); +var Parse = require('parse/node').Parse; var OAuth = function(options) { + if(!options) { + throw new Parse.Error(Parse.Error.INTERNAL_SERVER_ERROR, 'No options passed to OAuth'); + } this.consumer_key = options.consumer_key; this.consumer_secret = options.consumer_secret; this.auth_token = options.auth_token; diff --git a/src/Adapters/Auth/twitter.js b/src/Adapters/Auth/twitter.js index 81f7f135..ee851781 100644 --- a/src/Adapters/Auth/twitter.js +++ b/src/Adapters/Auth/twitter.js @@ -5,6 +5,9 @@ var logger = require('../../logger').default; // Returns a promise that fulfills iff this user id is valid. function validateAuthData(authData, options) { + if(!options) { + throw new Parse.Error(Parse.Error.INTERNAL_SERVER_ERROR, 'Twitter auth configuration missing'); + } options = handleMultipleConfigurations(authData, options); var client = new OAuth(options); client.host = "api.twitter.com";