diff --git a/lib/oauth2.js b/lib/oauth2.js index 835b327..3210171 100644 --- a/lib/oauth2.js +++ b/lib/oauth2.js @@ -74,6 +74,10 @@ exports.OAuth2.prototype._request= function(method, url, headers, post_body, acc } realHeaders['Host']= parsedUrl.host; + if (!realHeaders['User-Agent']) { + realHeaders['User-Agent'] = 'Node-oauth'; + } + realHeaders['Content-Length']= post_body ? Buffer.byteLength(post_body) : 0; if( access_token && !('Authorization' in realHeaders)) { if( ! parsedUrl.query ) parsedUrl.query= {}; diff --git a/tests/oauth2.js b/tests/oauth2.js index 3eda163..d16a0e0 100644 --- a/tests/oauth2.js +++ b/tests/oauth2.js @@ -133,5 +133,29 @@ vows.describe('OAuth2').addBatch({ oa.get("", {}); } } + }, + 'When the user passes in the User-Agent in customHeaders': { + topic: new OAuth2("clientId", "clientSecret", undefined, undefined, undefined, + { 'User-Agent': '123Agent' }), + 'When calling get': { + 'we should see the User-Agent mixed into headers property in options passed to http-library' : function(oa) { + oa._executeRequest= function( http_library, options, callback ) { + assert.equal(options.headers["User-Agent"], "123Agent"); + }; + oa.get("", {}); + } + } + }, + 'When the user does not pass in a User-Agent in customHeaders': { + topic: new OAuth2("clientId", "clientSecret", undefined, undefined, undefined, + undefined), + 'When calling get': { + 'we should see the default User-Agent mixed into headers property in options passed to http-library' : function(oa) { + oa._executeRequest= function( http_library, options, callback ) { + assert.equal(options.headers["User-Agent"], "Node-oauth"); + }; + oa.get("", {}); + } + } } }).export(module);