@@ -25,10 +25,20 @@ var request = require('request');
2525var util = require ( 'sandboxed-module' )
2626 . require ( '../../lib/common/util' , {
2727 requires : {
28+ 'google-service-account' : fakeGsa ,
2829 request : fakeRequest
2930 }
3031 } ) ;
3132
33+ var gsa_Override ;
34+
35+ function fakeGsa ( ) {
36+ var args = [ ] . slice . apply ( arguments ) ;
37+ var results = ( gsa_Override || util . noop ) . apply ( null , args ) ;
38+ gsa_Override = null ;
39+ return results || { getCredentials : util . noop } ;
40+ }
41+
3242var request_Cached = request ;
3343var request_Override ;
3444
@@ -252,4 +262,132 @@ describe('common/util', function() {
252262 } ) ;
253263 } ) ;
254264 } ) ;
265+
266+ describe ( 'makeAuthorizedRequest' , function ( ) {
267+ it ( 'should pass configuration to gsa' , function ( done ) {
268+ var config = { keyFile : 'key' , scopes : [ 1 , 2 ] } ;
269+
270+ gsa_Override = function ( cfg ) {
271+ assert . deepEqual ( cfg , config ) ;
272+ done ( ) ;
273+ } ;
274+
275+ util . makeAuthorizedRequest ( config ) ;
276+ } ) ;
277+
278+ it ( 'should return gsa.getCredentials function' , function ( ) {
279+ var getCredentials = util . makeAuthorizedRequest ( ) . getCredentials ;
280+ assert . equal ( typeof getCredentials , 'function' ) ;
281+ } ) ;
282+
283+ describe ( 'makeRequest' , function ( ) {
284+ it ( 'should add a user agent onto headers' , function ( done ) {
285+ gsa_Override = function ( ) {
286+ return function authorize ( reqOpts ) {
287+ assert ( reqOpts . headers [ 'User-Agent' ] . indexOf ( 'gcloud' ) > - 1 ) ;
288+ done ( ) ;
289+ } ;
290+ } ;
291+
292+ var makeRequest = util . makeAuthorizedRequest ( ) ;
293+ makeRequest ( { } ) ;
294+ } ) ;
295+
296+ it ( 'should extend an existing user agent' , function ( done ) {
297+ gsa_Override = function ( ) {
298+ return function authorize ( reqOpts ) {
299+ var index = reqOpts . headers [ 'User-Agent' ] . indexOf ( 'test; gcloud' ) ;
300+ assert . equal ( index , 0 ) ;
301+ done ( ) ;
302+ } ;
303+ } ;
304+
305+ var makeRequest = util . makeAuthorizedRequest ( ) ;
306+ makeRequest ( { headers : { 'User-Agent' : 'test' } } ) ;
307+ } ) ;
308+
309+ it ( 'should execute callback with error' , function ( done ) {
310+ var error = new Error ( 'Error.' ) ;
311+
312+ gsa_Override = function ( ) {
313+ return function authorize ( reqOpts , callback ) {
314+ callback ( error ) ;
315+ } ;
316+ } ;
317+
318+ var makeRequest = util . makeAuthorizedRequest ( ) ;
319+ makeRequest ( { } , function ( err ) {
320+ assert . equal ( err , error ) ;
321+ done ( ) ;
322+ } ) ;
323+ } ) ;
324+
325+ it ( 'should try to reconnect if token invalid' , function ( done ) {
326+ var attempts = 0 ;
327+ var expectedAttempts = 2 ;
328+ var error = { code : 401 } ;
329+
330+ gsa_Override = function ( ) {
331+ return function authorize ( reqOpts , callback ) {
332+ attempts ++ ;
333+ callback ( error ) ;
334+ } ;
335+ } ;
336+
337+ var makeRequest = util . makeAuthorizedRequest ( ) ;
338+ makeRequest ( { } , function ( err ) {
339+ assert . equal ( attempts , expectedAttempts ) ;
340+ assert . equal ( err , error ) ;
341+ done ( ) ;
342+ } ) ;
343+ } ) ;
344+
345+ it ( 'should execute the onauthorized callback' , function ( done ) {
346+ gsa_Override = function ( ) {
347+ return function authorize ( reqOpts , callback ) {
348+ callback ( ) ;
349+ } ;
350+ } ;
351+
352+ var makeRequest = util . makeAuthorizedRequest ( ) ;
353+ makeRequest ( { } , { onAuthorized : done } ) ;
354+ } ) ;
355+
356+ it ( 'should execute the onauthorized callback with error' , function ( done ) {
357+ var error = new Error ( 'Error.' ) ;
358+
359+ gsa_Override = function ( ) {
360+ return function authorize ( reqOpts , callback ) {
361+ callback ( error ) ;
362+ } ;
363+ } ;
364+
365+ var makeRequest = util . makeAuthorizedRequest ( ) ;
366+ makeRequest ( { } , {
367+ onAuthorized : function ( err ) {
368+ assert . equal ( err , error ) ;
369+ done ( ) ;
370+ }
371+ } ) ;
372+ } ) ;
373+
374+ it ( 'should make the authorized request' , function ( done ) {
375+ var authorizedReqOpts = { a : 'b' , c : 'd' } ;
376+
377+ gsa_Override = function ( ) {
378+ return function authorize ( reqOpts , callback ) {
379+ callback ( null , authorizedReqOpts ) ;
380+ } ;
381+ } ;
382+
383+ request_Override = function ( reqOpts ) {
384+ assert . deepEqual ( reqOpts , authorizedReqOpts ) ;
385+ done ( ) ;
386+ } ;
387+
388+ var makeRequest = util . makeAuthorizedRequest ( ) ;
389+ makeRequest ( { } , assert . ifError ) ;
390+ } ) ;
391+ } ) ;
392+ } ) ;
255393} ) ;
0 commit comments